diff options
author | Ashlee Young <ashlee@wildernessvoice.com> | 2015-11-22 10:02:05 -0800 |
---|---|---|
committer | Ashlee Young <ashlee@wildernessvoice.com> | 2015-11-22 10:02:05 -0800 |
commit | 77ce3be7567bd01c66d8ee88a93b485666723501 (patch) | |
tree | 283e7f39a501750bbd705fbb91645b20198900f1 /framework/src | |
parent | 00e6500d0813dcbccaaa741ef38cc1eae6d11e07 (diff) |
Removed patch path since changes have been merged upstream to a different path. Updated README with directions.
Change-Id: Ie419abd2d3d3ef7315de9f607dcd757a78190995
Signed-off-by: Ashlee Young <ashlee@wildernessvoice.com>
Diffstat (limited to 'framework/src')
548 files changed, 3716 insertions, 64959 deletions
diff --git a/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAA.java b/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAA.java deleted file mode 100644 index 567944a6..00000000 --- a/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAA.java +++ /dev/null @@ -1,563 +0,0 @@ -/* - * Copyright 2015 AT&T Foundry - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.aaa; - -import java.io.IOException; -import java.net.DatagramPacket; -import java.net.DatagramSocket; -import java.net.InetAddress; -import java.nio.ByteBuffer; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.onlab.packet.DeserializationException; -import org.onlab.packet.EAP; -import org.onlab.packet.EAPOL; -import org.onlab.packet.EthType; -import org.onlab.packet.Ethernet; -import org.onlab.packet.MacAddress; -import org.onlab.packet.RADIUS; -import org.onlab.packet.RADIUSAttribute; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.config.ConfigFactory; -import org.onosproject.net.config.NetworkConfigEvent; -import org.onosproject.net.config.NetworkConfigListener; -import org.onosproject.net.config.NetworkConfigRegistry; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.packet.DefaultOutboundPacket; -import org.onosproject.net.packet.InboundPacket; -import org.onosproject.net.packet.OutboundPacket; -import org.onosproject.net.packet.PacketContext; -import org.onosproject.net.packet.PacketProcessor; -import org.onosproject.net.packet.PacketService; -import org.onosproject.xosintegration.VoltTenantService; -import org.slf4j.Logger; - -import com.google.common.util.concurrent.ThreadFactoryBuilder; - -import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY; -import static org.onosproject.net.packet.PacketPriority.CONTROL; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * AAA application for ONOS. - */ -@Component(immediate = true) -public class AAA { - - // for verbose output - private final Logger log = getLogger(getClass()); - - // a list of our dependencies : - // to register with ONOS as an application - described next - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CoreService coreService; - - // to receive Packet-in events that we'll respond to - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected PacketService packetService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected VoltTenantService voltTenantService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected NetworkConfigRegistry netCfgService; - - // Parsed RADIUS server addresses - protected InetAddress radiusIpAddress; - protected String radiusMacAddress; - - // NAS IP address - protected InetAddress nasIpAddress; - protected String nasMacAddress; - - // RADIUS server secret - protected String radiusSecret; - - // ID of RADIUS switch - protected String radiusSwitch; - - // RADIUS port number - protected long radiusPort; - - // RADIUS server TCP port number - protected short radiusServerPort; - - // our application-specific event handler - private ReactivePacketProcessor processor = new ReactivePacketProcessor(); - - // our unique identifier - private ApplicationId appId; - - // Socket used for UDP communications with RADIUS server - private DatagramSocket radiusSocket; - - // Executor for RADIUS communication thread - private ExecutorService executor; - - // Configuration properties factory - private final ConfigFactory factory = - new ConfigFactory<ApplicationId, AAAConfig>(APP_SUBJECT_FACTORY, - AAAConfig.class, - "AAA") { - @Override - public AAAConfig createConfig() { - return new AAAConfig(); - } - }; - - // Listener for config changes - private final InternalConfigListener cfgListener = new InternalConfigListener(); - - /** - * Builds an EAPOL packet based on the given parameters. - * - * @param dstMac destination MAC address - * @param srcMac source MAC address - * @param vlan vlan identifier - * @param eapolType EAPOL type - * @param eap EAP payload - * @return Ethernet frame - */ - private static Ethernet buildEapolResponse(MacAddress dstMac, MacAddress srcMac, - short vlan, byte eapolType, EAP eap) { - - Ethernet eth = new Ethernet(); - eth.setDestinationMACAddress(dstMac.toBytes()); - eth.setSourceMACAddress(srcMac.toBytes()); - eth.setEtherType(EthType.EtherType.EAPOL.ethType().toShort()); - if (vlan != Ethernet.VLAN_UNTAGGED) { - eth.setVlanID(vlan); - } - //eapol header - EAPOL eapol = new EAPOL(); - eapol.setEapolType(eapolType); - eapol.setPacketLength(eap.getLength()); - - //eap part - eapol.setPayload(eap); - - eth.setPayload(eapol); - eth.setPad(true); - return eth; - } - - @Activate - public void activate() { - netCfgService.addListener(cfgListener); - netCfgService.registerConfigFactory(factory); - - // "org.onosproject.aaa" is the FQDN of our app - appId = coreService.registerApplication("org.onosproject.aaa"); - - cfgListener.reconfigureNetwork(netCfgService.getConfig(appId, AAAConfig.class)); - - // register our event handler - packetService.addProcessor(processor, PacketProcessor.director(2)); - requestIntercepts(); - - StateMachine.initializeMaps(); - - try { - radiusSocket = new DatagramSocket(radiusServerPort); - } catch (Exception ex) { - log.error("Can't open RADIUS socket", ex); - } - - executor = Executors.newSingleThreadExecutor( - new ThreadFactoryBuilder() - .setNameFormat("AAA-radius-%d").build()); - executor.execute(radiusListener); - } - - @Deactivate - public void deactivate() { - appId = coreService.registerApplication("org.onosproject.aaa"); - withdrawIntercepts(); - // de-register and null our handler - packetService.removeProcessor(processor); - processor = null; - StateMachine.destroyMaps(); - radiusSocket.close(); - executor.shutdownNow(); - } - - protected void sendRADIUSPacket(RADIUS radiusPacket) { - - try { - final byte[] data = radiusPacket.serialize(); - final DatagramSocket socket = radiusSocket; - - DatagramPacket packet = - new DatagramPacket(data, data.length, - radiusIpAddress, radiusServerPort); - - socket.send(packet); - } catch (IOException e) { - log.info("Cannot send packet to RADIUS server", e); - } - } - - /** - * Request packet in via PacketService. - */ - private void requestIntercepts() { - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.matchEthType(EthType.EtherType.EAPOL.ethType().toShort()); - packetService.requestPackets(selector.build(), - CONTROL, appId); - } - - /** - * Cancel request for packet in via PacketService. - */ - private void withdrawIntercepts() { - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.matchEthType(EthType.EtherType.EAPOL.ethType().toShort()); - packetService.cancelPackets(selector.build(), CONTROL, appId); - } - - /** - * Send the ethernet packet to the supplicant. - * - * @param ethernetPkt the ethernet packet - * @param connectPoint the connect point to send out - */ - private void sendPacketToSupplicant(Ethernet ethernetPkt, ConnectPoint connectPoint) { - TrafficTreatment treatment = DefaultTrafficTreatment.builder().setOutput(connectPoint.port()).build(); - OutboundPacket packet = new DefaultOutboundPacket(connectPoint.deviceId(), - treatment, ByteBuffer.wrap(ethernetPkt.serialize())); - packetService.emit(packet); - } - - // our handler defined as a private inner class - - /** - * Packet processor responsible for forwarding packets along their paths. - */ - private class ReactivePacketProcessor implements PacketProcessor { - @Override - public void process(PacketContext context) { - - // Extract the original Ethernet frame from the packet information - InboundPacket pkt = context.inPacket(); - Ethernet ethPkt = pkt.parsed(); - if (ethPkt == null) { - return; - } - try { - // identify if incoming packet comes from supplicant (EAP) or RADIUS - switch (EthType.EtherType.lookup(ethPkt.getEtherType())) { - case EAPOL: - handleSupplicantPacket(context.inPacket()); - break; - default: - log.trace("Skipping Ethernet packet type {}", - EthType.EtherType.lookup(ethPkt.getEtherType())); - } - } catch (StateMachineException e) { - log.warn("Unable to process RADIUS packet:", e); - } - } - - /** - * Creates and initializes common fields of a RADIUS packet. - * - * @param stateMachine state machine for the request - * @param eapPacket EAP packet - * @return RADIUS packet - */ - private RADIUS getRadiusPayload(StateMachine stateMachine, byte identifier, EAP eapPacket) { - RADIUS radiusPayload = - new RADIUS(RADIUS.RADIUS_CODE_ACCESS_REQUEST, - eapPacket.getIdentifier()); - - // set Request Authenticator in StateMachine - stateMachine.setRequestAuthenticator(radiusPayload.generateAuthCode()); - - radiusPayload.setIdentifier(identifier); - radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_USERNAME, - stateMachine.username()); - - radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP, - AAA.this.nasIpAddress.getAddress()); - - radiusPayload.encapsulateMessage(eapPacket); - - return radiusPayload; - } - - /** - * Handles PAE packets (supplicant). - * - * @param inPacket Ethernet packet coming from the supplicant - */ - private void handleSupplicantPacket(InboundPacket inPacket) throws StateMachineException { - Ethernet ethPkt = inPacket.parsed(); - // Where does it come from? - MacAddress srcMAC = ethPkt.getSourceMAC(); - - DeviceId deviceId = inPacket.receivedFrom().deviceId(); - PortNumber portNumber = inPacket.receivedFrom().port(); - String sessionId = deviceId.toString() + portNumber.toString(); - StateMachine stateMachine = StateMachine.lookupStateMachineBySessionId(sessionId); - if (stateMachine == null) { - stateMachine = new StateMachine(sessionId, voltTenantService); - } - - - EAPOL eapol = (EAPOL) ethPkt.getPayload(); - - switch (eapol.getEapolType()) { - case EAPOL.EAPOL_START: - stateMachine.start(); - stateMachine.setSupplicantConnectpoint(inPacket.receivedFrom()); - - //send an EAP Request/Identify to the supplicant - EAP eapPayload = new EAP(EAP.REQUEST, stateMachine.identifier(), EAP.ATTR_IDENTITY, null); - Ethernet eth = buildEapolResponse(srcMAC, MacAddress.valueOf(nasMacAddress), - ethPkt.getVlanID(), EAPOL.EAPOL_PACKET, - eapPayload); - stateMachine.setSupplicantAddress(srcMAC); - stateMachine.setVlanId(ethPkt.getVlanID()); - - sendPacketToSupplicant(eth, stateMachine.supplicantConnectpoint()); - - break; - case EAPOL.EAPOL_PACKET: - RADIUS radiusPayload; - // check if this is a Response/Identify or a Response/TLS - EAP eapPacket = (EAP) eapol.getPayload(); - - byte dataType = eapPacket.getDataType(); - switch (dataType) { - - case EAP.ATTR_IDENTITY: - // request id access to RADIUS - stateMachine.setUsername(eapPacket.getData()); - - radiusPayload = getRadiusPayload(stateMachine, stateMachine.identifier(), eapPacket); - radiusPayload.addMessageAuthenticator(AAA.this.radiusSecret); - - sendRADIUSPacket(radiusPayload); - - // change the state to "PENDING" - stateMachine.requestAccess(); - break; - case EAP.ATTR_MD5: - // verify if the EAP identifier corresponds to the - // challenge identifier from the client state - // machine. - if (eapPacket.getIdentifier() == stateMachine.challengeIdentifier()) { - //send the RADIUS challenge response - radiusPayload = - getRadiusPayload(stateMachine, - stateMachine.identifier(), - eapPacket); - - radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_STATE, - stateMachine.challengeState()); - radiusPayload.addMessageAuthenticator(AAA.this.radiusSecret); - sendRADIUSPacket(radiusPayload); - } - break; - case EAP.ATTR_TLS: - // request id access to RADIUS - radiusPayload = getRadiusPayload(stateMachine, stateMachine.identifier(), eapPacket); - - radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_STATE, - stateMachine.challengeState()); - stateMachine.setRequestAuthenticator(radiusPayload.generateAuthCode()); - - radiusPayload.addMessageAuthenticator(AAA.this.radiusSecret); - sendRADIUSPacket(radiusPayload); - - if (stateMachine.state() != StateMachine.STATE_PENDING) { - stateMachine.requestAccess(); - } - - break; - default: - return; - } - break; - default: - log.trace("Skipping EAPOL message {}", eapol.getEapolType()); - } - - } - } - - class RadiusListener implements Runnable { - - /** - * Handles RADIUS packets. - * - * @param radiusPacket RADIUS packet coming from the RADIUS server. - * @throws StateMachineException if an illegal state transition is triggered - */ - protected void handleRadiusPacket(RADIUS radiusPacket) throws StateMachineException { - StateMachine stateMachine = StateMachine.lookupStateMachineById(radiusPacket.getIdentifier()); - if (stateMachine == null) { - log.error("Invalid session identifier, exiting..."); - return; - } - - EAP eapPayload; - Ethernet eth; - switch (radiusPacket.getCode()) { - case RADIUS.RADIUS_CODE_ACCESS_CHALLENGE: - byte[] challengeState = - radiusPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_STATE).getValue(); - eapPayload = radiusPacket.decapsulateMessage(); - stateMachine.setChallengeInfo(eapPayload.getIdentifier(), challengeState); - eth = buildEapolResponse(stateMachine.supplicantAddress(), - MacAddress.valueOf(nasMacAddress), - stateMachine.vlanId(), - EAPOL.EAPOL_PACKET, - eapPayload); - sendPacketToSupplicant(eth, stateMachine.supplicantConnectpoint()); - break; - case RADIUS.RADIUS_CODE_ACCESS_ACCEPT: - //send an EAPOL - Success to the supplicant. - byte[] eapMessage = - radiusPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_EAP_MESSAGE).getValue(); - eapPayload = new EAP(); - eapPayload = (EAP) eapPayload.deserialize(eapMessage, 0, eapMessage.length); - eth = buildEapolResponse(stateMachine.supplicantAddress(), - MacAddress.valueOf(nasMacAddress), - stateMachine.vlanId(), - EAPOL.EAPOL_PACKET, - eapPayload); - sendPacketToSupplicant(eth, stateMachine.supplicantConnectpoint()); - - stateMachine.authorizeAccess(); - break; - case RADIUS.RADIUS_CODE_ACCESS_REJECT: - stateMachine.denyAccess(); - break; - default: - log.warn("Unknown RADIUS message received with code: {}", radiusPacket.getCode()); - } - } - - - @Override - public void run() { - boolean done = false; - int packetNumber = 1; - - log.info("UDP listener thread starting up"); - RADIUS inboundRadiusPacket; - while (!done) { - try { - byte[] packetBuffer = new byte[RADIUS.RADIUS_MAX_LENGTH]; - DatagramPacket inboundBasePacket = - new DatagramPacket(packetBuffer, packetBuffer.length); - DatagramSocket socket = radiusSocket; - socket.receive(inboundBasePacket); - log.info("Packet #{} received", packetNumber++); - try { - inboundRadiusPacket = - RADIUS.deserializer() - .deserialize(inboundBasePacket.getData(), - 0, - inboundBasePacket.getLength()); - handleRadiusPacket(inboundRadiusPacket); - } catch (DeserializationException dex) { - log.error("Cannot deserialize packet", dex); - } catch (StateMachineException sme) { - log.error("Illegal state machine operation", sme); - } - - } catch (IOException e) { - log.info("Socket was closed, exiting listener thread"); - done = true; - } - } - } - } - - RadiusListener radiusListener = new RadiusListener(); - - private class InternalConfigListener implements NetworkConfigListener { - - /** - * Reconfigures the DHCP Server according to the configuration parameters passed. - * - * @param cfg configuration object - */ - private void reconfigureNetwork(AAAConfig cfg) { - AAAConfig newCfg; - if (cfg == null) { - newCfg = new AAAConfig(); - } else { - newCfg = cfg; - } - if (newCfg.nasIp() != null) { - nasIpAddress = newCfg.nasIp(); - } - if (newCfg.radiusIp() != null) { - radiusIpAddress = newCfg.radiusIp(); - } - if (newCfg.radiusMac() != null) { - radiusMacAddress = newCfg.radiusMac(); - } - if (newCfg.nasMac() != null) { - nasMacAddress = newCfg.nasMac(); - } - if (newCfg.radiusSecret() != null) { - radiusSecret = newCfg.radiusSecret(); - } - if (newCfg.radiusSwitch() != null) { - radiusSwitch = newCfg.radiusSwitch(); - } - if (newCfg.radiusPort() != -1) { - radiusPort = newCfg.radiusPort(); - } - if (newCfg.radiusServerUDPPort() != -1) { - radiusServerPort = newCfg.radiusServerUDPPort(); - } - } - - @Override - public void event(NetworkConfigEvent event) { - - if ((event.type() == NetworkConfigEvent.Type.CONFIG_ADDED || - event.type() == NetworkConfigEvent.Type.CONFIG_UPDATED) && - event.configClass().equals(AAAConfig.class)) { - - AAAConfig cfg = netCfgService.getConfig(appId, AAAConfig.class); - reconfigureNetwork(cfg); - log.info("Reconfigured"); - } - } - } - - -} diff --git a/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAAConfig.java b/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAAConfig.java deleted file mode 100644 index 73be7691..00000000 --- a/framework/src/onos/apps/aaa/src/main/java/org/onosproject/aaa/AAAConfig.java +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.aaa; - -import java.net.InetAddress; -import java.net.UnknownHostException; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.config.Config; -import org.onosproject.net.config.basics.BasicElementConfig; - -/** - * Network config for the AAA app. - */ -public class AAAConfig extends Config<ApplicationId> { - - private static final String RADIUS_IP = "radiusIp"; - private static final String RADIUS_SERVER_PORT = "1812"; - private static final String RADIUS_MAC = "radiusMac"; - private static final String NAS_IP = "nasIp"; - private static final String NAS_MAC = "nasMac"; - private static final String RADIUS_SECRET = "radiusSecret"; - private static final String RADIUS_SWITCH = "radiusSwitch"; - private static final String RADIUS_PORT = "radiusPort"; - - // RADIUS server IP address - protected static final String DEFAULT_RADIUS_IP = "10.128.10.4"; - - // RADIUS MAC address - protected static final String DEFAULT_RADIUS_MAC = "00:00:00:00:01:10"; - - // NAS IP address - protected static final String DEFAULT_NAS_IP = "10.128.9.244"; - - // NAS MAC address - protected static final String DEFAULT_NAS_MAC = "00:00:00:00:10:01"; - - // RADIUS server shared secret - protected static final String DEFAULT_RADIUS_SECRET = "ONOSecret"; - - // Radius Switch Id - protected static final String DEFAULT_RADIUS_SWITCH = "of:90e2ba82f97791e9"; - - // Radius Port Number - protected static final String DEFAULT_RADIUS_PORT = "129"; - - // Radius Server UDP Port Number - protected static final String DEFAULT_RADIUS_SERVER_PORT = "1812"; - - /** - * Gets the value of a string property, protecting for an empty - * JSON object. - * - * @param name name of the property - * @param defaultValue default value if none has been specified - * @return String value if one os found, default value otherwise - */ - private String getStringProperty(String name, String defaultValue) { - if (object == null) { - return defaultValue; - } - return get(name, defaultValue); - } - - /** - * Returns the NAS ip. - * - * @return ip address or null if not set - */ - public InetAddress nasIp() { - try { - return InetAddress.getByName(getStringProperty(NAS_IP, DEFAULT_NAS_IP)); - } catch (UnknownHostException e) { - return null; - } - } - - /** - * Sets the NAS ip. - * - * @param ip new ip address; null to clear - * @return self - */ - public BasicElementConfig nasIp(String ip) { - return (BasicElementConfig) setOrClear(NAS_IP, ip); - } - - /** - * Returns the RADIUS server ip. - * - * @return ip address or null if not set - */ - public InetAddress radiusIp() { - try { - return InetAddress.getByName(getStringProperty(RADIUS_IP, DEFAULT_RADIUS_IP)); - } catch (UnknownHostException e) { - return null; - } - } - - /** - * Sets the RADIUS server ip. - * - * @param ip new ip address; null to clear - * @return self - */ - public BasicElementConfig radiusIp(String ip) { - return (BasicElementConfig) setOrClear(RADIUS_IP, ip); - } - - /** - * Returns the RADIUS MAC address. - * - * @return mac address or null if not set - */ - public String radiusMac() { - return getStringProperty(RADIUS_MAC, DEFAULT_RADIUS_MAC); - } - - /** - * Sets the RADIUS MAC address. - * - * @param mac new MAC address; null to clear - * @return self - */ - public BasicElementConfig radiusMac(String mac) { - return (BasicElementConfig) setOrClear(RADIUS_MAC, mac); - } - - /** - * Returns the RADIUS MAC address. - * - * @return mac address or null if not set - */ - public String nasMac() { - return getStringProperty(NAS_MAC, DEFAULT_NAS_MAC); - } - - /** - * Sets the RADIUS MAC address. - * - * @param mac new MAC address; null to clear - * @return self - */ - public BasicElementConfig nasMac(String mac) { - return (BasicElementConfig) setOrClear(NAS_MAC, mac); - } - - /** - * Returns the RADIUS secret. - * - * @return radius secret or null if not set - */ - public String radiusSecret() { - return getStringProperty(RADIUS_SECRET, DEFAULT_RADIUS_SECRET); - } - - /** - * Sets the RADIUS secret. - * - * @param secret new MAC address; null to clear - * @return self - */ - public BasicElementConfig radiusSecret(String secret) { - return (BasicElementConfig) setOrClear(RADIUS_SECRET, secret); - } - - /** - * Returns the ID of the RADIUS switch. - * - * @return radius switch ID or null if not set - */ - public String radiusSwitch() { - return getStringProperty(RADIUS_SWITCH, DEFAULT_RADIUS_SWITCH); - } - - /** - * Sets the ID of the RADIUS switch. - * - * @param switchId new RADIUS switch ID; null to clear - * @return self - */ - public BasicElementConfig radiusSwitch(String switchId) { - return (BasicElementConfig) setOrClear(RADIUS_SWITCH, switchId); - } - - /** - * Returns the RADIUS port. - * - * @return radius port or null if not set - */ - public long radiusPort() { - return Integer.parseInt(getStringProperty(RADIUS_PORT, DEFAULT_RADIUS_PORT)); - } - - /** - * Sets the RADIUS port. - * - * @param port new RADIUS port; null to clear - * @return self - */ - public BasicElementConfig radiusPort(long port) { - return (BasicElementConfig) setOrClear(RADIUS_PORT, port); - } - - /** - * Returns the RADIUS server UDP port. - * - * @return radius server UDP port. - */ - public short radiusServerUDPPort() { - return Short.parseShort(getStringProperty(RADIUS_SERVER_PORT, - DEFAULT_RADIUS_SERVER_PORT)); - } - - /** - * Sets the RADIUS port. - * - * @param port new RADIUS UDP port; -1 to clear - * @return self - */ - public BasicElementConfig radiusServerUDPPort(short port) { - return (BasicElementConfig) setOrClear(RADIUS_SERVER_PORT, (long) port); - } - -} diff --git a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAAIntegrationTest.java b/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAAIntegrationTest.java deleted file mode 100644 index fb513ced..00000000 --- a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAAIntegrationTest.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.aaa; - -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.onlab.packet.EAP; -import org.onlab.packet.EAPOL; -import org.onlab.packet.Ethernet; -import org.onosproject.core.CoreServiceAdapter; -import org.onosproject.net.config.Config; -import org.onosproject.net.config.NetworkConfigRegistryAdapter; - -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Set of tests of the ONOS application component. These use an existing RADIUS - * server and sends live packets over the network to it. - */ -@Ignore ("This should not be run as part of the standard build") -public class AAAIntegrationTest extends AAATestBase { - - private AAA aaa; - - /** - * Mocks the network config registry. - */ - @SuppressWarnings("unchecked") - static final class TestNetworkConfigRegistry - extends NetworkConfigRegistryAdapter { - @Override - public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) { - return (C) new AAAConfig(); - } - } - - /** - * Sets up the services required by the AAA application. - */ - @Before - public void setUp() { - aaa = new AAA(); - aaa.netCfgService = new TestNetworkConfigRegistry(); - aaa.coreService = new CoreServiceAdapter(); - aaa.packetService = new MockPacketService(); - aaa.activate(); - } - - /** - * Fetches the sent packet at the given index. The requested packet - * must be the last packet on the list. - * - * @param index index into sent packets array - * @return packet - */ - private Ethernet fetchPacket(int index) { - for (int iteration = 0; iteration < 20; iteration++) { - if (savedPackets.size() > index) { - return (Ethernet) savedPackets.get(index); - } else { - try { - Thread.sleep(250); - } catch (Exception ex) { - return null; - } - } - } - return null; - } - - /** - * Tests the authentication path through the AAA application by sending - * packets to the RADIUS server and checking the state machine - * transitions. - * - * @throws Exception when an unhandled error occurs - */ - @Test - public void testAuthentication() throws Exception { - - // (1) Supplicant start up - - Ethernet startPacket = constructSupplicantStartPacket(); - sendPacket(startPacket); - - Ethernet responsePacket = fetchPacket(0); - assertThat(responsePacket, notNullValue()); - checkRadiusPacket(aaa, responsePacket, EAP.REQUEST); - - // (2) Supplicant identify - - Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null); - sendPacket(identifyPacket); - - // State machine should have been created by now - - StateMachine stateMachine = - StateMachine.lookupStateMachineBySessionId(SESSION_ID); - assertThat(stateMachine, notNullValue()); - assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING)); - - // (3) RADIUS MD5 challenge - - Ethernet radiusChallengeMD5Packet = fetchPacket(1); - assertThat(radiusChallengeMD5Packet, notNullValue()); - checkRadiusPacket(aaa, radiusChallengeMD5Packet, EAP.REQUEST); - - - // (4) Supplicant MD5 response - - Ethernet md5RadiusPacket = - constructSupplicantIdentifyPacket(stateMachine, - EAP.ATTR_MD5, - stateMachine.challengeIdentifier(), - radiusChallengeMD5Packet); - sendPacket(md5RadiusPacket); - - - // (5) RADIUS Success - - Ethernet successRadiusPacket = fetchPacket(2); - assertThat(successRadiusPacket, notNullValue()); - EAPOL successEAPOL = (EAPOL) successRadiusPacket.getPayload(); - EAP successEAP = (EAP) successEAPOL.getPayload(); - assertThat(successEAP.getCode(), is(EAP.SUCCESS)); - - // State machine should be in authorized state - - assertThat(stateMachine, notNullValue()); - assertThat(stateMachine.state(), is(StateMachine.STATE_AUTHORIZED)); - - } - -} - diff --git a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATest.java b/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATest.java deleted file mode 100644 index 860a7dbd..00000000 --- a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATest.java +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.aaa; - -import java.net.InetAddress; -import java.net.UnknownHostException; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.BasePacket; -import org.onlab.packet.DeserializationException; -import org.onlab.packet.EAP; -import org.onlab.packet.Ethernet; -import org.onlab.packet.IpAddress; -import org.onlab.packet.RADIUS; -import org.onlab.packet.RADIUSAttribute; -import org.onosproject.core.CoreServiceAdapter; -import org.onosproject.net.config.Config; -import org.onosproject.net.config.NetworkConfigRegistryAdapter; - -import com.google.common.base.Charsets; - -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Set of tests of the ONOS application component. - */ -public class AAATest extends AAATestBase { - - static final String BAD_IP_ADDRESS = "198.51.100.0"; - - private AAA aaa; - - class AAAWithoutRadiusServer extends AAA { - protected void sendRADIUSPacket(RADIUS radiusPacket) { - savePacket(radiusPacket); - } - } - - /** - * Mocks the AAAConfig class to force usage of an unroutable address for the - * RADIUS server. - */ - static class MockAAAConfig extends AAAConfig { - @Override - public InetAddress radiusIp() { - try { - return InetAddress.getByName(BAD_IP_ADDRESS); - } catch (UnknownHostException ex) { - // can't happen - throw new IllegalStateException(ex); - } - } - } - - /** - * Mocks the network config registry. - */ - @SuppressWarnings("unchecked") - private static final class TestNetworkConfigRegistry - extends NetworkConfigRegistryAdapter { - @Override - public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) { - AAAConfig aaaConfig = new MockAAAConfig(); - return (C) aaaConfig; - } - } - - /** - * Constructs an Ethernet packet containing a RADIUS challenge - * packet. - * - * @param challengeCode code to use in challenge packet - * @param challengeType type to use in challenge packet - * @return Ethernet packet - */ - private RADIUS constructRADIUSCodeAccessChallengePacket(byte challengeCode, byte challengeType) { - - String challenge = "12345678901234567"; - - EAP eap = new EAP(challengeType, (byte) 1, challengeType, - challenge.getBytes(Charsets.US_ASCII)); - eap.setIdentifier((byte) 1); - - RADIUS radius = new RADIUS(); - radius.setCode(challengeCode); - - radius.setAttribute(RADIUSAttribute.RADIUS_ATTR_STATE, - challenge.getBytes(Charsets.US_ASCII)); - - radius.setPayload(eap); - radius.setAttribute(RADIUSAttribute.RADIUS_ATTR_EAP_MESSAGE, - eap.serialize()); - - return radius; - } - - /** - * Sets up the services required by the AAA application. - */ - @Before - public void setUp() { - aaa = new AAAWithoutRadiusServer(); - aaa.netCfgService = new TestNetworkConfigRegistry(); - aaa.coreService = new CoreServiceAdapter(); - aaa.packetService = new MockPacketService(); - aaa.activate(); - } - - /** - * Tears down the AAA application. - */ - @After - public void tearDown() { - aaa.deactivate(); - } - - /** - * Extracts the RADIUS packet from a packet sent by the supplicant. - * - * @param radius RADIUS packet sent by the supplicant - * @throws DeserializationException if deserialization of the packet contents - * fails. - */ - private void checkRADIUSPacketFromSupplicant(RADIUS radius) - throws DeserializationException { - assertThat(radius, notNullValue()); - - EAP eap = radius.decapsulateMessage(); - assertThat(eap, notNullValue()); - } - - /** - * Fetches the sent packet at the given index. The requested packet - * must be the last packet on the list. - * - * @param index index into sent packets array - * @return packet - */ - private BasePacket fetchPacket(int index) { - BasePacket packet = savedPackets.get(index); - assertThat(packet, notNullValue()); - return packet; - } - - /** - * Tests the authentication path through the AAA application. - * - * @throws DeserializationException if packed deserialization fails. - */ - @Test - public void testAuthentication() throws Exception { - - // (1) Supplicant start up - - Ethernet startPacket = constructSupplicantStartPacket(); - sendPacket(startPacket); - - Ethernet responsePacket = (Ethernet) fetchPacket(0); - checkRadiusPacket(aaa, responsePacket, EAP.ATTR_IDENTITY); - - // (2) Supplicant identify - - Ethernet identifyPacket = constructSupplicantIdentifyPacket(null, EAP.ATTR_IDENTITY, (byte) 1, null); - sendPacket(identifyPacket); - - RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1); - - checkRADIUSPacketFromSupplicant(radiusIdentifyPacket); - - assertThat(radiusIdentifyPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST)); - assertThat(new String(radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_USERNAME).getValue()), - is("testuser")); - - IpAddress nasIp = - IpAddress.valueOf(IpAddress.Version.INET, - radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP) - .getValue()); - assertThat(nasIp.toString(), is(aaa.nasIpAddress.getHostAddress())); - - // State machine should have been created by now - - StateMachine stateMachine = - StateMachine.lookupStateMachineBySessionId(SESSION_ID); - assertThat(stateMachine, notNullValue()); - assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING)); - - // (3) RADIUS MD5 challenge - - RADIUS radiusCodeAccessChallengePacket = - constructRADIUSCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_CHALLENGE, EAP.ATTR_MD5); - aaa.radiusListener.handleRadiusPacket(radiusCodeAccessChallengePacket); - - Ethernet radiusChallengeMD5Packet = (Ethernet) fetchPacket(2); - checkRadiusPacket(aaa, radiusChallengeMD5Packet, EAP.ATTR_MD5); - - // (4) Supplicant MD5 response - - Ethernet md5RadiusPacket = - constructSupplicantIdentifyPacket(stateMachine, - EAP.ATTR_MD5, - stateMachine.challengeIdentifier(), - radiusChallengeMD5Packet); - sendPacket(md5RadiusPacket); - - RADIUS responseMd5RadiusPacket = (RADIUS) fetchPacket(3); - - checkRADIUSPacketFromSupplicant(responseMd5RadiusPacket); - assertThat(responseMd5RadiusPacket.getIdentifier(), is((byte) 0)); - assertThat(responseMd5RadiusPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST)); - - // State machine should be in pending state - - assertThat(stateMachine, notNullValue()); - assertThat(stateMachine.state(), is(StateMachine.STATE_PENDING)); - - // (5) RADIUS Success - - RADIUS successPacket = - constructRADIUSCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_ACCEPT, EAP.SUCCESS); - aaa.radiusListener.handleRadiusPacket((successPacket)); - Ethernet supplicantSuccessPacket = (Ethernet) fetchPacket(4); - - checkRadiusPacket(aaa, supplicantSuccessPacket, EAP.SUCCESS); - - // State machine should be in authorized state - - assertThat(stateMachine, notNullValue()); - assertThat(stateMachine.state(), is(StateMachine.STATE_AUTHORIZED)); - - } - - /** - * Tests the default configuration. - */ - @Test - public void testConfig() { - assertThat(aaa.nasIpAddress.getHostAddress(), is(AAAConfig.DEFAULT_NAS_IP)); - assertThat(aaa.nasMacAddress, is(AAAConfig.DEFAULT_NAS_MAC)); - assertThat(aaa.radiusIpAddress.getHostAddress(), is(BAD_IP_ADDRESS)); - assertThat(aaa.radiusMacAddress, is(AAAConfig.DEFAULT_RADIUS_MAC)); - } -} diff --git a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATestBase.java b/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATestBase.java deleted file mode 100644 index dffcba2f..00000000 --- a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/AAATestBase.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.aaa; - -import java.nio.ByteBuffer; -import java.security.MessageDigest; -import java.util.LinkedList; -import java.util.List; - -import org.onlab.packet.BasePacket; -import org.onlab.packet.EAP; -import org.onlab.packet.EAPOL; -import org.onlab.packet.EthType; -import org.onlab.packet.Ethernet; -import org.onlab.packet.MacAddress; -import org.onosproject.net.packet.DefaultInboundPacket; -import org.onosproject.net.packet.DefaultPacketContext; -import org.onosproject.net.packet.InboundPacket; -import org.onosproject.net.packet.OutboundPacket; -import org.onosproject.net.packet.PacketContext; -import org.onosproject.net.packet.PacketProcessor; -import org.onosproject.net.packet.PacketServiceAdapter; - -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; -import static org.onosproject.net.NetTestTools.connectPoint; - -/** - * Common methods for AAA app testing. - */ -public class AAATestBase { - - MacAddress clientMac = MacAddress.valueOf("1a:1a:1a:1a:1a:1a"); - MacAddress serverMac = MacAddress.valueOf("2a:2a:2a:2a:2a:2a"); - - // Our session id will be the device ID ("of:1") with the port ("1") concatenated - static final String SESSION_ID = "of:11"; - - List<BasePacket> savedPackets = new LinkedList<>(); - PacketProcessor packetProcessor; - - /** - * Saves the given packet onto the saved packets list. - * - * @param packet packet to save - */ - void savePacket(BasePacket packet) { - savedPackets.add(packet); - } - - /** - * Keeps a reference to the PacketProcessor and saves the OutboundPackets. - */ - class MockPacketService extends PacketServiceAdapter { - - @Override - public void addProcessor(PacketProcessor processor, int priority) { - packetProcessor = processor; - } - - @Override - public void emit(OutboundPacket packet) { - try { - Ethernet eth = Ethernet.deserializer().deserialize(packet.data().array(), - 0, packet.data().array().length); - savePacket(eth); - } catch (Exception e) { - fail(e.getMessage()); - } - } - } - - /** - * Mocks the DefaultPacketContext. - */ - final class TestPacketContext extends DefaultPacketContext { - - private TestPacketContext(long time, InboundPacket inPkt, - OutboundPacket outPkt, boolean block) { - super(time, inPkt, outPkt, block); - } - - @Override - public void send() { - // We don't send anything out. - } - } - - /** - * Sends an Ethernet packet to the process method of the Packet Processor. - * - * @param reply Ethernet packet - */ - void sendPacket(Ethernet reply) { - final ByteBuffer byteBuffer = ByteBuffer.wrap(reply.serialize()); - InboundPacket inPacket = new DefaultInboundPacket(connectPoint("1", 1), - reply, - byteBuffer); - - PacketContext context = new TestPacketContext(127L, inPacket, null, false); - packetProcessor.process(context); - } - - /** - * Constructs an Ethernet packet containing identification payload. - * - * @return Ethernet packet - */ - Ethernet constructSupplicantIdentifyPacket(StateMachine stateMachine, - byte type, - byte id, - Ethernet radiusChallenge) - throws Exception { - Ethernet eth = new Ethernet(); - eth.setDestinationMACAddress(clientMac.toBytes()); - eth.setSourceMACAddress(serverMac.toBytes()); - eth.setEtherType(EthType.EtherType.EAPOL.ethType().toShort()); - eth.setVlanID((short) 2); - - String username = "testuser"; - byte[] data = username.getBytes(); - - - if (type == EAP.ATTR_MD5) { - String password = "testpassword"; - EAPOL eapol = (EAPOL) radiusChallenge.getPayload(); - EAP eap = (EAP) eapol.getPayload(); - - byte[] identifier = new byte[password.length() + eap.getData().length]; - - identifier[0] = stateMachine.challengeIdentifier(); - System.arraycopy(password.getBytes(), 0, identifier, 1, password.length()); - System.arraycopy(eap.getData(), 1, identifier, 1 + password.length(), 16); - - MessageDigest md = MessageDigest.getInstance("MD5"); - byte[] hash = md.digest(identifier); - data = new byte[17]; - data[0] = (byte) 16; - System.arraycopy(hash, 0, data, 1, 16); - } - EAP eap = new EAP(EAP.RESPONSE, (byte) 1, type, - data); - eap.setIdentifier(id); - - // eapol header - EAPOL eapol = new EAPOL(); - eapol.setEapolType(EAPOL.EAPOL_PACKET); - eapol.setPacketLength(eap.getLength()); - - // eap part - eapol.setPayload(eap); - - eth.setPayload(eapol); - eth.setPad(true); - return eth; - } - - /** - * Constructs an Ethernet packet containing a EAPOL_START Payload. - * - * @return Ethernet packet - */ - Ethernet constructSupplicantStartPacket() { - Ethernet eth = new Ethernet(); - eth.setDestinationMACAddress(clientMac.toBytes()); - eth.setSourceMACAddress(serverMac.toBytes()); - eth.setEtherType(EthType.EtherType.EAPOL.ethType().toShort()); - eth.setVlanID((short) 2); - - EAP eap = new EAP(EAPOL.EAPOL_START, (byte) 2, EAPOL.EAPOL_START, null); - - // eapol header - EAPOL eapol = new EAPOL(); - eapol.setEapolType(EAPOL.EAPOL_START); - eapol.setPacketLength(eap.getLength()); - - // eap part - eapol.setPayload(eap); - - eth.setPayload(eapol); - eth.setPad(true); - return eth; - } - - /** - * Checks the contents of a RADIUS packet being sent to the RADIUS server. - * - * @param radiusPacket packet to check - * @param code expected code - */ - void checkRadiusPacket(AAA aaa, Ethernet radiusPacket, byte code) { - - assertThat(radiusPacket.getSourceMAC(), - is(MacAddress.valueOf(aaa.nasMacAddress))); - assertThat(radiusPacket.getDestinationMAC(), is(serverMac)); - - assertThat(radiusPacket.getPayload(), instanceOf(EAPOL.class)); - EAPOL eapol = (EAPOL) radiusPacket.getPayload(); - assertThat(eapol, notNullValue()); - - assertThat(eapol.getEapolType(), is(EAPOL.EAPOL_PACKET)); - assertThat(eapol.getPayload(), instanceOf(EAP.class)); - EAP eap = (EAP) eapol.getPayload(); - assertThat(eap, notNullValue()); - - assertThat(eap.getCode(), is(code)); - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtn.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtn.java index e15bc763..c3bf77c5 100644 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtn.java +++ b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtn.java @@ -15,7 +15,6 @@ */ package org.onosproject.cordvtn; -import com.google.common.collect.Collections2; import com.google.common.collect.Sets; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; @@ -32,6 +31,7 @@ import org.onosproject.net.DefaultAnnotations; import org.onosproject.net.Device; import org.onosproject.net.DeviceId; import org.onosproject.net.Host; +import org.onosproject.net.Port; import org.onosproject.net.behaviour.BridgeConfig; import org.onosproject.net.behaviour.BridgeName; import org.onosproject.net.behaviour.ControllerInfo; @@ -39,6 +39,7 @@ import org.onosproject.net.behaviour.DefaultTunnelDescription; import org.onosproject.net.behaviour.TunnelConfig; import org.onosproject.net.behaviour.TunnelDescription; import org.onosproject.net.behaviour.TunnelName; +import org.onosproject.net.device.DeviceAdminService; import org.onosproject.net.device.DeviceEvent; import org.onosproject.net.device.DeviceListener; import org.onosproject.net.device.DeviceService; @@ -54,7 +55,6 @@ import org.onosproject.store.serializers.KryoNamespaces; import org.onosproject.store.service.ConsistentMap; import org.onosproject.store.service.Serializer; import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.Versioned; import org.slf4j.Logger; import java.util.ArrayList; @@ -84,7 +84,8 @@ public class CordVtn implements CordVtnService { private static final int NUM_THREADS = 1; private static final KryoNamespace.Builder NODE_SERIALIZER = KryoNamespace.newBuilder() .register(KryoNamespaces.API) - .register(DefaultOvsdbNode.class); + .register(CordVtnNode.class) + .register(NodeState.class); private static final String DEFAULT_BRIDGE_NAME = "br-int"; private static final String DEFAULT_TUNNEL = "vxlan"; private static final Map<String, String> DEFAULT_TUNNEL_OPTIONS = new HashMap<String, String>() { @@ -112,6 +113,9 @@ public class CordVtn implements CordVtnService { protected DriverService driverService; @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) + protected DeviceAdminService adminService; + + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected OvsdbController controller; @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) @@ -127,12 +131,55 @@ public class CordVtn implements CordVtnService { private final BridgeHandler bridgeHandler = new BridgeHandler(); private final VmHandler vmHandler = new VmHandler(); - private ConsistentMap<DeviceId, OvsdbNode> nodeStore; + private ConsistentMap<CordVtnNode, NodeState> nodeStore; + + private enum NodeState { + + INIT { + @Override + public void process(CordVtn cordVtn, CordVtnNode node) { + cordVtn.connect(node); + } + }, + OVSDB_CONNECTED { + @Override + public void process(CordVtn cordVtn, CordVtnNode node) { + if (!cordVtn.getOvsdbConnectionState(node)) { + cordVtn.connect(node); + } else { + cordVtn.createIntegrationBridge(node); + } + } + }, + BRIDGE_CREATED { + @Override + public void process(CordVtn cordVtn, CordVtnNode node) { + if (!cordVtn.getOvsdbConnectionState(node)) { + cordVtn.connect(node); + } else { + cordVtn.createTunnelInterface(node); + } + } + }, + COMPLETE { + @Override + public void process(CordVtn cordVtn, CordVtnNode node) { + cordVtn.postInit(node); + } + }, + INCOMPLETE { + @Override + public void process(CordVtn cordVtn, CordVtnNode node) { + } + }; + + public abstract void process(CordVtn cordVtn, CordVtnNode node); + } @Activate protected void activate() { ApplicationId appId = coreService.registerApplication("org.onosproject.cordvtn"); - nodeStore = storageService.<DeviceId, OvsdbNode>consistentMapBuilder() + nodeStore = storageService.<CordVtnNode, NodeState>consistentMapBuilder() .withSerializer(Serializer.using(NODE_SERIALIZER.build())) .withName("cordvtn-nodestore") .withApplicationId(appId) @@ -156,145 +203,272 @@ public class CordVtn implements CordVtnService { } @Override - public void addNode(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + public void addNode(CordVtnNode node) { + checkNotNull(node); + + nodeStore.putIfAbsent(node, checkNodeState(node)); + initNode(node); + } - nodeStore.putIfAbsent(ovsdb.deviceId(), ovsdb); + @Override + public void deleteNode(CordVtnNode node) { + checkNotNull(node); - if (isNodeConnected(ovsdb)) { - init(ovsdb); - } else { - connect(ovsdb); + if (getOvsdbConnectionState(node)) { + disconnect(node); } + + nodeStore.remove(node); } @Override - public void deleteNode(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + public int getNodeCount() { + return nodeStore.size(); + } - if (deviceService.getDevice(ovsdb.deviceId()) != null) { - if (deviceService.isAvailable(ovsdb.deviceId())) { - log.warn("Cannot delete connected node {}", ovsdb.host()); - return; - } - } - nodeStore.remove(ovsdb.deviceId()); + @Override + public List<CordVtnNode> getNodes() { + List<CordVtnNode> nodes = new ArrayList<>(); + nodes.addAll(nodeStore.keySet()); + return nodes; } @Override - public void connect(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + public void initNode(CordVtnNode node) { + checkNotNull(node); - if (!nodeStore.containsKey(ovsdb.deviceId())) { - log.warn("Node {} does not exist", ovsdb.host()); + if (!nodeStore.containsKey(node)) { + log.warn("Node {} does not exist, add node first", node.hostname()); return; } - if (!isNodeConnected(ovsdb)) { - controller.connect(ovsdb.ip(), ovsdb.port()); + NodeState state = getNodeState(node); + if (state == null) { + return; + } else if (state.equals(NodeState.INCOMPLETE)) { + state = checkNodeState(node); } + + state.process(this, node); } @Override - public void disconnect(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + public boolean getNodeInitState(CordVtnNode node) { + checkNotNull(node); - if (!nodeStore.containsKey(ovsdb.deviceId())) { - log.warn("Node {} does not exist", ovsdb.host()); - return; + NodeState state = getNodeState(node); + return state != null && state.equals(NodeState.COMPLETE); + } + + /** + * Returns state of a given cordvtn node. + * + * @param node cordvtn node + * @return node state, or null if no such node exists + */ + private NodeState getNodeState(CordVtnNode node) { + checkNotNull(node); + + try { + return nodeStore.get(node).value(); + } catch (NullPointerException e) { + log.error("Failed to get state of {}", node.hostname()); + return null; } + } - if (isNodeConnected(ovsdb)) { - OvsdbClientService ovsdbClient = getOvsdbClient(ovsdb); - ovsdbClient.disconnect(); + /** + * Sets a new state for a given cordvtn node. + * + * @param node cordvtn node + * @param newState new node state + */ + private void setNodeState(CordVtnNode node, NodeState newState) { + checkNotNull(node); + + log.info("Changed {} state: {}", node.hostname(), newState.toString()); + + nodeStore.put(node, newState); + newState.process(this, node); + } + + /** + * Checks current state of a given cordvtn node and returns it. + * + * @param node cordvtn node + * @return node state + */ + private NodeState checkNodeState(CordVtnNode node) { + checkNotNull(node); + + if (checkIntegrationBridge(node) && checkTunnelInterface(node)) { + return NodeState.COMPLETE; + } else if (checkIntegrationBridge(node)) { + return NodeState.BRIDGE_CREATED; + } else if (getOvsdbConnectionState(node)) { + return NodeState.OVSDB_CONNECTED; + } else { + return NodeState.INIT; } } - private void init(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + /** + * Performs tasks after node initialization. + * + * @param node cordvtn node + */ + private void postInit(CordVtnNode node) { + disconnect(node); + } + + /** + * Returns connection state of OVSDB server for a given node. + * + * @param node cordvtn node + * @return true if it is connected, false otherwise + */ + private boolean getOvsdbConnectionState(CordVtnNode node) { + checkNotNull(node); + + OvsdbClientService ovsdbClient = getOvsdbClient(node); + return deviceService.isAvailable(node.ovsdbId()) && + ovsdbClient != null && ovsdbClient.isConnected(); + } + + /** + * Connects to OVSDB server for a given node. + * + * @param node cordvtn node + */ + private void connect(CordVtnNode node) { + checkNotNull(node); - if (!nodeStore.containsKey(ovsdb.deviceId())) { - log.warn("Node {} does not exist", ovsdb.host()); + if (!nodeStore.containsKey(node)) { + log.warn("Node {} does not exist", node.hostname()); return; } - if (!isNodeConnected(ovsdb)) { - log.warn("Node {} is not connected", ovsdb.host()); + if (!getOvsdbConnectionState(node)) { + // FIXME remove existing OVSDB device to work around OVSDB device re-connect issue + if (deviceService.getDevice(node.ovsdbId()) != null) { + adminService.removeDevice(node.ovsdbId()); + } + controller.connect(node.ovsdbIp(), node.ovsdbPort()); + } + } + + /** + * Disconnects OVSDB server for a given node. + * + * @param node cordvtn node + */ + private void disconnect(CordVtnNode node) { + checkNotNull(node); + + if (!nodeStore.containsKey(node)) { + log.warn("Node {} does not exist", node.hostname()); return; } - if (deviceService.getDevice(ovsdb.intBrId()) == null || - !deviceService.isAvailable(ovsdb.intBrId())) { - createIntegrationBridge(ovsdb); - } else if (!checkVxlanInterface(ovsdb)) { - createVxlanInterface(ovsdb); + if (getOvsdbConnectionState(node)) { + OvsdbClientService ovsdbClient = getOvsdbClient(node); + ovsdbClient.disconnect(); } - } - @Override - public int getNodeCount() { - return nodeStore.size(); + // FIXME remove existing OVSDB device to work around OVSDB device re-connect issue + if (deviceService.getDevice(node.ovsdbId()) != null) { + adminService.removeDevice(node.ovsdbId()); + } } - @Override - public OvsdbNode getNode(DeviceId deviceId) { - Versioned<OvsdbNode> ovsdb = nodeStore.get(deviceId); - if (ovsdb != null) { - return ovsdb.value(); - } else { + /** + * Returns cordvtn node associated with a given OVSDB device. + * + * @param ovsdbId OVSDB device id + * @return cordvtn node, null if it fails to find the node + */ + private CordVtnNode getNodeByOvsdbId(DeviceId ovsdbId) { + try { + return getNodes().stream() + .filter(node -> node.ovsdbId().equals(ovsdbId)) + .findFirst().get(); + } catch (NoSuchElementException e) { + log.debug("Couldn't find node information for {}", ovsdbId); return null; } } - @Override - public List<OvsdbNode> getNodes() { - List<OvsdbNode> ovsdbs = new ArrayList<>(); - ovsdbs.addAll(Collections2.transform(nodeStore.values(), Versioned::value)); - return ovsdbs; - } - - @Override - public boolean isNodeConnected(OvsdbNode ovsdb) { - checkNotNull(ovsdb); - - OvsdbClientService ovsdbClient = getOvsdbClient(ovsdb); - if (ovsdbClient == null) { - return false; - } else { - return ovsdbClient.isConnected(); + /** + * Returns cordvtn node associated with a given integration bridge. + * + * @param bridgeId device id of integration bridge + * @return cordvtn node, null if it fails to find the node + */ + private CordVtnNode getNodeByBridgeId(DeviceId bridgeId) { + try { + return getNodes().stream() + .filter(node -> node.intBrId().equals(bridgeId)) + .findFirst().get(); + } catch (NoSuchElementException e) { + log.debug("Couldn't find node information for {}", bridgeId); + return null; } } - private OvsdbClientService getOvsdbClient(OvsdbNode ovsdb) { - checkNotNull(ovsdb); + /** + * Returns OVSDB client for a given node. + * + * @param node cordvtn node + * @return OVSDB client, or null if it fails to get OVSDB client + */ + private OvsdbClientService getOvsdbClient(CordVtnNode node) { + checkNotNull(node); OvsdbClientService ovsdbClient = controller.getOvsdbClient( - new OvsdbNodeId(ovsdb.ip(), ovsdb.port().toInt())); + new OvsdbNodeId(node.ovsdbIp(), node.ovsdbPort().toInt())); if (ovsdbClient == null) { - log.debug("Couldn't find ovsdb client for {}", ovsdb.host()); + log.debug("Couldn't find OVSDB client for {}", node.hostname()); } return ovsdbClient; } - private void createIntegrationBridge(OvsdbNode ovsdb) { + /** + * Creates an integration bridge for a given node. + * + * @param node cordvtn node + */ + private void createIntegrationBridge(CordVtnNode node) { + if (checkIntegrationBridge(node)) { + return; + } + List<ControllerInfo> controllers = new ArrayList<>(); Sets.newHashSet(clusterService.getNodes()) .forEach(controller -> { ControllerInfo ctrlInfo = new ControllerInfo(controller.ip(), OFPORT, "tcp"); controllers.add(ctrlInfo); }); - String dpid = ovsdb.intBrId().toString().substring(DPID_BEGIN); + String dpid = node.intBrId().toString().substring(DPID_BEGIN); try { - DriverHandler handler = driverService.createHandler(ovsdb.deviceId()); + DriverHandler handler = driverService.createHandler(node.ovsdbId()); BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class); bridgeConfig.addBridge(BridgeName.bridgeName(DEFAULT_BRIDGE_NAME), dpid, controllers); } catch (ItemNotFoundException e) { - log.warn("Failed to create integration bridge on {}", ovsdb.deviceId()); + log.warn("Failed to create integration bridge on {}", node.ovsdbId()); } } - private void createVxlanInterface(OvsdbNode ovsdb) { + /** + * Creates tunnel interface to the integration bridge for a given node. + * + * @param node cordvtn node + */ + private void createTunnelInterface(CordVtnNode node) { + if (checkTunnelInterface(node)) { + return; + } + DefaultAnnotations.Builder optionBuilder = DefaultAnnotations.builder(); for (String key : DEFAULT_TUNNEL_OPTIONS.keySet()) { optionBuilder.set(key, DEFAULT_TUNNEL_OPTIONS.get(key)); @@ -304,38 +478,63 @@ public class CordVtn implements CordVtnService { TunnelName.tunnelName(DEFAULT_TUNNEL), optionBuilder.build()); try { - DriverHandler handler = driverService.createHandler(ovsdb.deviceId()); + DriverHandler handler = driverService.createHandler(node.ovsdbId()); TunnelConfig tunnelConfig = handler.behaviour(TunnelConfig.class); tunnelConfig.createTunnelInterface(BridgeName.bridgeName(DEFAULT_BRIDGE_NAME), description); } catch (ItemNotFoundException e) { - log.warn("Failed to create VXLAN interface on {}", ovsdb.deviceId()); + log.warn("Failed to create tunnel interface on {}", node.ovsdbId()); } } - private boolean checkVxlanInterface(OvsdbNode ovsdb) { + /** + * Checks if integration bridge exists and available. + * + * @param node cordvtn node + * @return true if the bridge is available, false otherwise + */ + private boolean checkIntegrationBridge(CordVtnNode node) { + return (deviceService.getDevice(node.intBrId()) != null + && deviceService.isAvailable(node.intBrId())); + } + + /** + * Checks if tunnel interface exists. + * + * @param node cordvtn node + * @return true if the interface exists, false otherwise + */ + private boolean checkTunnelInterface(CordVtnNode node) { try { - DriverHandler handler = driverService.createHandler(ovsdb.deviceId()); - BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class); - bridgeConfig.getPorts().stream() - .filter(p -> p.annotations().value("portName").equals(DEFAULT_TUNNEL)) + deviceService.getPorts(node.intBrId()) + .stream() + .filter(p -> p.annotations().value("portName").contains(DEFAULT_TUNNEL) + && p.isEnabled()) .findAny().get(); - } catch (ItemNotFoundException | NoSuchElementException e) { + return true; + } catch (NoSuchElementException e) { return false; } - return true; } private class InternalDeviceListener implements DeviceListener { @Override public void event(DeviceEvent event) { + Device device = event.subject(); - ConnectionHandler handler = (device.type() == SWITCH ? bridgeHandler : ovsdbHandler); + ConnectionHandler<Device> handler = + (device.type().equals(SWITCH) ? bridgeHandler : ovsdbHandler); switch (event.type()) { - case DEVICE_ADDED: - eventExecutor.submit(() -> handler.connected(device)); + case PORT_ADDED: + eventExecutor.submit(() -> bridgeHandler.portAdded(event.port())); + break; + case PORT_UPDATED: + if (!event.port().isEnabled()) { + eventExecutor.submit(() -> bridgeHandler.portRemoved(event.port())); + } break; + case DEVICE_ADDED: case DEVICE_AVAILABILITY_CHANGED: if (deviceService.isAvailable(device.id())) { eventExecutor.submit(() -> handler.connected(device)); @@ -372,17 +571,15 @@ public class CordVtn implements CordVtnService { @Override public void connected(Device device) { - log.info("Ovsdb {} is connected", device.id()); - - OvsdbNode ovsdb = getNode(device.id()); - if (ovsdb != null) { - init(ovsdb); + CordVtnNode node = getNodeByOvsdbId(device.id()); + if (node != null) { + setNodeState(node, checkNodeState(node)); } } @Override public void disconnected(Device device) { - log.warn("Ovsdb {} is disconnected", device.id()); + log.info("OVSDB {} is disconnected", device.id()); } } @@ -390,26 +587,56 @@ public class CordVtn implements CordVtnService { @Override public void connected(Device device) { - log.info("Integration Bridge {} is detected", device.id()); - - OvsdbNode ovsdb; - try { - ovsdb = getNodes().stream() - .filter(node -> node.intBrId().equals(device.id())) - .findFirst().get(); - } catch (NoSuchElementException e) { - log.warn("Couldn't find OVSDB associated with {}", device.id()); + CordVtnNode node = getNodeByBridgeId(device.id()); + if (node != null) { + setNodeState(node, checkNodeState(node)); + } + } + + @Override + public void disconnected(Device device) { + CordVtnNode node = getNodeByBridgeId(device.id()); + if (node != null) { + log.info("Integration Bridge is disconnected from {}", node.hostname()); + setNodeState(node, NodeState.INCOMPLETE); + } + } + + /** + * Handles port added situation. + * If the added port is tunnel port, proceed remaining node initialization. + * Otherwise, do nothing. + * + * @param port port + */ + public void portAdded(Port port) { + if (!port.annotations().value("portName").contains(DEFAULT_TUNNEL)) { return; } - if (!checkVxlanInterface(ovsdb)) { - createVxlanInterface(ovsdb); + CordVtnNode node = getNodeByBridgeId((DeviceId) port.element().id()); + if (node != null) { + setNodeState(node, checkNodeState(node)); } } - @Override - public void disconnected(Device device) { - log.info("Integration Bridge {} is vanished", device.id()); + /** + * Handles port removed situation. + * If the removed port is tunnel port, proceed remaining node initialization. + * Others, do nothing. + * + * @param port port + */ + public void portRemoved(Port port) { + if (!port.annotations().value("portName").contains(DEFAULT_TUNNEL)) { + return; + } + + CordVtnNode node = getNodeByBridgeId((DeviceId) port.element().id()); + if (node != null) { + log.info("Tunnel interface is removed from {}", node.hostname()); + setNodeState(node, NodeState.INCOMPLETE); + } } } diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfig.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfig.java index 550452ce..827ce052 100644 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfig.java +++ b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfig.java @@ -32,77 +32,82 @@ import static com.google.common.base.Preconditions.checkNotNull; */ public class CordVtnConfig extends Config<ApplicationId> { - public static final String OVSDB_NODES = "ovsdbNodes"; - public static final String HOST = "host"; - public static final String IP = "ip"; - public static final String PORT = "port"; + public static final String CORDVTN_NODES = "nodes"; + public static final String HOSTNAME = "hostname"; + public static final String OVSDB_IP = "ovsdbIp"; + public static final String OVSDB_PORT = "ovsdbPort"; public static final String BRIDGE_ID = "bridgeId"; /** - * Returns the set of ovsdb nodes read from network config. + * Returns the set of nodes read from network config. * - * @return set of OvsdbNodeConfig or null + * @return set of CordVtnNodeConfig or null */ - public Set<OvsdbNodeConfig> ovsdbNodes() { - Set<OvsdbNodeConfig> ovsdbNodes = Sets.newHashSet(); + public Set<CordVtnNodeConfig> cordVtnNodes() { + Set<CordVtnNodeConfig> nodes = Sets.newHashSet(); - JsonNode nodes = object.get(OVSDB_NODES); - if (nodes == null) { + JsonNode jsonNodes = object.get(CORDVTN_NODES); + if (jsonNodes == null) { return null; } - nodes.forEach(jsonNode -> ovsdbNodes.add(new OvsdbNodeConfig( - jsonNode.path(HOST).asText(), - IpAddress.valueOf(jsonNode.path(IP).asText()), - TpPort.tpPort(jsonNode.path(PORT).asInt()), + jsonNodes.forEach(jsonNode -> nodes.add(new CordVtnNodeConfig( + jsonNode.path(HOSTNAME).asText(), + IpAddress.valueOf(jsonNode.path(OVSDB_IP).asText()), + TpPort.tpPort(jsonNode.path(OVSDB_PORT).asInt()), DeviceId.deviceId(jsonNode.path(BRIDGE_ID).asText())))); - return ovsdbNodes; + return nodes; } /** - * Configuration for an ovsdb node. + * Configuration for CordVtn node. */ - public static class OvsdbNodeConfig { + public static class CordVtnNodeConfig { - private final String host; - private final IpAddress ip; - private final TpPort port; + private final String hostname; + private final IpAddress ovsdbIp; + private final TpPort ovsdbPort; private final DeviceId bridgeId; - public OvsdbNodeConfig(String host, IpAddress ip, TpPort port, DeviceId bridgeId) { - this.host = checkNotNull(host); - this.ip = checkNotNull(ip); - this.port = checkNotNull(port); + public CordVtnNodeConfig(String hostname, IpAddress ovsdbIp, TpPort ovsdbPort, DeviceId bridgeId) { + this.hostname = checkNotNull(hostname); + this.ovsdbIp = checkNotNull(ovsdbIp); + this.ovsdbPort = checkNotNull(ovsdbPort); this.bridgeId = checkNotNull(bridgeId); } /** - * Returns host information of the node. + * Returns hostname of the node. * - * @return host + * @return hostname */ - public String host() { - return this.host; + public String hostname() { + return this.hostname; } /** - * Returns ip address to access ovsdb-server of the node. + * Returns OVSDB ip address of the node. * - * @return ip address + * @return OVSDB server IP address */ - public IpAddress ip() { - return this.ip; + public IpAddress ovsdbIp() { + return this.ovsdbIp; } /** - * Returns port number to access ovsdb-server of the node. + * Returns OVSDB port number of the node. * * @return port number */ - public TpPort port() { - return this.port; + public TpPort ovsdbPort() { + return this.ovsdbPort; } + /** + * Returns integration bridge id of the node. + * + * @return device id + */ public DeviceId bridgeId() { return this.bridgeId; } diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java index 274ca9b4..f79b4460 100644 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java +++ b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnConfigManager.java @@ -88,10 +88,10 @@ public class CordVtnConfigManager { return; } - config.ovsdbNodes().forEach(node -> { - DefaultOvsdbNode ovsdb = new DefaultOvsdbNode( - node.host(), node.ip(), node.port(), node.bridgeId()); - cordVtnService.addNode(ovsdb); + config.cordVtnNodes().forEach(node -> { + CordVtnNode cordVtnNode = new CordVtnNode( + node.hostname(), node.ovsdbIp(), node.ovsdbPort(), node.bridgeId()); + cordVtnService.addNode(cordVtnNode); }); } diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnService.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnService.java index 7e01a452..5ab7bafa 100644 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnService.java +++ b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnService.java @@ -15,8 +15,6 @@ */ package org.onosproject.cordvtn; -import org.onosproject.net.DeviceId; - import java.util.List; /** @@ -28,30 +26,23 @@ public interface CordVtnService { /** * Adds a new node to the service. * - * @param ovsdb ovsdb node + * @param node cordvtn node */ - void addNode(OvsdbNode ovsdb); + void addNode(CordVtnNode node); /** * Deletes a node from the service. * - * @param ovsdb ovsdb node - */ - void deleteNode(OvsdbNode ovsdb); - - /** - * Connect to a node. - * - * @param ovsdb ovsdb node + * @param node cordvtn node */ - void connect(OvsdbNode ovsdb); + void deleteNode(CordVtnNode node); /** - * Disconnect a node. + * Initiates node to serve virtual tenant network. * - * @param ovsdb ovsdb node + * @param node cordvtn node */ - void disconnect(OvsdbNode ovsdb); + void initNode(CordVtnNode node); /** * Returns the number of the nodes known to the service. @@ -61,25 +52,17 @@ public interface CordVtnService { int getNodeCount(); /** - * Returns OvsdbNode with given device id. - * - * @param deviceId device id - * @return ovsdb node - */ - OvsdbNode getNode(DeviceId deviceId); - - /** - * Returns connection state of the node. + * Returns node initialization state. * - * @param ovsdb ovsdb node - * @return true if the node is connected, false otherwise + * @param node cordvtn node + * @return true if initial node setup is completed, otherwise false */ - boolean isNodeConnected(OvsdbNode ovsdb); + boolean getNodeInitState(CordVtnNode node); /** * Returns all nodes known to the service. * * @return list of nodes */ - List<OvsdbNode> getNodes(); + List<CordVtnNode> getNodes(); } diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DefaultOvsdbNode.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DefaultOvsdbNode.java deleted file mode 100644 index 46f6e29c..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/DefaultOvsdbNode.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.cordvtn; - -import com.google.common.base.MoreObjects; -import org.onlab.packet.IpAddress; -import org.onlab.packet.TpPort; -import org.onosproject.net.DeviceId; - -import java.util.Objects; - -/** - * OvsdbNode implementation. - */ -public class DefaultOvsdbNode implements OvsdbNode { - - private final String host; - private final IpAddress ip; - private final TpPort port; - private final DeviceId brId; - - public DefaultOvsdbNode(String host, IpAddress ip, TpPort port, DeviceId brId) { - this.host = host; - this.ip = ip; - this.port = port; - this.brId = brId; - } - - @Override - public IpAddress ip() { - return this.ip; - } - - @Override - public TpPort port() { - return this.port; - } - - @Override - public String host() { - return this.host; - } - - @Override - public DeviceId intBrId() { - return this.brId; - } - - @Override - public DeviceId deviceId() { - return DeviceId.deviceId("ovsdb:" + this.ip.toString()); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - - if (o instanceof DefaultOvsdbNode) { - DefaultOvsdbNode that = (DefaultOvsdbNode) o; - if (this.host.equals(that.host) && - this.ip.equals(that.ip) && - this.port.equals(that.port) && - this.brId.equals(that.brId)) { - return true; - } - } - return false; - } - - @Override - public int hashCode() { - return Objects.hash(host, ip, port); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("host", host) - .add("ip", ip) - .add("port", port) - .add("bridgeId", brId) - .toString(); - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/OvsdbNode.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/OvsdbNode.java deleted file mode 100644 index 7a9a06a6..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/OvsdbNode.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.cordvtn; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.TpPort; -import org.onosproject.net.DeviceId; - -import java.util.Comparator; - -/** - * Representation of a node with ovsdb server. - */ -public interface OvsdbNode { - - Comparator<OvsdbNode> OVSDB_NODE_COMPARATOR = new Comparator<OvsdbNode>() { - @Override - public int compare(OvsdbNode ovsdb1, OvsdbNode ovsdb2) { - return ovsdb1.host().compareTo(ovsdb2.host()); - } - }; - - /** - * Returns the IP address of the ovsdb server. - * - * @return ip address - */ - IpAddress ip(); - - /** - * Returns the port number of the ovsdb server. - * - * @return port number - */ - TpPort port(); - - /** - * Returns the host information of the ovsdb server. - * It could be hostname or ip address. - * - * @return host - */ - String host(); - - /** - * Returns the device id of the ovsdb server. - * - * @return device id - */ - DeviceId deviceId(); - - /** - * Returns the device id of the integration bridge associated with the node. - * - * @return device id - */ - DeviceId intBrId(); -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeAddCommand.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeAddCommand.java deleted file mode 100644 index 88d16341..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeAddCommand.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.cordvtn.cli; - -import org.apache.karaf.shell.commands.Argument; -import org.apache.karaf.shell.commands.Command; -import org.onlab.packet.IpAddress; -import org.onlab.packet.TpPort; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.cordvtn.CordVtnService; -import org.onosproject.cordvtn.DefaultOvsdbNode; -import org.onosproject.cordvtn.OvsdbNode; -import org.onosproject.net.DeviceId; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * Adds a new OVSDB nodes. - */ -@Command(scope = "onos", name = "ovsdb-add", - description = "Adds a new OVSDB node to cordvtn") -public class OvsdbNodeAddCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "host", description = "Hostname or IP", - required = true, multiValued = false) - private String host = null; - - @Argument(index = 1, name = "address", - description = "OVSDB server listening address (ip:port)", - required = true, multiValued = false) - private String address = null; - - @Argument(index = 2, name = "bridgeId", - description = "Device ID of integration bridge", - required = true, multiValued = false) - private String bridgeId = null; - - @Override - protected void execute() { - checkArgument(address.contains(":"), "address should be ip:port format"); - checkArgument(bridgeId.startsWith("of:"), "bridgeId should be of:dpid format"); - - CordVtnService service = AbstractShellCommand.get(CordVtnService.class); - String[] ipPort = address.split(":"); - OvsdbNode ovsdb = new DefaultOvsdbNode(host, - IpAddress.valueOf(ipPort[0]), - TpPort.tpPort(Integer.parseInt(ipPort[1])), - DeviceId.deviceId(bridgeId)); - service.addNode(ovsdb); - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeConnectCommand.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeConnectCommand.java deleted file mode 100644 index e4ca0f3c..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeConnectCommand.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.cordvtn.cli; - -import org.apache.karaf.shell.commands.Argument; -import org.apache.karaf.shell.commands.Command; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.cordvtn.CordVtnService; -import org.onosproject.cordvtn.OvsdbNode; - -import java.util.NoSuchElementException; - -/** - * Connects to OVSDBs. - */ -@Command(scope = "onos", name = "ovsdb-connect", - description = "Connects to OVSDBs") -public class OvsdbNodeConnectCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "hosts", description = "Hostname(s) or IP(s)", - required = true, multiValued = true) - private String[] hosts = null; - - @Override - protected void execute() { - CordVtnService service = AbstractShellCommand.get(CordVtnService.class); - - for (String host : hosts) { - OvsdbNode ovsdb; - try { - ovsdb = service.getNodes().stream() - .filter(node -> node.host().equals(host)) - .findFirst().get(); - } catch (NoSuchElementException e) { - print("Unable to find %s", host); - continue; - } - - if (service.isNodeConnected(ovsdb)) { - print("OVSDB %s is already in connected state, do nothing", host); - } else { - service.connect(ovsdb); - } - } - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDeleteCommand.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDeleteCommand.java deleted file mode 100644 index a500d0d8..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDeleteCommand.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.cordvtn.cli; - -import org.apache.karaf.shell.commands.Argument; -import org.apache.karaf.shell.commands.Command; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.cordvtn.CordVtnService; -import org.onosproject.cordvtn.OvsdbNode; - -import java.util.NoSuchElementException; - -/** - * Deletes OVSDB nodes from cordvtn. - */ -@Command(scope = "onos", name = "ovsdb-delete", - description = "Deletes OVSDB nodes from cordvtn") -public class OvsdbNodeDeleteCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "hosts", description = "Hostname(s) or IP(s)", - required = true, multiValued = true) - private String[] hosts = null; - - @Override - protected void execute() { - CordVtnService service = AbstractShellCommand.get(CordVtnService.class); - - for (String host : hosts) { - OvsdbNode ovsdb; - try { - ovsdb = service.getNodes().stream() - .filter(node -> node.host().equals(host)) - .findFirst().get(); - - } catch (NoSuchElementException e) { - print("Unable to find %s", host); - continue; - } - - service.deleteNode(ovsdb); - } - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDisconnectCommand.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDisconnectCommand.java deleted file mode 100644 index 14e44e08..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeDisconnectCommand.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.cordvtn.cli; - -import org.apache.karaf.shell.commands.Argument; -import org.apache.karaf.shell.commands.Command; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.cordvtn.CordVtnService; -import org.onosproject.cordvtn.OvsdbNode; - -import java.util.NoSuchElementException; - -/** - * Disconnects OVSDBs. - */ -@Command(scope = "onos", name = "ovsdb-disconnect", - description = "Disconnects OVSDBs") -public class OvsdbNodeDisconnectCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "hosts", description = "Hostname(s) or IP(s)", - required = true, multiValued = true) - private String[] hosts = null; - - @Override - protected void execute() { - CordVtnService service = AbstractShellCommand.get(CordVtnService.class); - - for (String host : hosts) { - OvsdbNode ovsdb; - try { - ovsdb = service.getNodes().stream() - .filter(node -> node.host().equals(host)) - .findFirst().get(); - } catch (NoSuchElementException e) { - print("Unable to find %s", host); - continue; - } - - if (!service.isNodeConnected(ovsdb)) { - print("OVSDB %s is already in disconnected state, do nothing", host); - } else { - service.disconnect(ovsdb); - } - } - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeListCommand.java b/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeListCommand.java deleted file mode 100644 index 7d125ca6..00000000 --- a/framework/src/onos/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/OvsdbNodeListCommand.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.cordvtn.cli; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import org.apache.karaf.shell.commands.Command; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.cordvtn.CordVtnService; -import org.onosproject.cordvtn.OvsdbNode; - -import java.util.Collections; -import java.util.List; - -/** - * Lists all OVSDB nodes. - */ -@Command(scope = "onos", name = "ovsdbs", - description = "Lists all OVSDB nodes registered in cordvtn application") -public class OvsdbNodeListCommand extends AbstractShellCommand { - - @Override - protected void execute() { - CordVtnService service = AbstractShellCommand.get(CordVtnService.class); - List<OvsdbNode> ovsdbs = service.getNodes(); - Collections.sort(ovsdbs, OvsdbNode.OVSDB_NODE_COMPARATOR); - - if (outputJson()) { - print("%s", json(service, ovsdbs)); - } else { - for (OvsdbNode ovsdb : ovsdbs) { - print("host=%s, address=%s, br-int=%s, state=%s", - ovsdb.host(), - ovsdb.ip().toString() + ":" + ovsdb.port().toString(), - ovsdb.intBrId().toString(), - getState(service, ovsdb)); - } - print("Total %s nodes", service.getNodeCount()); - } - } - - private JsonNode json(CordVtnService service, List<OvsdbNode> ovsdbs) { - ObjectMapper mapper = new ObjectMapper(); - ArrayNode result = mapper.createArrayNode(); - for (OvsdbNode ovsdb : ovsdbs) { - String ipPort = ovsdb.ip().toString() + ":" + ovsdb.port().toString(); - result.add(mapper.createObjectNode() - .put("host", ovsdb.host()) - .put("address", ipPort) - .put("brInt", ovsdb.intBrId().toString()) - .put("state", getState(service, ovsdb))); - } - return result; - } - - private String getState(CordVtnService service, OvsdbNode ovsdb) { - return service.isNodeConnected(ovsdb) ? "CONNECTED" : "DISCONNECTED"; - } -} diff --git a/framework/src/onos/apps/cordvtn/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/framework/src/onos/apps/cordvtn/src/main/resources/OSGI-INF/blueprint/shell-config.xml index 6e172387..ad28bc75 100644 --- a/framework/src/onos/apps/cordvtn/src/main/resources/OSGI-INF/blueprint/shell-config.xml +++ b/framework/src/onos/apps/cordvtn/src/main/resources/OSGI-INF/blueprint/shell-config.xml @@ -17,19 +17,16 @@ <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> <command> - <action class="org.onosproject.cordvtn.cli.OvsdbNodeListCommand"/> + <action class="org.onosproject.cordvtn.cli.CordVtnNodeListCommand"/> </command> <command> - <action class="org.onosproject.cordvtn.cli.OvsdbNodeAddCommand"/> + <action class="org.onosproject.cordvtn.cli.CordVtnNodeAddCommand"/> </command> <command> - <action class="org.onosproject.cordvtn.cli.OvsdbNodeDeleteCommand"/> + <action class="org.onosproject.cordvtn.cli.CordVtnNodeDeleteCommand"/> </command> <command> - <action class="org.onosproject.cordvtn.cli.OvsdbNodeConnectCommand"/> - </command> - <command> - <action class="org.onosproject.cordvtn.cli.OvsdbNodeDisconnectCommand"/> + <action class="org.onosproject.cordvtn.cli.CordVtnNodeInitCommand"/> </command> </command-bundle> </blueprint> diff --git a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java index e356c38b..ae610239 100644 --- a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java +++ b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java @@ -58,15 +58,15 @@ public interface DhcpService { /** * Registers a static IP mapping with the DHCP Server. - * Supports the request from OpenStack + * Supports rangeNotEnforced option * * @param macID macID of the client * @param ipAddress IP Address requested for the client - * @param fromOpenStack true if the request is from OpenStack - * @param addressList subnetMask, DHCP/Router/Domain Server IP Address if the request from OpenStack + * @param rangeNotEnforced true if rangeNotEnforced was set and the mapping will be eternal + * @param addressList subnetMask, DHCP/Router/DNS IP Addresses if rangeNotEnforced was set * @return true if the mapping was successfully added, false otherwise */ - boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress, boolean fromOpenStack, + boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress, boolean rangeNotEnforced, List<Ip4Address> addressList); /** diff --git a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java index bd2e16b3..cdfadf7b 100644 --- a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java +++ b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java @@ -52,12 +52,11 @@ public interface DhcpStore { * @param hostId Host Id of the client requesting an IP * @param ipAddr IP Address being requested * @param leaseTime Lease time offered by the server for this mapping - * @param fromOpenStack true if the request is from Openstack - * @param addressList subnetMask, DHCP IP Address, Router IP Address, Domain Server IP Address if the request - * from OpenStack + * @param rangeNotEnforced true if rangeNotEnforced was set + * @param addressList subnetMask, DHCP/Router/DNS IP Addresses if rangeNotEnforced was set * @return returns true if the assignment was successful, false otherwise */ - boolean assignIP(HostId hostId, Ip4Address ipAddr, int leaseTime, boolean fromOpenStack, + boolean assignIP(HostId hostId, Ip4Address ipAddr, int leaseTime, boolean rangeNotEnforced, List<Ip4Address> addressList); @@ -95,11 +94,11 @@ public interface DhcpStore { * * @param macID macID of the client * @param ipAddr IP Address requested for the client - * @param fromOpenStack true if the request is from Openstack - * @param addressList subnetMask, DHCP/Router/Domain Server IP Address if the request from OpenStack + * @param rangeNotEnforced true if rangeNotEnforced was set + * @param addressList subnetMask, DHCP/Router/DNS IP Addresses rangeNotEnforced was set * @return true if the mapping was successfully registered, false otherwise */ - boolean assignStaticIP(MacAddress macID, Ip4Address ipAddr, boolean fromOpenStack, List<Ip4Address> addressList); + boolean assignStaticIP(MacAddress macID, Ip4Address ipAddr, boolean rangeNotEnforced, List<Ip4Address> addressList); /** * Removes a static IP mapping associated with the given MAC ID from the DHCP Server. diff --git a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java index 998579e2..5610fec8 100644 --- a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java +++ b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java @@ -41,7 +41,7 @@ public final class IpAssignment { private final Ip4Address domainServer; - private final boolean fromOpenStack; + private final boolean rangeNotEnforced; private final AssignmentStatus assignmentStatus; @@ -54,7 +54,7 @@ public final class IpAssignment { /** * IP Assignment has been requested by a OpenStack. */ - Option_Requested_From_OpenStack, + Option_RangeNotEnforced, /** * IP has been assigned to a host. */ @@ -78,13 +78,13 @@ public final class IpAssignment { * @param dhcpServer * @param routerAddress * @param domainServer - * @param fromOpenStack + * @param rangeNotEnforced */ private IpAssignment(Ip4Address ipAddress, long leasePeriod, Date timestamp, AssignmentStatus assignmentStatus, Ip4Address subnetMask, Ip4Address dhcpServer, - Ip4Address routerAddress, Ip4Address domainServer, boolean fromOpenStack) { + Ip4Address routerAddress, Ip4Address domainServer, boolean rangeNotEnforced) { this.ipAddress = ipAddress; this.leasePeriod = leasePeriod; this.timestamp = timestamp; @@ -93,7 +93,7 @@ public final class IpAssignment { this.dhcpServer = dhcpServer; this.routerAddress = routerAddress; this.domainServer = domainServer; - this.fromOpenStack = fromOpenStack; + this.rangeNotEnforced = rangeNotEnforced; } /** @@ -157,8 +157,8 @@ public final class IpAssignment { return domainServer; } - public boolean fromOpenStack() { - return fromOpenStack; + public boolean rangeNotEnforced() { + return rangeNotEnforced; } @Override @@ -172,7 +172,7 @@ public final class IpAssignment { .add("dhcpServer", dhcpServer) .add("routerAddress", routerAddress) .add("domainServer", domainServer) - .add("fromOpenStack", fromOpenStack) + .add("rangeNotEnforced", rangeNotEnforced) .toString(); } @@ -216,7 +216,7 @@ public final class IpAssignment { private Ip4Address routerAddress; - private boolean fromOpenStack = false; + private boolean rangeNotEnforced = false; private Builder() { @@ -232,7 +232,7 @@ public final class IpAssignment { public IpAssignment build() { validateInputs(); return new IpAssignment(ipAddress, leasePeriod, timeStamp, assignmentStatus, subnetMask, - dhcpServer, domainServer, routerAddress, fromOpenStack); + dhcpServer, domainServer, routerAddress, rangeNotEnforced); } public Builder ipAddress(Ip4Address addr) { @@ -275,8 +275,8 @@ public final class IpAssignment { return this; } - public Builder fromOpenStack(boolean fromOpenStack) { - this.fromOpenStack = fromOpenStack; + public Builder rangeNotEnforced(boolean rangeNotEnforced) { + this.rangeNotEnforced = rangeNotEnforced; return this; } @@ -287,16 +287,16 @@ public final class IpAssignment { checkNotNull(leasePeriod, "Lease Period must be specified"); checkNotNull(timeStamp, "Timestamp must be specified"); - if (fromOpenStack) { - checkNotNull(subnetMask, "subnetMask must be specified in case of OpenStack"); - checkNotNull(dhcpServer, "dhcpServer must be specified in case of OpenStack"); - checkNotNull(domainServer, "domainServer must be specified in case of OpenStack"); - checkNotNull(routerAddress, "routerAddress must be specified in case of OpenStack"); + if (rangeNotEnforced) { + checkNotNull(subnetMask, "subnetMask must be specified in case of rangeNotEnforced"); + checkNotNull(dhcpServer, "dhcpServer must be specified in case of rangeNotEnforced"); + checkNotNull(domainServer, "domainServer must be specified in case of rangeNotEnforced"); + checkNotNull(routerAddress, "routerAddress must be specified in case of rangeNotEnforced"); } switch (assignmentStatus) { case Option_Requested: - case Option_Requested_From_OpenStack: + case Option_RangeNotEnforced: case Option_Assigned: case Option_Expired: break; diff --git a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpConfig.java b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpConfig.java index 4353d623..1efdd082 100644 --- a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpConfig.java +++ b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpConfig.java @@ -21,6 +21,9 @@ import org.onosproject.core.ApplicationId; import org.onosproject.net.config.Config; import org.onosproject.net.config.basics.BasicElementConfig; +import static org.onosproject.net.config.Config.FieldPresence.MANDATORY; +import static org.onosproject.net.config.Config.FieldPresence.OPTIONAL; + /** * DHCP Config class. */ @@ -43,6 +46,20 @@ public class DhcpConfig extends Config<ApplicationId> { public static final int DEFAULT = -1; + @Override + public boolean isValid() { + // FIXME: Sweep through and revisit the validation assertions + // For now, this is just a demonstration of potential uses + return hasOnlyFields(MY_IP, MY_MAC, SUBNET_MASK, BROADCAST_ADDRESS, + ROUTER_ADDRESS, DOMAIN_SERVER, TTL, LEASE_TIME, + RENEW_TIME, REBIND_TIME, TIMER_DELAY, DEFAULT_TIMEOUT, + START_IP, END_IP) && + isIpAddress(MY_IP, MANDATORY) && isMacAddress(MY_MAC, MANDATORY) && + isIpAddress(START_IP, MANDATORY) && isIpAddress(END_IP, MANDATORY) && + isNumber(LEASE_TIME, OPTIONAL, 1) && isNumber(REBIND_TIME, OPTIONAL, 1) && + isNumber(DEFAULT_TIMEOUT, OPTIONAL, 1, 3600); + } + /** * Returns the dhcp server ip. * diff --git a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java index 4093f2d2..a1707e0b 100644 --- a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java +++ b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java @@ -109,7 +109,7 @@ public class DhcpManager implements DhcpService { @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected PacketService packetService; - private DHCPPacketProcessor processor = new DHCPPacketProcessor(); + private DhcpPacketProcessor processor = new DhcpPacketProcessor(); @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected CoreService coreService; @@ -241,12 +241,12 @@ public class DhcpManager implements DhcpService { } @Override - public boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress, boolean fromOpenStack, + public boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress, boolean rangeNotEnforced, List<Ip4Address> addressList) { log.debug("setStaticMapping is called with Mac: {}, Ip: {} addressList: {}", macID.toString(), ipAddress.toString(), addressList.toString()); - return dhcpStore.assignStaticIP(macID, ipAddress, fromOpenStack, addressList); + return dhcpStore.assignStaticIP(macID, ipAddress, rangeNotEnforced, addressList); } @Override @@ -259,7 +259,7 @@ public class DhcpManager implements DhcpService { return dhcpStore.getAvailableIPs(); } - private class DHCPPacketProcessor implements PacketProcessor { + private class DhcpPacketProcessor implements PacketProcessor { /** * Builds the DHCP Reply packet. @@ -279,7 +279,7 @@ public class DhcpManager implements DhcpService { ipAssignment = dhcpStore.getIpAssignmentFromAllocationMap(HostId.hostId(packet.getSourceMAC())); - if (ipAssignment != null && ipAssignment.fromOpenStack()) { + if (ipAssignment != null && ipAssignment.rangeNotEnforced()) { subnetMaskReply = ipAssignment.subnetMask(); dhcpServerReply = ipAssignment.dhcpServer(); domainServerReply = ipAssignment.domainServer(); @@ -437,7 +437,7 @@ public class DhcpManager implements DhcpService { * @param context context of the incoming message * @param dhcpPayload the extracted DHCP payload */ - private void processDHCPPacket(PacketContext context, DHCP dhcpPayload) { + private void processDhcpPacket(PacketContext context, DHCP dhcpPayload) { Ethernet packet = context.inPacket().parsed(); boolean flagIfRequestedIP = false; boolean flagIfServerIP = false; @@ -464,9 +464,9 @@ public class DhcpManager implements DhcpService { } } DHCPPacketType outgoingPacketType; - MacAddress clientMAC = new MacAddress(dhcpPayload.getClientHardwareAddress()); + MacAddress clientMac = new MacAddress(dhcpPayload.getClientHardwareAddress()); VlanId vlanId = VlanId.vlanId(packet.getVlanID()); - HostId hostId = HostId.hostId(clientMAC, vlanId); + HostId hostId = HostId.hostId(clientMac, vlanId); if (incomingPacketType.getValue() == DHCPPacketType.DHCPDISCOVER.getValue()) { @@ -484,8 +484,9 @@ public class DhcpManager implements DhcpService { if (flagIfServerIP && flagIfRequestedIP) { // SELECTING state - if (dhcpStore.getIpAssignmentFromAllocationMap(HostId.hostId(clientMAC)) - .fromOpenStack()) { + + if (dhcpStore.getIpAssignmentFromAllocationMap(HostId.hostId(clientMac)) + .rangeNotEnforced()) { outgoingPacketType = DHCPPacketType.DHCPACK; Ethernet ethReply = buildReply(packet, requestedIP, (byte) outgoingPacketType.getValue()); sendReply(context, ethReply); @@ -544,7 +545,7 @@ public class DhcpManager implements DhcpService { * @param context context of the incoming message * @param packet the ethernet payload */ - private void processARPPacket(PacketContext context, Ethernet packet) { + private void processArpPacket(PacketContext context, Ethernet packet) { ARP arpPacket = (ARP) packet.getPayload(); @@ -605,7 +606,7 @@ public class DhcpManager implements DhcpService { // This is meant for the dhcp server so process the packet here. DHCP dhcpPayload = (DHCP) udpPacket.getPayload(); - processDHCPPacket(context, dhcpPayload); + processDhcpPacket(context, dhcpPayload); } } } else if (packet.getEtherType() == Ethernet.TYPE_ARP) { @@ -614,7 +615,7 @@ public class DhcpManager implements DhcpService { if ((arpPacket.getOpCode() == ARP.OP_REQUEST) && Objects.equals(myIP, Ip4Address.valueOf(arpPacket.getTargetProtocolAddress()))) { - processARPPacket(context, packet); + processArpPacket(context, packet); } } @@ -727,4 +728,4 @@ public class DhcpManager implements DhcpService { timeout = Timer.getTimer().newTimeout(new PurgeListTask(), timerDelay, TimeUnit.MINUTES); } } -}
\ No newline at end of file +} diff --git a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DistributedDhcpStore.java b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DistributedDhcpStore.java index 0f25495e..ad4522cb 100644 --- a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DistributedDhcpStore.java +++ b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DistributedDhcpStore.java @@ -106,7 +106,7 @@ public class DistributedDhcpStore implements DhcpStore { IpAssignment.AssignmentStatus status = assignmentInfo.assignmentStatus(); Ip4Address ipAddr = assignmentInfo.ipAddress(); - if (assignmentInfo.fromOpenStack()) { + if (assignmentInfo.rangeNotEnforced()) { return assignmentInfo.ipAddress(); } else if (status == IpAssignment.AssignmentStatus.Option_Assigned || status == IpAssignment.AssignmentStatus.Option_Requested) { @@ -163,12 +163,15 @@ public class DistributedDhcpStore implements DhcpStore { } @Override - public boolean assignIP(HostId hostId, Ip4Address ipAddr, int leaseTime, boolean fromOpenStack, + public boolean assignIP(HostId hostId, Ip4Address ipAddr, int leaseTime, boolean rangeNotEnforced, List<Ip4Address> addressList) { IpAssignment assignmentInfo; + log.debug("Assign IP Called w/ Ip4Address: {}, HostId: {}", ipAddr.toString(), hostId.mac().toString()); + if (allocationMap.containsKey(hostId)) { + assignmentInfo = allocationMap.get(hostId).value(); IpAssignment.AssignmentStatus status = assignmentInfo.assignmentStatus(); @@ -212,17 +215,17 @@ public class DistributedDhcpStore implements DhcpStore { allocationMap.put(hostId, assignmentInfo); return true; } - } else if (fromOpenStack) { + } else if (rangeNotEnforced) { assignmentInfo = IpAssignment.builder() .ipAddress(ipAddr) .timestamp(new Date()) .leasePeriod(leaseTime) - .fromOpenStack(true) - .assignmentStatus(IpAssignment.AssignmentStatus.Option_Requested_From_OpenStack) + .rangeNotEnforced(true) + .assignmentStatus(IpAssignment.AssignmentStatus.Option_RangeNotEnforced) .subnetMask((Ip4Address) addressList.toArray()[0]) .dhcpServer((Ip4Address) addressList.toArray()[1]) - .domainServer((Ip4Address) addressList.toArray()[2]) - .routerAddress((Ip4Address) addressList.toArray()[3]) + .routerAddress((Ip4Address) addressList.toArray()[2]) + .domainServer((Ip4Address) addressList.toArray()[3]) .build(); allocationMap.put(hostId, assignmentInfo); return true; @@ -259,7 +262,7 @@ public class DistributedDhcpStore implements DhcpStore { for (Map.Entry<HostId, Versioned<IpAssignment>> entry: allocationMap.entrySet()) { assignment = entry.getValue().value(); if (assignment.assignmentStatus() == IpAssignment.AssignmentStatus.Option_Assigned - || assignment.assignmentStatus() == IpAssignment.AssignmentStatus.Option_Requested_From_OpenStack) { + || assignment.assignmentStatus() == IpAssignment.AssignmentStatus.Option_RangeNotEnforced) { validMapping.put(entry.getKey(), assignment); } } @@ -276,10 +279,10 @@ public class DistributedDhcpStore implements DhcpStore { } @Override - public boolean assignStaticIP(MacAddress macID, Ip4Address ipAddr, boolean fromOpenStack, + public boolean assignStaticIP(MacAddress macID, Ip4Address ipAddr, boolean rangeNotEnforced, List<Ip4Address> addressList) { HostId host = HostId.hostId(macID); - return assignIP(host, ipAddr, -1, fromOpenStack, addressList); + return assignIP(host, ipAddr, -1, rangeNotEnforced, addressList); } @Override @@ -287,6 +290,12 @@ public class DistributedDhcpStore implements DhcpStore { HostId host = HostId.hostId(macID); if (allocationMap.containsKey(host)) { IpAssignment assignment = allocationMap.get(host).value(); + + if (assignment.rangeNotEnforced()) { + allocationMap.remove(host); + return true; + } + Ip4Address freeIP = assignment.ipAddress(); if (assignment.leasePeriod() < 0) { allocationMap.remove(host); diff --git a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/rest/DHCPWebResource.java b/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/rest/DHCPWebResource.java deleted file mode 100644 index 7a078df9..00000000 --- a/framework/src/onos/apps/dhcp/app/src/main/java/org/onosproject/dhcp/rest/DHCPWebResource.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.dhcp.rest; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Lists; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onosproject.dhcp.DhcpService; -import org.onosproject.dhcp.IpAssignment; -import org.onosproject.net.HostId; -import org.onosproject.rest.AbstractWebResource; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -/** - * Manage DHCP address assignments. - */ -@Path("dhcp") -public class DHCPWebResource extends AbstractWebResource { - - final DhcpService service = get(DhcpService.class); - - /** - * Get DHCP server configuration data. - * Shows lease, renewal and rebinding times in seconds. - * - * @return 200 OK - */ - @GET - @Path("config") - public Response getConfigs() { - DhcpService service = get(DhcpService.class); - ObjectNode node = mapper().createObjectNode() - .put("leaseTime", service.getLeaseTime()) - .put("renewalTime", service.getRenewalTime()) - .put("rebindingTime", service.getRebindingTime()); - return ok(node.toString()).build(); - } - - /** - * Get all MAC/IP mappings. - * Shows all MAC/IP mappings held by the DHCP server. - * - * @return 200 OK - */ - @GET - @Path("mappings") - public Response listMappings() { - ObjectNode root = mapper().createObjectNode(); - - final Map<HostId, IpAssignment> intents = service.listMapping(); - ArrayNode arrayNode = root.putArray("mappings"); - intents.entrySet().forEach(i -> arrayNode.add(mapper().createObjectNode() - .put("host", i.getKey().toString()) - .put("ip", i.getValue().ipAddress().toString()))); - - return ok(root.toString()).build(); - } - - - - /** - * Get all available IPs. - * Shows all the IPs in the free pool of the DHCP Server. - * - * @return 200 OK - */ - @GET - @Path("available") - public Response listAvailableIPs() { - final Iterable<Ip4Address> availableIPList = service.getAvailableIPs(); - - final ObjectNode root = mapper().createObjectNode(); - ArrayNode arrayNode = root.putArray("availableIP"); - availableIPList.forEach(i -> arrayNode.add(i.toString())); - return ok(root.toString()).build(); - } - - /** - * Post a new static MAC/IP binding. - * Registers a static binding to the DHCP server, and displays the current set of bindings. - * - * @param stream JSON stream - * @return 200 OK - */ - @POST - @Path("mappings") - @Consumes(MediaType.APPLICATION_JSON) - public Response setMapping(InputStream stream) { - ObjectNode root = mapper().createObjectNode(); - - try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - JsonNode macID = jsonTree.get("mac"); - JsonNode ip = jsonTree.get("ip"); - if (macID != null && ip != null) { - - if (!service.setStaticMapping(MacAddress.valueOf(macID.asText()), - Ip4Address.valueOf(ip.asText()), false, Lists.newArrayList())) { - throw new IllegalArgumentException("Static Mapping Failed. The IP maybe unavailable."); - } - } - - final Map<HostId, IpAssignment> intents = service.listMapping(); - ArrayNode arrayNode = root.putArray("mappings"); - intents.entrySet().forEach(i -> arrayNode.add(mapper().createObjectNode() - .put("host", i.getKey().toString()) - .put("ip", i.getValue().ipAddress().toString()))); - } catch (IOException e) { - throw new IllegalArgumentException(e.getMessage()); - } - return ok(root.toString()).build(); - } - - /** - * Delete a static MAC/IP binding. - * Removes a static binding from the DHCP Server, and displays the current set of bindings. - * - * @param macID mac address identifier - * @return 200 OK - */ - @DELETE - @Path("mappings/{macID}") - public Response deleteMapping(@PathParam("macID") String macID) { - - ObjectNode root = mapper().createObjectNode(); - - if (!service.removeStaticMapping(MacAddress.valueOf(macID))) { - throw new IllegalArgumentException("Static Mapping Removal Failed."); - } - final Map<HostId, IpAssignment> intents = service.listMapping(); - ArrayNode arrayNode = root.putArray("mappings"); - intents.entrySet().forEach(i -> arrayNode.add(mapper().createObjectNode() - .put("host", i.getKey().toString()) - .put("ip", i.getValue().ipAddress().toString()))); - - return ok(root.toString()).build(); - } -} diff --git a/framework/src/onos/apps/dhcp/app/src/main/webapp/WEB-INF/web.xml b/framework/src/onos/apps/dhcp/app/src/main/webapp/WEB-INF/web.xml index 27504548..a53110ee 100644 --- a/framework/src/onos/apps/dhcp/app/src/main/webapp/WEB-INF/web.xml +++ b/framework/src/onos/apps/dhcp/app/src/main/webapp/WEB-INF/web.xml @@ -30,7 +30,7 @@ <init-param> <param-name>com.sun.jersey.config.property.classnames</param-name> <param-value> - org.onosproject.dhcp.rest.DHCPWebResource + org.onosproject.dhcp.rest.DhcpWebResource </param-value> </init-param> <load-on-startup>1</load-on-startup> diff --git a/framework/src/onos/apps/dhcp/app/src/test/java/org/onosproject/dhcp/impl/DhcpManagerTest.java b/framework/src/onos/apps/dhcp/app/src/test/java/org/onosproject/dhcp/impl/DhcpManagerTest.java index bb6b74cc..e9b02608 100644 --- a/framework/src/onos/apps/dhcp/app/src/test/java/org/onosproject/dhcp/impl/DhcpManagerTest.java +++ b/framework/src/onos/apps/dhcp/app/src/test/java/org/onosproject/dhcp/impl/DhcpManagerTest.java @@ -106,7 +106,7 @@ public class DhcpManagerTest { */ @Test public void testDiscover() { - Ethernet reply = constructDHCPPacket(DHCPPacketType.DHCPDISCOVER); + Ethernet reply = constructDhcpPacket(DHCPPacketType.DHCPDISCOVER); sendPacket(reply); } @@ -115,7 +115,7 @@ public class DhcpManagerTest { */ @Test public void testRequest() { - Ethernet reply = constructDHCPPacket(DHCPPacketType.DHCPREQUEST); + Ethernet reply = constructDhcpPacket(DHCPPacketType.DHCPREQUEST); sendPacket(reply); } @@ -138,7 +138,7 @@ public class DhcpManagerTest { * @param packetType DHCP Message Type * @return Ethernet packet */ - private Ethernet constructDHCPPacket(DHCPPacketType packetType) { + private Ethernet constructDhcpPacket(DHCPPacketType packetType) { // Ethernet Frame. Ethernet ethReply = new Ethernet(); diff --git a/framework/src/onos/apps/olt/src/main/java/org/onosproject/olt/OLT.java b/framework/src/onos/apps/olt/src/main/java/org/onosproject/olt/OLT.java deleted file mode 100644 index d5d7d277..00000000 --- a/framework/src/onos/apps/olt/src/main/java/org/onosproject/olt/OLT.java +++ /dev/null @@ -1,359 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.olt; - -import com.google.common.base.Strings; -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Modified; -import org.apache.felix.scr.annotations.Property; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.apache.felix.scr.annotations.Service; -import org.onlab.packet.VlanId; -import org.onlab.util.Tools; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.config.ConfigFactory; -import org.onosproject.net.config.NetworkConfigEvent; -import org.onosproject.net.config.NetworkConfigListener; -import org.onosproject.net.config.NetworkConfigRegistry; -import org.onosproject.net.config.basics.SubjectFactories; -import org.onosproject.net.device.DeviceEvent; -import org.onosproject.net.device.DeviceListener; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.osgi.service.component.ComponentContext; -import org.slf4j.Logger; - -import java.util.Dictionary; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; - -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provisions rules on access devices. - */ -@Service -@Component(immediate = true) -public class OLT implements AccessDeviceService { - private final Logger log = getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected FlowObjectiveService flowObjectiveService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DeviceService deviceService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected NetworkConfigRegistry networkConfig; - - private final DeviceListener deviceListener = new InternalDeviceListener(); - - private ApplicationId appId; - - private static final VlanId DEFAULT_VLAN = VlanId.vlanId((short) 0); - public static final int OFFSET = 200; - - public static final int UPLINK_PORT = 129; - public static final int GFAST_UPLINK_PORT = 100; - - public static final String OLT_DEVICE = "of:90e2ba82f97791e9"; - public static final String GFAST_DEVICE = "of:0011223344551357"; - - @Property(name = "uplinkPort", intValue = UPLINK_PORT, - label = "The OLT's uplink port number") - private int uplinkPort = UPLINK_PORT; - - @Property(name = "gfastUplink", intValue = GFAST_UPLINK_PORT, - label = "The OLT's uplink port number") - private int gfastUplink = GFAST_UPLINK_PORT; - - //TODO: replace this with an annotation lookup - @Property(name = "oltDevice", value = OLT_DEVICE, - label = "The OLT device id") - private String oltDevice = OLT_DEVICE; - - @Property(name = "gfastDevice", value = GFAST_DEVICE, - label = "The gfast device id") - private String gfastDevice = GFAST_DEVICE; - - private Map<DeviceId, AccessDeviceData> oltData = new ConcurrentHashMap<>(); - - private InternalNetworkConfigListener configListener = - new InternalNetworkConfigListener(); - private static final Class<AccessDeviceConfig> CONFIG_CLASS = - AccessDeviceConfig.class; - - private ConfigFactory<DeviceId, AccessDeviceConfig> configFactory = - new ConfigFactory<DeviceId, AccessDeviceConfig>( - SubjectFactories.DEVICE_SUBJECT_FACTORY, CONFIG_CLASS, "accessDevice") { - @Override - public AccessDeviceConfig createConfig() { - return new AccessDeviceConfig(); - } - }; - - @Activate - public void activate() { - appId = coreService.registerApplication("org.onosproject.olt"); - - networkConfig.registerConfigFactory(configFactory); - networkConfig.addListener(configListener); - - networkConfig.getSubjects(DeviceId.class, AccessDeviceConfig.class).forEach( - subject -> { - AccessDeviceConfig config = networkConfig.getConfig(subject, AccessDeviceConfig.class); - if (config != null) { - AccessDeviceData data = config.getOlt(); - oltData.put(data.deviceId(), data); - } - } - ); - - /*deviceService.addListener(deviceListener); - - deviceService.getPorts(DeviceId.deviceId(oltDevice)).stream().forEach( - port -> { - if (!port.number().isLogical() && port.isEnabled()) { - short vlanId = fetchVlanId(port.number()); - if (vlanId > 0) { - provisionVlanOnPort(oltDevice, uplinkPort, port.number(), (short) 7); - provisionVlanOnPort(oltDevice, uplinkPort, port.number(), vlanId); - } - } - } - );*/ - - - deviceService.getPorts(DeviceId.deviceId(gfastDevice)).stream() - .filter(port -> !port.number().isLogical()) - .filter(Port::isEnabled) - .forEach(port -> { - short vlanId = (short) (fetchVlanId(port.number()) + OFFSET); - if (vlanId > 0) { - provisionVlanOnPort(gfastDevice, gfastUplink, port.number(), vlanId); - } - } - ); - log.info("Started with Application ID {}", appId.id()); - } - - @Deactivate - public void deactivate() { - networkConfig.removeListener(configListener); - networkConfig.unregisterConfigFactory(configFactory); - log.info("Stopped"); - } - - @Modified - public void modified(ComponentContext context) { - Dictionary<?, ?> properties = context.getProperties(); - - String s = Tools.get(properties, "uplinkPort"); - uplinkPort = Strings.isNullOrEmpty(s) ? UPLINK_PORT : Integer.parseInt(s); - - s = Tools.get(properties, "oltDevice"); - oltDevice = Strings.isNullOrEmpty(s) ? OLT_DEVICE : s; - } - - private short fetchVlanId(PortNumber port) { - long p = port.toLong() + OFFSET; - if (p > 4095) { - log.warn("Port Number {} exceeds vlan max", port); - return -1; - } - return (short) p; - } - - private void provisionVlanOnPort(String deviceId, int uplinkPort, PortNumber p, short vlanId) { - DeviceId did = DeviceId.deviceId(deviceId); - - TrafficSelector upstream = DefaultTrafficSelector.builder() - .matchVlanId(VlanId.vlanId(vlanId)) - .matchInPort(p) - .build(); - - TrafficSelector downStream = DefaultTrafficSelector.builder() - .matchVlanId(VlanId.vlanId(vlanId)) - .matchInPort(PortNumber.portNumber(uplinkPort)) - .build(); - - TrafficTreatment upstreamTreatment = DefaultTrafficTreatment.builder() - .setOutput(PortNumber.portNumber(uplinkPort)) - .build(); - - TrafficTreatment downStreamTreatment = DefaultTrafficTreatment.builder() - .setOutput(p) - .build(); - - - ForwardingObjective upFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(upstream) - .fromApp(appId) - .withTreatment(upstreamTreatment) - .add(); - - ForwardingObjective downFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(downStream) - .fromApp(appId) - .withTreatment(downStreamTreatment) - .add(); - - flowObjectiveService.forward(did, upFwd); - flowObjectiveService.forward(did, downFwd); - } - - @Override - public void provisionSubscriber(ConnectPoint port, VlanId vlan) { - AccessDeviceData olt = oltData.get(port.deviceId()); - - if (olt == null) { - log.warn("No data found for OLT device {}", port.deviceId()); - return; - } - - provisionVlans(olt.deviceId(), olt.uplink(), port.port(), vlan, olt.vlan(), - olt.defaultVlan()); - } - - private void provisionVlans(DeviceId deviceId, PortNumber uplinkPort, - PortNumber subscriberPort, - VlanId subscriberVlan, VlanId deviceVlan, - Optional<VlanId> defaultVlan) { - - TrafficSelector upstream = DefaultTrafficSelector.builder() - .matchVlanId((defaultVlan.isPresent()) ? defaultVlan.get() : DEFAULT_VLAN) - .matchInPort(subscriberPort) - .build(); - - TrafficSelector downstream = DefaultTrafficSelector.builder() - .matchVlanId(deviceVlan) - .matchInPort(uplinkPort) - .build(); - - TrafficTreatment upstreamTreatment = DefaultTrafficTreatment.builder() - .setVlanId(subscriberVlan) - .pushVlan() - .setVlanId(deviceVlan) - .setOutput(uplinkPort) - .build(); - - TrafficTreatment downstreamTreatment = DefaultTrafficTreatment.builder() - .popVlan() - .setVlanId((defaultVlan.isPresent()) ? defaultVlan.get() : DEFAULT_VLAN) - .setOutput(subscriberPort) - .build(); - - - ForwardingObjective upFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(upstream) - .fromApp(appId) - .withTreatment(upstreamTreatment) - .add(); - - ForwardingObjective downFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(downstream) - .fromApp(appId) - .withTreatment(downstreamTreatment) - .add(); - - flowObjectiveService.forward(deviceId, upFwd); - flowObjectiveService.forward(deviceId, downFwd); - } - - @Override - public void removeSubscriber(ConnectPoint port) { - throw new UnsupportedOperationException("Not yet implemented"); - } - - private class InternalDeviceListener implements DeviceListener { - @Override - public void event(DeviceEvent event) { - DeviceId devId = DeviceId.deviceId(oltDevice); - switch (event.type()) { - case PORT_ADDED: - case PORT_UPDATED: - if (devId.equals(event.subject().id()) && event.port().isEnabled()) { - short vlanId = fetchVlanId(event.port().number()); - provisionVlanOnPort(gfastDevice, uplinkPort, event.port().number(), vlanId); - } - break; - case DEVICE_ADDED: - case DEVICE_UPDATED: - case DEVICE_REMOVED: - case DEVICE_SUSPENDED: - case DEVICE_AVAILABILITY_CHANGED: - case PORT_REMOVED: - case PORT_STATS_UPDATED: - default: - return; - } - } - } - - private class InternalNetworkConfigListener implements NetworkConfigListener { - @Override - public void event(NetworkConfigEvent event) { - switch (event.type()) { - - case CONFIG_ADDED: - case CONFIG_UPDATED: - if (event.configClass().equals(CONFIG_CLASS)) { - AccessDeviceConfig config = - networkConfig.getConfig((DeviceId) event.subject(), CONFIG_CLASS); - if (config != null) { - oltData.put(config.getOlt().deviceId(), config.getOlt()); - } - } - break; - case CONFIG_UNREGISTERED: - case CONFIG_REMOVED: - default: - break; - } - } - } - -} diff --git a/framework/src/onos/apps/openstackswitching/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java b/framework/src/onos/apps/openstackswitching/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java index 661a873e..f6e98060 100644 --- a/framework/src/onos/apps/openstackswitching/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java +++ b/framework/src/onos/apps/openstackswitching/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java @@ -120,7 +120,7 @@ public class OpenstackSwitchingRulePopulator { * * @param id device ID to set the rules */ - private void setFlowRuleForDHCP(DeviceId id) { + private void setFlowRuleForDhcp(DeviceId id) { TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder(); TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder(); diff --git a/framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java b/framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java index e0545023..3890bb4a 100644 --- a/framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java +++ b/framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java @@ -343,6 +343,7 @@ public class OpticalPathProvisioner { return getIntents(crossConnectPoints); } + log.warn("Unable to find multi-layer path."); return Collections.emptyList(); } @@ -392,20 +393,41 @@ public class OpticalPathProvisioner { } /** - * Verifies if given link is cross-connect between packet and optical layer. + * Verifies if given device type is in packet layer, i.e., ROADM, OTN or ROADM_OTN device. + * + * @param type device type + * @return true if in packet layer, false otherwise + */ + private boolean isPacketLayer(Device.Type type) { + return type == Device.Type.SWITCH || type == Device.Type.ROUTER; + } + + /** + * Verifies if given device type is in packet layer, i.e., switch or router device. + * + * @param type device type + * @return true if in packet layer, false otherwise + */ + private boolean isTransportLayer(Device.Type type) { + return type == Device.Type.ROADM || type == Device.Type.OTN || type == Device.Type.ROADM_OTN; + } + + /** + * Verifies if given link forms a cross-connection between packet and optical layer. * * @param link the link - * @return true if the link is a cross-connect link + * @return true if the link is a cross-connect link, false otherwise */ - public static boolean isCrossConnectLink(Link link) { + private boolean isCrossConnectLink(Link link) { if (link.type() != Link.Type.OPTICAL) { return false; } - checkNotNull(link.annotations()); - checkNotNull(link.annotations().value("optical.type")); + Device.Type src = deviceService.getDevice(link.src().deviceId()).type(); + Device.Type dst = deviceService.getDevice(link.dst().deviceId()).type(); - return link.annotations().value("optical.type").equals("cross-connect"); + return src != dst && + ((isPacketLayer(src) && isTransportLayer(dst)) || (isPacketLayer(dst) && isTransportLayer(src))); } } diff --git a/framework/src/onos/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpOpen.java b/framework/src/onos/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpOpen.java index 5b5a259e..1ccb6b6b 100644 --- a/framework/src/onos/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpOpen.java +++ b/framework/src/onos/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpOpen.java @@ -309,94 +309,104 @@ final class BgpOpen { case BgpConstants.Open.Capabilities.TYPE: // Optional Parameter Type: Capabilities if (paramLen < BgpConstants.Open.Capabilities.MIN_LENGTH) { - // ERROR: Malformed Capability - String errorMsg = "Malformed Capability Type " + paramType; + // ERROR: Malformed Param Type + String errorMsg = "Malformed Capabilities Optional " + + "Parameter Type " + paramType; throw new BgpMessage.BgpParseException(errorMsg); } - int capabEnd = message.readerIndex() + paramLen; - int capabCode = message.readUnsignedByte(); - int capabLen = message.readUnsignedByte(); - if (message.readerIndex() + capabLen > capabEnd) { - // ERROR: Malformed Capability - String errorMsg = "Malformed Capability Type " + paramType; - throw new BgpMessage.BgpParseException(errorMsg); - } - - switch (capabCode) { - case BgpConstants.Open.Capabilities.MultiprotocolExtensions.CODE: - // Multiprotocol Extensions Capabilities (RFC 4760) - if (capabLen != BgpConstants.Open.Capabilities.MultiprotocolExtensions.LENGTH) { - // ERROR: Multiprotocol Extension Length Error - String errorMsg = "Multiprotocol Extension Length Error"; + int paramEnd = message.readerIndex() + paramLen; + // Parse Capabilities + while (message.readerIndex() < paramEnd) { + if (paramEnd - message.readerIndex() < + BgpConstants.Open.Capabilities.MIN_LENGTH) { + String errorMsg = "Malformed Capabilities"; throw new BgpMessage.BgpParseException(errorMsg); } - // Decode the AFI (2 octets) and SAFI (1 octet) - int afi = message.readUnsignedShort(); - int reserved = message.readUnsignedByte(); - int safi = message.readUnsignedByte(); - log.debug("BGP RX OPEN Capability: AFI = {} SAFI = {}", - afi, safi); - // - // Setup the AFI/SAFI in the BgpSession - // - // NOTE: For now we just copy the remote AFI/SAFI setting - // to the local configuration. - // - if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV4 && - safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_UNICAST) { - bgpSession.remoteInfo().setIpv4Unicast(); - bgpSession.localInfo().setIpv4Unicast(); - } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV4 && - safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_MULTICAST) { - bgpSession.remoteInfo().setIpv4Multicast(); - bgpSession.localInfo().setIpv4Multicast(); - } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV6 && - safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_UNICAST) { - bgpSession.remoteInfo().setIpv6Unicast(); - bgpSession.localInfo().setIpv6Unicast(); - } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV6 && - safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_MULTICAST) { - bgpSession.remoteInfo().setIpv6Multicast(); - bgpSession.localInfo().setIpv6Multicast(); - } else { - log.debug("BGP RX OPEN Capability: Unknown AFI = {} SAFI = {}", - afi, safi); + int capabCode = message.readUnsignedByte(); + int capabLen = message.readUnsignedByte(); + if (message.readerIndex() + capabLen > paramEnd) { + // ERROR: Malformed Capability + String errorMsg = "Malformed Capability instance with " + + "code " + capabCode; + throw new BgpMessage.BgpParseException(errorMsg); } - break; - case BgpConstants.Open.Capabilities.As4Octet.CODE: - // Support for 4-octet AS Number Capabilities (RFC 6793) - if (capabLen != BgpConstants.Open.Capabilities.As4Octet.LENGTH) { - // ERROR: 4-octet AS Number Capability Length Error - String errorMsg = "4-octet AS Number Capability Length Error"; - throw new BgpMessage.BgpParseException(errorMsg); + switch (capabCode) { + case BgpConstants.Open.Capabilities.MultiprotocolExtensions.CODE: + // Multiprotocol Extensions Capabilities (RFC 4760) + if (capabLen != BgpConstants.Open.Capabilities.MultiprotocolExtensions.LENGTH) { + // ERROR: Multiprotocol Extension Length Error + String errorMsg = "Multiprotocol Extension Length Error"; + throw new BgpMessage.BgpParseException(errorMsg); + } + // Decode the AFI (2 octets) and SAFI (1 octet) + int afi = message.readUnsignedShort(); + int reserved = message.readUnsignedByte(); + int safi = message.readUnsignedByte(); + log.debug("BGP RX OPEN Capability: AFI = {} SAFI = {}", + afi, safi); + // + // Setup the AFI/SAFI in the BgpSession + // + // NOTE: For now we just copy the remote AFI/SAFI setting + // to the local configuration. + // + if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV4 && + safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_UNICAST) { + bgpSession.remoteInfo().setIpv4Unicast(); + bgpSession.localInfo().setIpv4Unicast(); + } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV4 && + safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_MULTICAST) { + bgpSession.remoteInfo().setIpv4Multicast(); + bgpSession.localInfo().setIpv4Multicast(); + } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV6 && + safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_UNICAST) { + bgpSession.remoteInfo().setIpv6Unicast(); + bgpSession.localInfo().setIpv6Unicast(); + } else if (afi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.AFI_IPV6 && + safi == BgpConstants.Open.Capabilities.MultiprotocolExtensions.SAFI_MULTICAST) { + bgpSession.remoteInfo().setIpv6Multicast(); + bgpSession.localInfo().setIpv6Multicast(); + } else { + log.debug("BGP RX OPEN Capability: Unknown AFI = {} SAFI = {}", + afi, safi); + } + break; + + case BgpConstants.Open.Capabilities.As4Octet.CODE: + // Support for 4-octet AS Number Capabilities (RFC 6793) + if (capabLen != BgpConstants.Open.Capabilities.As4Octet.LENGTH) { + // ERROR: 4-octet AS Number Capability Length Error + String errorMsg = "4-octet AS Number Capability Length Error"; + throw new BgpMessage.BgpParseException(errorMsg); + } + long as4Number = message.readUnsignedInt(); + + bgpSession.remoteInfo().setAs4OctetCapability(); + bgpSession.remoteInfo().setAs4Number(as4Number); + + // + // Copy remote 4-octet AS Number Capabilities and AS + // Number. This is a temporary setting until local AS + // number configuration is supported. + // + bgpSession.localInfo().setAs4OctetCapability(); + bgpSession.localInfo().setAs4Number(as4Number); + log.debug("BGP RX OPEN Capability: AS4 Number = {}", + as4Number); + break; + + default: + // Unknown Capability: ignore it + log.debug("BGP RX OPEN Capability Code = {} Length = {}", + capabCode, capabLen); + message.readBytes(capabLen); + break; } - long as4Number = message.readUnsignedInt(); - - bgpSession.remoteInfo().setAs4OctetCapability(); - bgpSession.remoteInfo().setAs4Number(as4Number); - - // - // Copy remote 4-octet AS Number Capabilities and AS - // Number. This is a temporary setting until local AS - // number configuration is supported. - // - bgpSession.localInfo().setAs4OctetCapability(); - bgpSession.localInfo().setAs4Number(as4Number); - log.debug("BGP RX OPEN Capability: AS4 Number = {}", - as4Number); - break; - - default: - // Unknown Capability: ignore it - log.debug("BGP RX OPEN Capability Code = {} Length = {}", - capabCode, capabLen); - message.readBytes(capabLen); - break; - } - break; + } + break; default: // Unknown Parameter Type: ignore it log.debug("BGP RX OPEN Parameter Type = {} Length = {}", diff --git a/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java b/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java index a3cd6875..2eb5d0f3 100644 --- a/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java +++ b/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentSynchronizer.java @@ -74,7 +74,7 @@ public class IntentSynchronizer implements IntentSynchronizationService { * @param intentService the intent service * @param executorService executor service for synchronization thread */ - IntentSynchronizer(ApplicationId appId, IntentService intentService, + public IntentSynchronizer(ApplicationId appId, IntentService intentService, ExecutorService executorService) { this.appId = appId; this.intentService = intentService; diff --git a/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentUtils.java b/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentUtils.java index 8e2a3df3..863de12a 100644 --- a/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentUtils.java +++ b/framework/src/onos/apps/sdnip/src/main/java/org/onosproject/sdnip/IntentUtils.java @@ -19,13 +19,12 @@ package org.onosproject.sdnip; import org.onosproject.net.intent.Intent; import org.onosproject.net.intent.MultiPointToSinglePointIntent; import org.onosproject.net.intent.PointToPointIntent; +import org.onosproject.net.intent.SinglePointToMultiPointIntent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Objects; -import static com.google.common.base.Preconditions.checkArgument; - /** * Utilities for dealing with intents. */ @@ -49,15 +48,24 @@ public final class IntentUtils { * @return true if the two intents represent the same value, otherwise false */ public static boolean equals(Intent one, Intent two) { - checkArgument(one.getClass() == two.getClass(), - "Intents are not the same type"); + if (one.getClass() != two.getClass()) { + return false; + } if (!(Objects.equals(one.appId(), two.appId()) && Objects.equals(one.key(), two.key()))) { return false; } - if (one instanceof MultiPointToSinglePointIntent) { + if (one instanceof SinglePointToMultiPointIntent) { + SinglePointToMultiPointIntent intent1 = (SinglePointToMultiPointIntent) one; + SinglePointToMultiPointIntent intent2 = (SinglePointToMultiPointIntent) two; + + return Objects.equals(intent1.selector(), intent2.selector()) && + Objects.equals(intent1.treatment(), intent2.treatment()) && + Objects.equals(intent1.ingressPoint(), intent2.ingressPoint()) && + Objects.equals(intent1.egressPoints(), intent2.egressPoints()); + } else if (one instanceof MultiPointToSinglePointIntent) { MultiPointToSinglePointIntent intent1 = (MultiPointToSinglePointIntent) one; MultiPointToSinglePointIntent intent2 = (MultiPointToSinglePointIntent) two; diff --git a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java index 96c85ba8..2c6412cf 100644 --- a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java +++ b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java @@ -20,10 +20,10 @@ import org.onlab.packet.Ethernet; import org.onlab.packet.Ip4Address; import org.onlab.packet.IpAddress; import org.onlab.packet.MacAddress; +import org.onlab.packet.VlanId; import org.onosproject.net.ConnectPoint; import org.onosproject.net.DeviceId; import org.onosproject.net.Host; -import org.onosproject.net.Port; import org.onosproject.net.PortNumber; import org.onosproject.net.flow.DefaultTrafficTreatment; import org.onosproject.net.flow.TrafficTreatment; @@ -60,12 +60,21 @@ public class ArpHandler { /** * Processes incoming ARP packets. + * * If it is an ARP request to router itself or known hosts, * then it sends ARP response. * If it is an ARP request to unknown hosts in its own subnet, * then it flood the ARP request to the ports. * If it is an ARP response, then set a flow rule for the host * and forward any IP packets to the host in the packet buffer to the host. + * <p> + * Note: We handles all ARP packet in, even for those ARP packets between + * hosts in the same subnet. + * For an ARP packet with broadcast destination MAC, + * some switches pipelines will send it to the controller due to table miss, + * other swithches will flood the packets directly in the data plane without + * packet in. + * We can deal with both cases. * * @param pkt incoming packet */ @@ -86,29 +95,56 @@ public class ArpHandler { if (arp.getOpCode() == ARP.OP_REQUEST) { handleArpRequest(deviceId, connectPoint, ethernet); } else { - srManager.ipHandler.forwardPackets(deviceId, hostIpAddress); + handleArpReply(deviceId, connectPoint, ethernet); } } private void handleArpRequest(DeviceId deviceId, ConnectPoint inPort, Ethernet payload) { ARP arpRequest = (ARP) payload.getPayload(); + VlanId vlanId = VlanId.vlanId(payload.getVlanID()); HostId targetHostId = HostId.hostId(MacAddress.valueOf( - arpRequest.getTargetHardwareAddress())); + arpRequest.getTargetHardwareAddress()), + vlanId); - // ARP request for router + // ARP request for router. Send ARP reply. if (isArpReqForRouter(deviceId, arpRequest)) { Ip4Address targetAddress = Ip4Address.valueOf(arpRequest.getTargetProtocolAddress()); - - sendArpResponse(arpRequest, config.getRouterMacForAGatewayIp(targetAddress)); + sendArpResponse(arpRequest, config.getRouterMacForAGatewayIp(targetAddress), vlanId); } else { Host targetHost = srManager.hostService.getHost(targetHostId); - // ARP request for known hosts + // ARP request for known hosts. Send proxy ARP reply on behalf of the target. if (targetHost != null) { - sendArpResponse(arpRequest, targetHost.mac()); + removeVlanAndForward(payload, targetHost.location()); + // ARP request for unknown host in the subnet. Flood in the subnet. + } else { + removeVlanAndFlood(payload, inPort); + } + } + } - // ARP request for unknown host in the subnet - } else if (isArpReqForSubnet(deviceId, arpRequest)) { - flood(payload, inPort); + private void handleArpReply(DeviceId deviceId, ConnectPoint inPort, Ethernet payload) { + ARP arpReply = (ARP) payload.getPayload(); + VlanId vlanId = VlanId.vlanId(payload.getVlanID()); + HostId targetHostId = HostId.hostId(MacAddress.valueOf( + arpReply.getTargetHardwareAddress()), + vlanId); + + // ARP reply for router. Process all pending IP packets. + if (isArpReqForRouter(deviceId, arpReply)) { + Ip4Address hostIpAddress = Ip4Address.valueOf(arpReply.getSenderProtocolAddress()); + srManager.ipHandler.forwardPackets(deviceId, hostIpAddress); + } else { + Host targetHost = srManager.hostService.getHost(targetHostId); + // ARP reply for known hosts. Forward to the host. + if (targetHost != null) { + removeVlanAndForward(payload, targetHost.location()); + // ARP reply for unknown host, Flood in the subnet. + } else { + // Don't flood to non-edge ports + if (vlanId.equals(VlanId.vlanId(srManager.ASSIGNED_VLAN_NO_SUBNET))) { + return; + } + removeVlanAndFlood(payload, inPort); } } } @@ -126,14 +162,6 @@ public class ArpHandler { return false; } - private boolean isArpReqForSubnet(DeviceId deviceId, ARP arpRequest) { - return config.getSubnets(deviceId).stream() - .anyMatch((prefix)-> - prefix.contains(Ip4Address. - valueOf(arpRequest. - getTargetProtocolAddress()))); - } - /** * Sends an APR request for the target IP address to all ports except in-port. * @@ -170,11 +198,10 @@ public class ArpHandler { .setSourceMACAddress(senderMacAddress) .setEtherType(Ethernet.TYPE_ARP).setPayload(arpRequest); - flood(eth, inPort); + removeVlanAndFlood(eth, inPort); } - private void sendArpResponse(ARP arpRequest, MacAddress targetMac) { - + private void sendArpResponse(ARP arpRequest, MacAddress targetMac, VlanId vlanId) { ARP arpReply = new ARP(); arpReply.setHardwareType(ARP.HW_TYPE_ETHERNET) .setProtocolType(ARP.PROTO_TYPE_IP) @@ -193,8 +220,9 @@ public class ArpHandler { .setEtherType(Ethernet.TYPE_ARP).setPayload(arpReply); - HostId dstId = HostId.hostId(MacAddress.valueOf( - arpReply.getTargetHardwareAddress())); + HostId dstId = HostId.hostId( + MacAddress.valueOf(arpReply.getTargetHardwareAddress()), + vlanId); Host dst = srManager.hostService.getHost(dstId); if (dst == null) { log.warn("Cannot send ARP response to unknown device"); @@ -209,19 +237,51 @@ public class ArpHandler { srManager.packetService.emit(packet); } - private void flood(Ethernet request, ConnectPoint inPort) { - TrafficTreatment.Builder builder; - ByteBuffer buf = ByteBuffer.wrap(request.serialize()); - - for (Port port: srManager.deviceService.getPorts(inPort.deviceId())) { - if (!port.number().equals(inPort.port()) && - port.number().toLong() > 0) { - builder = DefaultTrafficTreatment.builder(); - builder.setOutput(port.number()); - srManager.packetService.emit(new DefaultOutboundPacket(inPort.deviceId(), - builder.build(), buf)); + /** + * Remove VLAN tag and flood to all ports in the same subnet. + * + * @param packet packet to be flooded + * @param inPort where the packet comes from + */ + private void removeVlanAndFlood(Ethernet packet, ConnectPoint inPort) { + Ip4Address targetProtocolAddress = Ip4Address.valueOf( + ((ARP) packet.getPayload()).getTargetProtocolAddress() + ); + + srManager.deviceConfiguration.getSubnetPortsMap(inPort.deviceId()).forEach((subnet, ports) -> { + if (subnet.contains(targetProtocolAddress)) { + ports.stream() + .filter(port -> port != inPort.port()) + .forEach(port -> { + removeVlanAndForward(packet, new ConnectPoint(inPort.deviceId(), port)); + }); } - } + }); } + /** + * Remove VLAN tag and packet out to given port. + * + * Note: In current implementation, we expect all communication with + * end hosts within a subnet to be untagged. + * <p> + * For those pipelines that internally assigns a VLAN, the VLAN tag will be + * removed before egress. + * <p> + * For those pipelines that do not assign internal VLAN, the packet remains + * untagged. + * + * @param packet packet to be forwarded + * @param outPort where the packet should be forwarded + */ + private void removeVlanAndForward(Ethernet packet, ConnectPoint outPort) { + packet.setEtherType(Ethernet.TYPE_ARP); + packet.setVlanID(Ethernet.VLAN_UNTAGGED); + ByteBuffer buf = ByteBuffer.wrap(packet.serialize()); + + TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); + tbuilder.setOutput(outPort.port()); + srManager.packetService.emit(new DefaultOutboundPacket(outPort.deviceId(), + tbuilder.build(), buf)); + } } diff --git a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java index c4267ebb..eb3b3fd5 100644 --- a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java +++ b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java @@ -105,8 +105,17 @@ public class IcmpHandler { } } + /** + * Sends an ICMP reply message. + * + * Note: we assume that packets sending from the edge switches to the hosts + * have untagged VLAN. + * @param icmpRequest the original ICMP request + * @param outport the output port where the ICMP reply should be sent to + */ private void sendICMPResponse(Ethernet icmpRequest, ConnectPoint outport) { - + // Note: We assume that packets arrive at the edge switches have + // untagged VLAN. Ethernet icmpReplyEth = new Ethernet(); IPv4 icmpRequestIpv4 = (IPv4) icmpRequest.getPayload(); @@ -129,7 +138,6 @@ public class IcmpHandler { icmpReplyEth.setEtherType(Ethernet.TYPE_IPV4); icmpReplyEth.setDestinationMACAddress(icmpRequest.getSourceMACAddress()); icmpReplyEth.setSourceMACAddress(icmpRequest.getDestinationMACAddress()); - icmpReplyEth.setVlanID(icmpRequest.getVlanID()); Ip4Address destIpAddress = Ip4Address.valueOf(icmpReplyIpv4.getDestinationAddress()); Ip4Address destRouterAddress = config.getRouterIpAddressForASubnetHost(destIpAddress); diff --git a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java index f8274038..bc3ce8c6 100644 --- a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java +++ b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java @@ -55,7 +55,6 @@ import java.util.concurrent.atomic.AtomicLong; import static com.google.common.base.Preconditions.checkNotNull; public class RoutingRulePopulator { - private static final Logger log = LoggerFactory .getLogger(RoutingRulePopulator.class); @@ -105,13 +104,45 @@ public class RoutingRulePopulator { */ public void populateIpRuleForHost(DeviceId deviceId, Ip4Address hostIp, MacAddress hostMac, PortNumber outPort) { - MacAddress deviceMac; + log.debug("Populate IP table entry for host {} at {}:{}", + hostIp, deviceId, outPort); + ForwardingObjective.Builder fwdBuilder; try { - deviceMac = config.getDeviceMac(deviceId); + fwdBuilder = getForwardingObjectiveBuilder( + deviceId, hostIp, hostMac, outPort); } catch (DeviceConfigNotFoundException e) { log.warn(e.getMessage() + " Aborting populateIpRuleForHost."); return; } + srManager.flowObjectiveService. + forward(deviceId, fwdBuilder.add(new SRObjectiveContext(deviceId, + SRObjectiveContext.ObjectiveType.FORWARDING))); + rulePopulationCounter.incrementAndGet(); + } + + public void revokeIpRuleForHost(DeviceId deviceId, Ip4Address hostIp, + MacAddress hostMac, PortNumber outPort) { + log.debug("Revoke IP table entry for host {} at {}:{}", + hostIp, deviceId, outPort); + ForwardingObjective.Builder fwdBuilder; + try { + fwdBuilder = getForwardingObjectiveBuilder( + deviceId, hostIp, hostMac, outPort); + } catch (DeviceConfigNotFoundException e) { + log.warn(e.getMessage() + " Aborting revokeIpRuleForHost."); + return; + } + srManager.flowObjectiveService. + forward(deviceId, fwdBuilder.remove(new SRObjectiveContext(deviceId, + SRObjectiveContext.ObjectiveType.FORWARDING))); + } + + private ForwardingObjective.Builder getForwardingObjectiveBuilder( + DeviceId deviceId, Ip4Address hostIp, + MacAddress hostMac, PortNumber outPort) + throws DeviceConfigNotFoundException { + MacAddress deviceMac; + deviceMac = config.getDeviceMac(deviceId); TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder(); TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); @@ -127,19 +158,10 @@ public class RoutingRulePopulator { TrafficTreatment treatment = tbuilder.build(); TrafficSelector selector = sbuilder.build(); - ForwardingObjective.Builder fwdBuilder = DefaultForwardingObjective - .builder().fromApp(srManager.appId).makePermanent() + return DefaultForwardingObjective.builder() + .fromApp(srManager.appId).makePermanent() .withSelector(selector).withTreatment(treatment) .withPriority(100).withFlag(ForwardingObjective.Flag.SPECIFIC); - - log.debug("Installing IPv4 forwarding objective " - + "for host {} in switch {}", hostIp, deviceId); - srManager.flowObjectiveService. - forward(deviceId, - fwdBuilder. - add(new SRObjectiveContext(deviceId, - SRObjectiveContext.ObjectiveType.FORWARDING))); - rulePopulationCounter.incrementAndGet(); } /** @@ -186,26 +208,25 @@ public class RoutingRulePopulator { } TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder(); - TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); - sbuilder.matchIPDst(ipPrefix); sbuilder.matchEthType(Ethernet.TYPE_IPV4); + TrafficSelector selector = sbuilder.build(); - NeighborSet ns = null; + TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); + NeighborSet ns; + TrafficTreatment treatment; // If the next hop is the same as the final destination, then MPLS label // is not set. if (nextHops.size() == 1 && nextHops.toArray()[0].equals(destSw)) { - tbuilder.deferred().decNwTtl(); + tbuilder.immediate().decNwTtl(); ns = new NeighborSet(nextHops); + treatment = tbuilder.build(); } else { - tbuilder.deferred().copyTtlOut(); ns = new NeighborSet(nextHops, segmentId); + treatment = null; } - TrafficTreatment treatment = tbuilder.build(); - TrafficSelector selector = sbuilder.build(); - if (srManager.getNextObjectiveId(deviceId, ns) <= 0) { log.warn("No next objective in {} for ns: {}", deviceId, ns); return false; @@ -216,10 +237,12 @@ public class RoutingRulePopulator { .fromApp(srManager.appId) .makePermanent() .nextStep(srManager.getNextObjectiveId(deviceId, ns)) - .withTreatment(treatment) .withSelector(selector) .withPriority(100) .withFlag(ForwardingObjective.Flag.SPECIFIC); + if (treatment != null) { + fwdBuilder.withTreatment(treatment); + } log.debug("Installing IPv4 forwarding objective " + "for router IP/subnet {} in switch {}", ipPrefix, @@ -423,8 +446,6 @@ public class RoutingRulePopulator { ? VlanId.vlanId(SegmentRoutingManager.ASSIGNED_VLAN_NO_SUBNET) : srManager.getSubnetAssignedVlanId(deviceId, portSubnet); - - FilteringObjective.Builder fob = DefaultFilteringObjective.builder(); fob.withKey(Criteria.matchInPort(port.number())) .addCondition(Criteria.matchEthDst(deviceMac)) @@ -469,14 +490,14 @@ public class RoutingRulePopulator { Set<Ip4Address> allIps = new HashSet<Ip4Address>(config.getPortIPs(deviceId)); allIps.add(routerIp); for (Ip4Address ipaddr : allIps) { - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - selector.matchEthType(Ethernet.TYPE_IPV4); - selector.matchIPDst(IpPrefix.valueOf(ipaddr, + TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder(); + TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); + sbuilder.matchEthType(Ethernet.TYPE_IPV4); + sbuilder.matchIPDst(IpPrefix.valueOf(ipaddr, IpPrefix.MAX_INET_MASK_LENGTH)); - treatment.setOutput(PortNumber.CONTROLLER); - puntIp.withSelector(selector.build()); - puntIp.withTreatment(treatment.build()); + tbuilder.setOutput(PortNumber.CONTROLLER); + puntIp.withSelector(sbuilder.build()); + puntIp.withTreatment(tbuilder.build()); puntIp.withFlag(Flag.VERSATILE) .withPriority(HIGHEST_PRIORITY) .makePermanent() @@ -489,6 +510,48 @@ public class RoutingRulePopulator { } } + /** + * Populates a forwarding objective to send packets that miss other high + * priority Bridging Table entries to a group that contains all ports of + * its subnet. + * + * Note: We assume that packets sending from the edge switches to the hosts + * have untagged VLAN. + * The VLAN tag will be popped later in the flooding group. + * + * @param deviceId switch ID to set the rules + */ + public void populateSubnetBroadcastRule(DeviceId deviceId) { + config.getSubnets(deviceId).forEach(subnet -> { + int nextId = srManager.getSubnetNextObjectiveId(deviceId, subnet); + VlanId vlanId = srManager.getSubnetAssignedVlanId(deviceId, subnet); + + /* Driver should treat objective with MacAddress.NONE as the + * subnet broadcast rule + */ + TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder(); + sbuilder.matchVlanId(vlanId); + sbuilder.matchEthDst(MacAddress.NONE); + + ForwardingObjective.Builder fob = DefaultForwardingObjective.builder(); + fob.withFlag(Flag.SPECIFIC) + .withSelector(sbuilder.build()) + .nextStep(nextId) + .withPriority(5) + .fromApp(srManager.appId) + .makePermanent(); + + srManager.flowObjectiveService.forward( + deviceId, + fob.add(new SRObjectiveContext( + deviceId, + SRObjectiveContext.ObjectiveType.FORWARDING) + ) + ); + }); + } + + private PortNumber selectOnePort(DeviceId srcId, Set<DeviceId> destIds) { Set<Link> links = srManager.linkService.getDeviceLinks(srcId); diff --git a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java index 787f9347..84fe5168 100644 --- a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java +++ b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java @@ -22,6 +22,7 @@ import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.ReferenceCardinality; import org.apache.felix.scr.annotations.Service; import org.onlab.packet.Ethernet; +import org.onlab.packet.MacAddress; import org.onlab.packet.VlanId; import org.onlab.packet.IPv4; import org.onlab.packet.Ip4Address; @@ -33,11 +34,23 @@ import org.onosproject.core.ApplicationId; import org.onosproject.core.CoreService; import org.onosproject.event.Event; import org.onosproject.net.ConnectPoint; +import org.onosproject.net.PortNumber; import org.onosproject.net.config.ConfigFactory; import org.onosproject.net.config.NetworkConfigEvent; import org.onosproject.net.config.NetworkConfigRegistry; import org.onosproject.net.config.NetworkConfigListener; import org.onosproject.net.config.basics.SubjectFactories; +import org.onosproject.net.flow.DefaultTrafficSelector; +import org.onosproject.net.flow.DefaultTrafficTreatment; +import org.onosproject.net.flow.TrafficSelector; +import org.onosproject.net.flow.TrafficTreatment; +import org.onosproject.net.flowobjective.DefaultForwardingObjective; +import org.onosproject.net.flowobjective.ForwardingObjective; +import org.onosproject.net.flowobjective.Objective; +import org.onosproject.net.flowobjective.ObjectiveContext; +import org.onosproject.net.flowobjective.ObjectiveError; +import org.onosproject.net.host.HostEvent; +import org.onosproject.net.host.HostListener; import org.onosproject.segmentrouting.config.DeviceConfigNotFoundException; import org.onosproject.segmentrouting.config.DeviceConfiguration; import org.onosproject.segmentrouting.config.SegmentRoutingConfig; @@ -139,11 +152,13 @@ public class SegmentRoutingManager implements SegmentRoutingService { private static ScheduledFuture<?> eventHandlerFuture = null; private ConcurrentLinkedQueue<Event> eventQueue = new ConcurrentLinkedQueue<Event>(); - private Map<DeviceId, DefaultGroupHandler> groupHandlerMap = new ConcurrentHashMap<DeviceId, DefaultGroupHandler>(); + private Map<DeviceId, DefaultGroupHandler> groupHandlerMap = + new ConcurrentHashMap<DeviceId, DefaultGroupHandler>(); // Per device next objective ID store with (device id + neighbor set) as key - private EventuallyConsistentMap<NeighborSetNextObjectiveStoreKey, - Integer> nsNextObjStore = null; - private EventuallyConsistentMap<SubnetNextObjectiveStoreKey, Integer> subnetNextObjStore = null; + private EventuallyConsistentMap<NeighborSetNextObjectiveStoreKey, Integer> + nsNextObjStore = null; + private EventuallyConsistentMap<SubnetNextObjectiveStoreKey, Integer> + subnetNextObjStore = null; private EventuallyConsistentMap<String, Tunnel> tunnelStore = null; private EventuallyConsistentMap<String, Policy> policyStore = null; // Per device, per-subnet assigned-vlans store, with (device id + subnet @@ -170,6 +185,8 @@ public class SegmentRoutingManager implements SegmentRoutingService { } }; + private final HostListener hostListener = new InternalHostListener(); + private Object threadSchedulerLock = new Object(); private static int numOfEventsQueued = 0; private static int numOfEventsExecuted = 0; @@ -259,6 +276,8 @@ public class SegmentRoutingManager implements SegmentRoutingService { cfgService.addListener(cfgListener); cfgService.registerConfigFactory(cfgFactory); + hostService.addListener(hostListener); + processor = new InternalPacketProcessor(); linkListener = new InternalLinkListener(); deviceListener = new InternalDeviceListener(); @@ -637,6 +656,7 @@ public class SegmentRoutingManager implements SegmentRoutingService { if (mastershipService.isLocalMaster(device.id())) { DefaultGroupHandler groupHandler = groupHandlerMap.get(device.id()); groupHandler.createGroupsFromSubnetConfig(); + routingRulePopulator.populateSubnetBroadcastRule(device.id()); } } @@ -703,6 +723,7 @@ public class SegmentRoutingManager implements SegmentRoutingService { if (mastershipService.isLocalMaster(device.id())) { DefaultGroupHandler groupHandler = groupHandlerMap.get(device.id()); groupHandler.createGroupsFromSubnetConfig(); + routingRulePopulator.populateSubnetBroadcastRule(device.id()); } } @@ -723,4 +744,205 @@ public class SegmentRoutingManager implements SegmentRoutingService { } } } + + private class InternalHostListener implements HostListener { + private ForwardingObjective.Builder getForwardingObjectiveBuilder( + MacAddress mac, VlanId vlanId, PortNumber port) { + TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder(); + sbuilder.matchEthDst(mac); + sbuilder.matchVlanId(vlanId); + + TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder(); + // TODO Move popVlan from flow action to group action + tbuilder.immediate().popVlan(); + tbuilder.immediate().setOutput(port); + + return DefaultForwardingObjective.builder() + .withFlag(ForwardingObjective.Flag.SPECIFIC) + .withSelector(sbuilder.build()) + .withTreatment(tbuilder.build()) + .withPriority(100) + .fromApp(appId) + .makePermanent(); + } + + private void processHostAddedEvent(HostEvent event) { + MacAddress mac = event.subject().mac(); + VlanId vlanId = event.subject().vlan(); + DeviceId deviceId = event.subject().location().deviceId(); + PortNumber port = event.subject().location().port(); + Set<IpAddress> ips = event.subject().ipAddresses(); + log.debug("Host {}/{} is added at {}:{}", mac, vlanId, deviceId, port); + + // TODO Move bridging table population to a separate class + // Populate bridging table entry + ForwardingObjective.Builder fob = + getForwardingObjectiveBuilder(mac, vlanId, port); + flowObjectiveService.forward(deviceId, fob.add( + new BridgingTableObjectiveContext(mac, vlanId) + )); + + // Populate IP table entry + ips.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.populateIpRuleForHost( + deviceId, ip.getIp4Address(), mac, port); + } + }); + } + + private void processHostRemoveEvent(HostEvent event) { + MacAddress mac = event.subject().mac(); + VlanId vlanId = event.subject().vlan(); + DeviceId deviceId = event.subject().location().deviceId(); + PortNumber port = event.subject().location().port(); + Set<IpAddress> ips = event.subject().ipAddresses(); + log.debug("Host {}/{} is removed from {}:{}", mac, vlanId, deviceId, port); + + // Revoke bridging table entry + ForwardingObjective.Builder fob = + getForwardingObjectiveBuilder(mac, vlanId, port); + flowObjectiveService.forward(deviceId, fob.remove( + new BridgingTableObjectiveContext(mac, vlanId) + )); + + // Revoke IP table entry + ips.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.revokeIpRuleForHost( + deviceId, ip.getIp4Address(), mac, port); + } + }); + } + + private void processHostMovedEvent(HostEvent event) { + MacAddress mac = event.subject().mac(); + VlanId vlanId = event.subject().vlan(); + DeviceId prevDeviceId = event.prevSubject().location().deviceId(); + PortNumber prevPort = event.prevSubject().location().port(); + Set<IpAddress> prevIps = event.prevSubject().ipAddresses(); + DeviceId newDeviceId = event.subject().location().deviceId(); + PortNumber newPort = event.subject().location().port(); + Set<IpAddress> newIps = event.subject().ipAddresses(); + log.debug("Host {}/{} is moved from {}:{} to {}:{}", + mac, vlanId, prevDeviceId, prevPort, newDeviceId, newPort); + + // Revoke previous bridging table entry + ForwardingObjective.Builder prevFob = + getForwardingObjectiveBuilder(mac, vlanId, prevPort); + flowObjectiveService.forward(prevDeviceId, prevFob.remove( + new BridgingTableObjectiveContext(mac, vlanId) + )); + + // Revoke previous IP table entry + prevIps.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.revokeIpRuleForHost( + prevDeviceId, ip.getIp4Address(), mac, prevPort); + } + }); + + // Populate new bridging table entry + ForwardingObjective.Builder newFob = + getForwardingObjectiveBuilder(mac, vlanId, prevPort); + flowObjectiveService.forward(newDeviceId, newFob.add( + new BridgingTableObjectiveContext(mac, vlanId) + )); + + // Populate new IP table entry + newIps.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.populateIpRuleForHost( + newDeviceId, ip.getIp4Address(), mac, newPort); + } + }); + } + + private void processHostUpdatedEvent(HostEvent event) { + MacAddress mac = event.subject().mac(); + VlanId vlanId = event.subject().vlan(); + DeviceId prevDeviceId = event.prevSubject().location().deviceId(); + PortNumber prevPort = event.prevSubject().location().port(); + Set<IpAddress> prevIps = event.prevSubject().ipAddresses(); + DeviceId newDeviceId = event.subject().location().deviceId(); + PortNumber newPort = event.subject().location().port(); + Set<IpAddress> newIps = event.subject().ipAddresses(); + log.debug("Host {}/{} is updated", mac, vlanId); + + // Revoke previous IP table entry + prevIps.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.revokeIpRuleForHost( + prevDeviceId, ip.getIp4Address(), mac, prevPort); + } + }); + + // Populate new IP table entry + newIps.forEach(ip -> { + if (ip.isIp4()) { + routingRulePopulator.populateIpRuleForHost( + newDeviceId, ip.getIp4Address(), mac, newPort); + } + }); + } + + @Override + public void event(HostEvent event) { + // Do not proceed without mastership + DeviceId deviceId = event.subject().location().deviceId(); + if (!mastershipService.isLocalMaster(deviceId)) { + return; + } + + switch (event.type()) { + case HOST_ADDED: + processHostAddedEvent(event); + break; + case HOST_MOVED: + processHostMovedEvent(event); + break; + case HOST_REMOVED: + processHostRemoveEvent(event); + break; + case HOST_UPDATED: + processHostUpdatedEvent(event); + break; + default: + log.warn("Unsupported host event type: {}", event.type()); + break; + } + } + } + + private static class BridgingTableObjectiveContext implements ObjectiveContext { + final MacAddress mac; + final VlanId vlanId; + + BridgingTableObjectiveContext(MacAddress mac, VlanId vlanId) { + this.mac = mac; + this.vlanId = vlanId; + } + + @Override + public void onSuccess(Objective objective) { + if (objective.op() == Objective.Operation.ADD) { + log.debug("Successfully populate bridging table entry for {}/{}", + mac, vlanId); + } else { + log.debug("Successfully revoke bridging table entry for {}/{}", + mac, vlanId); + } + } + + @Override + public void onError(Objective objective, ObjectiveError error) { + if (objective.op() == Objective.Operation.ADD) { + log.debug("Fail to populate bridging table entry for {}/{}. {}", + mac, vlanId, error); + } else { + log.debug("Fail to revoke bridging table entry for {}/{}. {}", + mac, vlanId, error); + } + } + } } diff --git a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java index 55b556eb..b394db5e 100644 --- a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java +++ b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java @@ -224,8 +224,8 @@ public class DefaultGroupHandler { .setEthSrc(nodeMacAddr); if (ns.getEdgeLabel() != NeighborSet.NO_EDGE_LABEL) { tBuilder.pushMpls() - .setMpls(MplsLabel. - mplsLabel(ns.getEdgeLabel())); + .copyTtlOut() + .setMpls(MplsLabel.mplsLabel(ns.getEdgeLabel())); } Integer nextId = nsNextObjStore. @@ -292,8 +292,9 @@ public class DefaultGroupHandler { .setEthDst(dstMac) .setEthSrc(nodeMacAddr); if (ns.getEdgeLabel() != NeighborSet.NO_EDGE_LABEL) { - tBuilder.pushMpls().setMpls(MplsLabel.mplsLabel(ns - .getEdgeLabel())); + tBuilder.pushMpls() + .copyTtlOut() + .setMpls(MplsLabel.mplsLabel(ns.getEdgeLabel())); } Integer nextId = nsNextObjStore. @@ -536,8 +537,9 @@ public class DefaultGroupHandler { .setEthDst(deviceMac) .setEthSrc(nodeMacAddr); if (ns.getEdgeLabel() != NeighborSet.NO_EDGE_LABEL) { - tBuilder.pushMpls().setMpls(MplsLabel.mplsLabel(ns - .getEdgeLabel())); + tBuilder.pushMpls() + .copyTtlOut() + .setMpls(MplsLabel.mplsLabel(ns.getEdgeLabel())); } nextObjBuilder.addTreatment(tBuilder.build()); } diff --git a/framework/src/onos/apps/vtn/pom.xml b/framework/src/onos/apps/vtn/pom.xml index e8387cb7..a42f91a0 100644 --- a/framework/src/onos/apps/vtn/pom.xml +++ b/framework/src/onos/apps/vtn/pom.xml @@ -32,13 +32,14 @@ <description>ONOS framework applications</description> <modules> + <module>sfcmgr</module> <module>vtnrsc</module> <module>vtnmgr</module> <module>vtnweb</module> <module>app</module> - </modules> - <dependencies> - <dependency> + </modules> + <dependencies> + <dependency> <groupId>org.onosproject</groupId> <artifactId>onlab-junit</artifactId> <scope>test</scope> @@ -53,5 +54,25 @@ <artifactId>easymock</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.onosproject</groupId> + <artifactId>onlab-osgi</artifactId> + <classifier>tests</classifier> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.sun.jersey</groupId> + <artifactId>jersey-servlet</artifactId> + </dependency> + <dependency> + <groupId>com.sun.jersey.jersey-test-framework</groupId> + <artifactId>jersey-test-framework-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.sun.jersey.jersey-test-framework</groupId> + <artifactId>jersey-test-framework-grizzly2</artifactId> + <scope>test</scope> + </dependency> </dependencies> </project> diff --git a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/SfcService.java b/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/SfcService.java deleted file mode 100644 index a2748f5e..00000000 --- a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/SfcService.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc; - -import org.onosproject.vtnrsc.PortChain; - -/** - * SFC application that applies flows to the device. - */ -public interface SfcService { - /** - * Applies flow classification to OVS. - * - * @param portChain Port-Chain. - */ - void InstallFlowClassification(PortChain portChain); - - - /** - * Remove flow classification from OVS. - * - * @param portChain Port-Chain. - */ - void UnInstallFlowClassification(PortChain portChain); - - /** - * Applies Service Function chain to OVS. - * - * @param portChain Port-Chain. - */ - void InstallServiceFunctionChain(PortChain portChain); - - /** - * Remove Service Function chain from OVS. - * - * @param portChain Port-Chain. - */ - void UnInstallServiceFunctionChain(PortChain portChain); -} diff --git a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/SfcManager.java b/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/SfcManager.java deleted file mode 100644 index 1872295f..00000000 --- a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/SfcManager.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.impl; - -import static org.slf4j.LoggerFactory.getLogger; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Service; -import org.onosproject.vtnrsc.sfc.PortChain; -import org.slf4j.Logger; - -/** - * Provides implementation of SFC Service. - */ -@Component(immediate = true) -@Service -public class SfcManager implements SfcService { - - private final Logger log = getLogger(SfcManager.class); - - @Activate - public void activate() { - log.info("Started"); - } - - @Deactivate - public void deactivate() { - log.info("Stopped"); - } - - @Override - public void InstallFlowClassification(PortChain portChain) { - log.debug("InstallFlowClassification"); - //TODO: Installation of flow classification into OVS. - } - - @Override - public void UnInstallFlowClassification(PortChain portChain) { - log.debug("UnInstallFlowClassification"); - //TODO: Un-installation flow classification from OVS - } - - @Override - public void InstallServiceFunctionChain(PortChain portChain) { - log.debug("InstallServiceFunctionChain"); - //TODO: Installation of Service Function chain into OVS. - } - - @Override - public void UnInstallServiceFunctionChain(PortChain portChain) { - log.debug("UnInstallServiceFunctionChain"); - //TODO: Un-installation of Service Function chain from OVS. - } -} diff --git a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/package-info.java b/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/package-info.java deleted file mode 100644 index 0dba868c..00000000 --- a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * SFC Service manager for interacting with SFC. - */ -package org.onosproject.sfc.impl; diff --git a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/package-info.java b/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/package-info.java deleted file mode 100644 index 1dcb9929..00000000 --- a/framework/src/onos/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with SFC. - */ -package org.onosproject.sfc; diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/VTNService.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/VTNService.java deleted file mode 100644 index a20f852b..00000000 --- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/VTNService.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn; - -import org.onosproject.net.Device; -import org.onosproject.net.Host; - -/** - * VTN application that applies configuration and flows to the device. - */ -public interface VTNService { - - /** - * Creates a vxlan tunnel and creates the ovs when a ovs controller node is detected. - * - * @param device controller-type device - */ - void onServerDetected(Device device); - - /** - * Drops a vxlan tunnel and drops the ovs when a ovs controller node is vanished. - * - * @param device controller-type device - */ - void onServerVanished(Device device); - - /** - * Applies default forwarding flows when a ovs is detected. - * - * @param device switch-type device - */ - void onOvsDetected(Device device); - - /** - * Remove default forwarding flows when a ovs is vanished. - * - * @param device switch-type device - */ - void onOvsVanished(Device device); - - /** - * Applies multicast flows and tunnel flows when a VM is detected. - * - * @param host a VM - */ - void onHostDetected(Host host); - - /** - * Remove multicast flows and tunnel flows when a VM is vanished. - * - * @param host a VM - */ - void onHostVanished(Host host); - -} diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/VTNManager.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/VTNManager.java deleted file mode 100644 index 090ef0f1..00000000 --- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/VTNManager.java +++ /dev/null @@ -1,672 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.impl; - -import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; -import static org.onlab.util.Tools.groupedThreads; -import static org.slf4j.LoggerFactory.getLogger; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.concurrent.ScheduledExecutorService; -import java.util.stream.Collectors; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.apache.felix.scr.annotations.Service; -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.behaviour.BridgeConfig; -import org.onosproject.net.behaviour.BridgeDescription; -import org.onosproject.net.behaviour.BridgeName; -import org.onosproject.net.behaviour.DefaultTunnelDescription; -import org.onosproject.net.behaviour.IpTunnelEndPoint; -import org.onosproject.net.behaviour.Pipeliner; -import org.onosproject.net.behaviour.PipelinerContext; -import org.onosproject.net.behaviour.TunnelConfig; -import org.onosproject.net.behaviour.TunnelDescription; -import org.onosproject.net.behaviour.TunnelEndPoint; -import org.onosproject.net.device.DeviceEvent; -import org.onosproject.net.device.DeviceListener; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.driver.DefaultDriverData; -import org.onosproject.net.driver.Driver; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.driver.DriverService; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.FlowRuleService; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.criteria.Criteria; -import org.onosproject.net.flow.instructions.Instructions; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.FlowObjectiveStore; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.ForwardingObjective.Flag; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.net.host.HostEvent; -import org.onosproject.net.host.HostListener; -import org.onosproject.net.host.HostService; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtn.VTNService; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.slf4j.Logger; - -import com.google.common.collect.Sets; - -/** - * Provides implementation of VTNService. - */ -@Component(immediate = true) -@Service -public class VTNManager implements VTNService { - private final Logger log = getLogger(getClass()); - - private static final String APP_ID = "org.onosproject.app.vtn"; - private ScheduledExecutorService backgroundService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DeviceService deviceService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected HostService hostService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected FlowRuleService flowRuleService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CoreService coreService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected StorageService storageService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected TenantNetworkService tenantNetworkService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected VirtualPortService virtualPortService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DriverService driverService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected FlowObjectiveService flowObjectiveService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected FlowObjectiveStore flowObjectiveStore; - protected ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - private EventuallyConsistentMap<HostId, SegmentationId> binding; - private ApplicationId appId; - private HostListener hostListener = new InnerHostListener(); - private DeviceListener deviceListener = new InnerDeviceListener(); - private static final String IFACEID = "ifaceid"; - private static final String PORT_HEAD = "vxlan"; - private static final String DEFAULT_BRIDGE_NAME = "br-int"; - private static final String CONTROLLER_IP_KEY = "ipaddress"; - private static final int DEFAULT_MAC_PRIORITY = 0x0000; - private static final int MAC_PRIORITY = 0xffff; - private static final int DEFAULT_PORT_PRIORITY = 0x0000; - private static final int PORT_PRIORITY = 0xffff; - private static final String SWITCH_CHANNEL_ID = "channelId"; - private static final String DRIVER_NAME = "onosfw"; - - @Activate - public void activate() { - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API); - appId = coreService.registerApplication(APP_ID); - deviceService.addListener(deviceListener); - hostService.addListener(hostListener); - backgroundService = newSingleThreadScheduledExecutor(groupedThreads("onos-apps/vtn", - "manager-background")); - binding = storageService - .<HostId, SegmentationId>eventuallyConsistentMapBuilder() - .withName("all_tunnel").withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - backgroundService.shutdown(); - binding.destroy(); - log.info("Stopped"); - } - - @Override - public void onServerDetected(Device device) { - Iterable<Device> devices = deviceService.getAvailableDevices(); - DriverHandler handler = driverService.createHandler(device.id()); - BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class); - bridgeConfig.addBridge(BridgeName.bridgeName(DEFAULT_BRIDGE_NAME)); - String ipAddress = device.annotations().value(CONTROLLER_IP_KEY); - IpAddress ip = IpAddress.valueOf(ipAddress); - Sets.newHashSet(devices).stream() - .filter(d -> Device.Type.CONTROLLER == d.type()) - .filter(d -> !device.id().equals(d.id())).forEach(d -> { - String ipAddress1 = d.annotations() - .value(CONTROLLER_IP_KEY); - IpAddress ip1 = IpAddress.valueOf(ipAddress1); - applyTunnelConfig(ip, ip1, handler); - DriverHandler handler1 = driverService - .createHandler(d.id()); - applyTunnelConfig(ip1, ip, handler1); - - }); - } - - @Override - public void onServerVanished(Device device) { - Iterable<Device> devices = deviceService.getAvailableDevices(); - String ipAddress = device.annotations().value(CONTROLLER_IP_KEY); - IpAddress dst = IpAddress.valueOf(ipAddress); - Sets.newHashSet(devices).stream() - .filter(d -> d.type() == Device.Type.CONTROLLER) - .filter(d -> !device.id().equals(d.id())).forEach(d -> { - String ipAddress1 = d.annotations() - .value(CONTROLLER_IP_KEY); - DriverHandler handler = driverService.createHandler(d.id()); - IpAddress src = IpAddress.valueOf(ipAddress1); - removeTunnelConfig(src, dst, handler); - }); - } - - private void applyTunnelConfig(IpAddress src, IpAddress dst, - DriverHandler handler) { - TunnelEndPoint tunnelAsSrc = IpTunnelEndPoint.ipTunnelPoint(src); - TunnelEndPoint tunnelAsDst = IpTunnelEndPoint.ipTunnelPoint(dst); - TunnelDescription tunnel = new DefaultTunnelDescription( - tunnelAsSrc, - tunnelAsDst, - TunnelDescription.Type.VXLAN, - null); - TunnelConfig config = handler.behaviour(TunnelConfig.class); - config.createTunnel(tunnel); - } - - private void removeTunnelConfig(IpAddress src, IpAddress dst, - DriverHandler handler) { - TunnelEndPoint tunnelAsSrc = IpTunnelEndPoint.ipTunnelPoint(src); - TunnelEndPoint tunnelAsDst = IpTunnelEndPoint.ipTunnelPoint(dst); - TunnelDescription tunnel = new DefaultTunnelDescription( - tunnelAsSrc, - tunnelAsDst, - TunnelDescription.Type.VXLAN, - null); - TunnelConfig config = handler.behaviour(TunnelConfig.class); - config.removeTunnel(tunnel); - } - - @Override - public void onOvsDetected(Device device) { - programMacDefaultRules(device.id(), appId, Objective.Operation.ADD); - programPortDefaultRules(device.id(), appId, Objective.Operation.ADD); - } - - @Override - public void onOvsVanished(Device device) { - programMacDefaultRules(device.id(), appId, Objective.Operation.REMOVE); - programPortDefaultRules(device.id(), appId, Objective.Operation.REMOVE); - } - - @Override - public void onHostDetected(Host host) { - String ifaceId = host.annotations().value(IFACEID); - DeviceId deviceId = host.location().deviceId(); - String currentControllerIp = getControllerIpOfSwitch(deviceId); - Iterable<Device> devices = deviceService.getAvailableDevices(); - VirtualPortId portId = VirtualPortId.portId(ifaceId); - VirtualPort port = virtualPortService.getPort(portId); - TenantNetwork network = tenantNetworkService - .getNetwork(port.networkId()); - String tunnelName = "vxlan-" + currentControllerIp; - binding.put(host.id(), network.segmentationId()); - List<Port> allPorts = deviceService.getPorts(deviceId); - PortNumber inPort = host.location().port(); - List<PortNumber> localVmPorts = getLocalPorts(deviceId, ifaceId); - List<PortNumber> localTunnelPorts = new ArrayList<>(); - Sets.newHashSet(allPorts.iterator()).stream() - .filter(p -> !p.number().equals(PortNumber.LOCAL)).forEach(p -> { - if (p.annotations().value("portName").startsWith(PORT_HEAD)) { - localTunnelPorts.add(p.number()); - } - }); - - localVmPorts.forEach(lp -> programLocalBcastRules(deviceId, network.segmentationId(), lp, localVmPorts, - localTunnelPorts, appId, Objective.Operation.ADD)); - programLocalOut(deviceId, network.segmentationId(), inPort, host.mac(), - appId, Objective.Operation.ADD); - localTunnelPorts - .forEach(tp -> programTunnelFloodOut(deviceId, - network.segmentationId(), - tp, localVmPorts, - appId, - Objective.Operation.ADD)); - Sets.newHashSet(devices).stream() - .filter(d -> d.type() == Device.Type.CONTROLLER).forEach(d -> { - DriverHandler handler = driverService.createHandler(d.id()); - BridgeConfig bridgeConfig = handler - .behaviour(BridgeConfig.class); - Collection<BridgeDescription> bridgeDescriptions = bridgeConfig - .getBridges(); - - Iterator<BridgeDescription> it = bridgeDescriptions - .iterator(); - if (it.hasNext()) { - BridgeDescription sw = it.next(); - Set<PortNumber> ports = bridgeConfig.getPortNumbers(); - ports.stream() - .filter(p -> p.name() - .equalsIgnoreCase(tunnelName)) - .forEach(p -> programTunnelOut(sw.deviceId(), - network.segmentationId(), p, - host.mac(), appId, - Objective.Operation.ADD)); - } - }); - programLocalIn(deviceId, network.segmentationId(), inPort, host.mac(), - appId, Objective.Operation.ADD); - localTunnelPorts - .forEach(tp -> programTunnelIn(deviceId, - network.segmentationId(), - tp, inPort, host.mac(), - appId, Objective.Operation.ADD)); - - } - - @Override - public void onHostVanished(Host host) { - String ifaceId = host.annotations().value(IFACEID); - SegmentationId segId = binding.remove(host.id()); - DeviceId deviceId = host.location().deviceId(); - String currentControllerIp = getControllerIpOfSwitch(deviceId); - Iterable<Device> devices = deviceService.getAvailableDevices(); - - String tunnelName = "vxlan-" + currentControllerIp; - List<Port> allPorts = deviceService.getPorts(deviceId); - PortNumber inPort = host.location().port(); - - List<PortNumber> localTunnelPorts = new ArrayList<>(); - Sets.newHashSet(allPorts.iterator()).stream() - .filter(p -> !p.number().equals(PortNumber.LOCAL)).forEach(p -> { - if (p.annotations().value("portName").startsWith(PORT_HEAD)) { - localTunnelPorts.add(p.number()); - } - }); - - List<PortNumber> localVmPorts = getLocalPorts(deviceId, ifaceId); - localVmPorts.add(inPort); - localVmPorts.forEach(lp -> programLocalBcastRules(deviceId, segId, lp, localVmPorts, - localTunnelPorts, appId, Objective.Operation.REMOVE)); - programLocalOut(deviceId, segId, inPort, host.mac(), - appId, Objective.Operation.REMOVE); - localTunnelPorts - .forEach(tp -> programTunnelFloodOut(deviceId, - segId, - tp, localVmPorts, - appId, - Objective.Operation.REMOVE)); - Sets.newHashSet(devices).stream() - .filter(d -> d.type() == Device.Type.CONTROLLER).forEach(d -> { - DriverHandler handler = driverService.createHandler(d.id()); - BridgeConfig bridgeConfig = handler - .behaviour(BridgeConfig.class); - Collection<BridgeDescription> bridgeDescriptions = bridgeConfig - .getBridges(); - - Iterator<BridgeDescription> it = bridgeDescriptions - .iterator(); - if (it.hasNext()) { - BridgeDescription sw = it.next(); - Set<PortNumber> ports = bridgeConfig.getPortNumbers(); - ports.stream() - .filter(p -> p.name() - .equalsIgnoreCase(tunnelName)) - .forEach(p -> programTunnelOut(sw.deviceId(), - segId, p, - host.mac(), appId, - Objective.Operation.REMOVE)); - } - }); - programLocalIn(deviceId, segId, inPort, host.mac(), - appId, Objective.Operation.REMOVE); - localTunnelPorts - .forEach(tp -> programTunnelIn(deviceId, - segId, - tp, inPort, host.mac(), - appId, Objective.Operation.REMOVE)); - } - - private class InnerDeviceListener implements DeviceListener { - - @Override - public void event(DeviceEvent event) { - Device device = event.subject(); - if (Device.Type.CONTROLLER == device.type() - && DeviceEvent.Type.DEVICE_ADDED == event.type()) { - backgroundService.execute(() -> onServerDetected(device)); - } else if (Device.Type.CONTROLLER == device.type() - && DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED == event - .type()) { - backgroundService.execute(() -> onServerVanished(device)); - } else if (Device.Type.SWITCH == device.type() - && DeviceEvent.Type.DEVICE_ADDED == event.type()) { - backgroundService.execute(() -> onOvsDetected(device)); - } else if (Device.Type.SWITCH == device.type() - && DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED == event - .type()) { - backgroundService.execute(() -> onOvsVanished(device)); - } else { - log.info("Do nothing for this device type"); - } - } - - } - - private class InnerHostListener implements HostListener { - - @Override - public void event(HostEvent event) { - Host host = event.subject(); - if (HostEvent.Type.HOST_ADDED == event.type()) { - backgroundService.execute(() -> onHostDetected(host)); - } else if (HostEvent.Type.HOST_REMOVED == event.type()) { - backgroundService.execute(() -> onHostVanished(host)); - } else if (HostEvent.Type.HOST_UPDATED == event.type()) { - backgroundService.execute(() -> { - onHostVanished(host); - onHostDetected(host); - }); - } - } - - } - - // Used to forward the flows to the local VM. - private void programLocalOut(DeviceId dpid, SegmentationId segmentationId, - PortNumber outPort, MacAddress sourceMac, - ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchTunnelId(Long.parseLong(segmentationId.toString())) - .matchEthDst(sourceMac).build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .setOutput(outPort).build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - - } - - // Used to forward the flows into the VXLAN tunnel. - private void programTunnelOut(DeviceId dpid, SegmentationId segmentationId, - PortNumber tunnelOutPort, MacAddress dstMac, - ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthDst(dstMac).add(Criteria.matchTunnelId(Long - .parseLong(segmentationId.toString()))) - .build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - - .setOutput(tunnelOutPort).build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - - } - - // Used to forward multicast flows to remote VMs of the same tenant via - // VXLAN tunnel. - private void programTunnelFloodOut(DeviceId deviceId, - SegmentationId segmentationId, - PortNumber ofPortOut, - List<PortNumber> localVmPorts, - ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(ofPortOut) - - .add(Criteria.matchTunnelId(Long.parseLong(segmentationId - .toString()))).matchEthDst(MacAddress.BROADCAST) - .build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - - for (PortNumber outPort : localVmPorts) { - treatment.setOutput(outPort); - } - - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).makePermanent() - .withFlag(Flag.SPECIFIC).withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(deviceId, objective.add()); - } else { - flowServiceForward(deviceId, objective.remove()); - } - } - - // Applies default flows to mac table. - private void programMacDefaultRules(DeviceId dpid, ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder().build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder().drop() - .build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).makePermanent().withFlag(Flag.SPECIFIC) - .withPriority(DEFAULT_MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - } - - // Used to forward the flows to the local VMs with the same tenant. - private void programLocalBcastRules(DeviceId deviceId, - SegmentationId segmentationId, - PortNumber inPort, - List<PortNumber> localVmPorts, - List<PortNumber> localTunnelPorts, - ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(inPort).matchEthDst(MacAddress.BROADCAST) - .add(Criteria.matchTunnelId(Long - .parseLong(segmentationId.toString()))) - .build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - for (PortNumber outPort : localVmPorts) { - if (inPort != outPort) { - treatment.setOutput(outPort); - } - } - for (PortNumber outport : localTunnelPorts) { - treatment.setOutput(outport); - } - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).makePermanent() - .withFlag(Flag.SPECIFIC).withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(deviceId, objective.add()); - } else { - flowServiceForward(deviceId, objective.remove()); - } - } - - // Used to apply local entry flow. - private void programLocalIn(DeviceId dpid, SegmentationId segmentationId, - PortNumber inPort, MacAddress srcMac, - ApplicationId appid, Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(inPort).matchEthSrc(srcMac).build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.add(Instructions.modTunnelId(Long.parseLong(segmentationId - .toString()))); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).makePermanent() - .withFlag(Flag.SPECIFIC).withPriority(PORT_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - } - - // Used to forward the flows from the egress tunnel to the VM. - private void programTunnelIn(DeviceId dpid, SegmentationId segmentationId, - PortNumber tunnelInPort, PortNumber outPort, - MacAddress sourceMac, ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(tunnelInPort).add(Criteria.matchTunnelId(Long - .parseLong(segmentationId.toString()))) - .build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); - - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).makePermanent().withFlag(Flag.SPECIFIC) - .withPriority(PORT_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - } - - // Applies the default flows to port table. - private void programPortDefaultRules(DeviceId dpid, ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder().build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).makePermanent().withFlag(Flag.SPECIFIC) - .withPriority(DEFAULT_PORT_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowServiceForward(dpid, objective.add()); - } else { - flowServiceForward(dpid, objective.remove()); - } - } - - // Used to get channelId from the device annotations. - private String getControllerIpOfSwitch(DeviceId deviceId) { - Device device = deviceService.getDevice(deviceId); - String url = device.annotations().value(SWITCH_CHANNEL_ID); - return url.substring(0, url.lastIndexOf(":")); - } - - private Iterable<String> getIfaceIds(String ifaceId) { - VirtualPortId portId = VirtualPortId.portId(ifaceId); - VirtualPort port = virtualPortService.getPort(portId); - if (port == null) { - return Collections.emptyList(); - } - - TenantNetwork network = tenantNetworkService - .getNetwork(port.networkId()); - if (network == null) { - return Collections.emptyList(); - } - - Collection<VirtualPort> ports = virtualPortService - .getPorts(network.id()); - return ports.stream().map(p -> p.portId().portId()) - .collect(Collectors.toSet()); - } - - private List<PortNumber> getLocalPorts(DeviceId deviceId, String ifaceId) { - DriverHandler handler = driverService - .createHandler(getController(deviceId)); - BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class); - Iterable<String> ifaceIds = getIfaceIds(ifaceId); - return bridgeConfig.getLocalPorts(ifaceIds); - } - - private DeviceId getController(DeviceId deviceId) { - Iterable<Device> devices = deviceService.getAvailableDevices(); - for (Device device : devices) { - if (device.type() == Device.Type.CONTROLLER && device.id() - .toString().contains(getControllerIpOfSwitch(deviceId))) { - return device.id(); - } - } - log.info("Can not find controller for device : {}", deviceId); - return null; - } - - //Used to apply flowRule - private void flowServiceForward(DeviceId deviceId, ForwardingObjective forwardingObjective) { - Driver driver = driverService.getDriver(DRIVER_NAME); - Pipeliner pipeLiner = driver.createBehaviour(new DefaultDriverData(driver, deviceId), Pipeliner.class); - if (pipeLiner != null) { - final PipelinerContext context = new InnerPipelineContext(); - pipeLiner.init(deviceId, context); - pipeLiner.forward(forwardingObjective); - } - } - - // Processing context for initializing pipeline driver behaviours. - private class InnerPipelineContext implements PipelinerContext { - @Override - public ServiceDirectory directory() { - return serviceDirectory; - } - - @Override - public FlowObjectiveStore store() { - return flowObjectiveStore; - } - } - -} diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/package-info.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/package-info.java deleted file mode 100644 index f18dbf8a..00000000 --- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VTN application that applies configuration and flows to the device. - */ -package org.onosproject.vtn.impl; diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/package-info.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/package-info.java deleted file mode 100644 index 371466c3..00000000 --- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VTN application that applies configuration and flows to the device. - */ -package org.onosproject.vtn; diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java index 39df2cff..7915ce08 100644 --- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java +++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java @@ -43,6 +43,8 @@ public final class DefaultFlowClassifier implements FlowClassifier { private static final int NULL_PORT = 0; private static final String FLOW_CLASSIFIER_ID_NOT_NULL = "FlowClassifier id can not be null."; private static final String TENANT_ID_NOT_NULL = "Tenant id can not be null."; + private static final String NAME_NOT_NULL = "Name can not be null."; + private static final String ETHER_TYPE_NOT_NULL = "Ether Type can not be null."; /** * Constructor to create default flow classifier. @@ -160,11 +162,9 @@ public final class DefaultFlowClassifier implements FlowClassifier { private FlowClassifierId flowClassifierId; private TenantId tenantId; private String name; - private boolean isFlowClassifierNameSet = false; private String description; private boolean isFlowClassifierDescriptionSet = false; private String etherType; - private boolean isEtherTypeSet = false; private String protocol; private boolean isProtocolSet = false; private int minSrcPortRange; @@ -189,9 +189,9 @@ public final class DefaultFlowClassifier implements FlowClassifier { checkNotNull(flowClassifierId, FLOW_CLASSIFIER_ID_NOT_NULL); checkNotNull(tenantId, TENANT_ID_NOT_NULL); - String name = null; + checkNotNull(name, NAME_NOT_NULL); + checkNotNull(etherType, ETHER_TYPE_NOT_NULL); String description = null; - String etherType = null; String protocol = null; int minSrcPortRange = NULL_PORT; int maxSrcPortRange = NULL_PORT; @@ -202,15 +202,9 @@ public final class DefaultFlowClassifier implements FlowClassifier { VirtualPortId srcPort = null; VirtualPortId dstPort = null; - if (isFlowClassifierNameSet) { - name = this.name; - } if (isFlowClassifierDescriptionSet) { description = this.description; } - if (isEtherTypeSet) { - etherType = this.etherType; - } if (isProtocolSet) { protocol = this.protocol; } @@ -259,7 +253,6 @@ public final class DefaultFlowClassifier implements FlowClassifier { @Override public Builder setName(String name) { this.name = name; - this.isFlowClassifierNameSet = true; return this; } @@ -273,7 +266,6 @@ public final class DefaultFlowClassifier implements FlowClassifier { @Override public Builder setEtherType(String etherType) { this.etherType = etherType; - this.isEtherTypeSet = true; return this; } diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/DefaultFlowClassifierTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/DefaultFlowClassifierTest.java deleted file mode 100644 index 6b0d9a64..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/DefaultFlowClassifierTest.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.flowclassifier; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IpPrefix; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.DefaultFlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.FlowClassifier; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultFlowClassifier class. - */ -public class DefaultFlowClassifierTest { - /** - * Checks that the DefaultFlowClassifier class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultFlowClassifier.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // Create same two flow classifier objects. - final String name = "FlowClassifier1"; - final String description = "FlowClassifier1"; - final String ethType = "IPv4"; - final String protocol = "tcp"; - final int minSrcPortRange = 5; - final int maxSrcPortRange = 10; - final int minDstPortRange = 5; - final int maxDstPortRange = 10; - final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0"); - final VirtualPortId virtualSrcPort = VirtualPortId.portId("1"); - final VirtualPortId virtualDstPort = VirtualPortId.portId("2"); - - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - final FlowClassifier flowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId) - .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType) - .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - - flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - final FlowClassifier sameAsFlowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId) - .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType) - .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - - // Create different classifier object. - final String name2 = "FlowClassifier2"; - final String description2 = "FlowClassifier2"; - final String ethType2 = "IPv6"; - final String protocol2 = "udp"; - final int minSrcPortRange2 = 5; - final int maxSrcPortRange2 = 10; - final int minDstPortRange2 = 5; - final int maxDstPortRange2 = 10; - final FlowClassifierId flowClassifierId2 = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final IpPrefix srcIpPrefix2 = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix2 = IpPrefix.valueOf("10.10.10.10/0"); - final VirtualPortId virtualSrcPort2 = VirtualPortId.portId("3"); - final VirtualPortId virtualDstPort2 = VirtualPortId.portId("4"); - - DefaultFlowClassifier.Builder flowClassifierBuilder3 = new DefaultFlowClassifier.Builder(); - final FlowClassifier flowClassifier2 = flowClassifierBuilder3.setFlowClassifierId(flowClassifierId2) - .setTenantId(tenantId2).setName(name2).setDescription(description2).setEtherType(ethType2) - .setProtocol(protocol2).setMinSrcPortRange(minSrcPortRange2).setMaxSrcPortRange(maxSrcPortRange2) - .setMinDstPortRange(minDstPortRange2).setMaxDstPortRange(maxDstPortRange2).setSrcIpPrefix(srcIpPrefix2) - .setDstIpPrefix(dstIpPrefix2).setSrcPort(virtualSrcPort2).setDstPort(virtualDstPort2).build(); - - new EqualsTester().addEqualityGroup(flowClassifier1, sameAsFlowClassifier1).addEqualityGroup(flowClassifier2) - .testEquals(); - } - - /** - * Checks the construction of a DefaultFlowClassifier object. - */ - @Test - public void testConstruction() { - final String name = "FlowClassifier"; - final String description = "FlowClassifier"; - final String ethType = "IPv4"; - final String protocol = "tcp"; - final int minSrcPortRange = 5; - final int maxSrcPortRange = 10; - final int minDstPortRange = 5; - final int maxDstPortRange = 10; - final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0"); - final VirtualPortId virtualSrcPort = VirtualPortId.portId("1"); - final VirtualPortId virtualDstPort = VirtualPortId.portId("2"); - - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - final FlowClassifier flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId) - .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType) - .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - - assertThat(flowClassifierId, is(flowClassifier.flowClassifierId())); - assertThat(tenantId, is(flowClassifier.tenantId())); - assertThat(name, is(flowClassifier.name())); - assertThat(description, is(flowClassifier.description())); - assertThat(ethType, is(flowClassifier.etherType())); - assertThat(protocol, is(flowClassifier.protocol())); - assertThat(minSrcPortRange, is(flowClassifier.minSrcPortRange())); - assertThat(maxSrcPortRange, is(flowClassifier.maxSrcPortRange())); - assertThat(minDstPortRange, is(flowClassifier.minDstPortRange())); - assertThat(maxDstPortRange, is(flowClassifier.maxDstPortRange())); - assertThat(srcIpPrefix, is(flowClassifier.srcIpPrefix())); - assertThat(dstIpPrefix, is(flowClassifier.dstIpPrefix())); - assertThat(virtualSrcPort, is(flowClassifier.srcPort())); - assertThat(virtualDstPort, is(flowClassifier.dstPort())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierIdTest.java deleted file mode 100644 index 4f521836..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierIdTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.flowclassifier; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.FlowClassifierId; - -import com.google.common.testing.EqualsTester; -import java.util.UUID; - -/** - * Unit tests for FlowClassifierId class. - */ -public class FlowClassifierIdTest { - - final FlowClassifierId flowClassifierId1 = FlowClassifierId - .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final FlowClassifierId sameAsFlowClassifierId1 = FlowClassifierId - .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final FlowClassifierId flowClassifierId2 = FlowClassifierId - .of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the FlowClassifierId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(FlowClassifierId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(flowClassifierId1, sameAsFlowClassifierId1) - .addEqualityGroup(flowClassifierId2).testEquals(); - } - - /** - * Checks the construction of a FlowClassifierId object. - */ - @Test - public void testConstruction() { - final String flowClassifierIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final FlowClassifierId flowClassifierId = FlowClassifierId.of(flowClassifierIdValue); - assertThat(flowClassifierId, is(notNullValue())); - assertThat(flowClassifierId.value(), is(UUID.fromString(flowClassifierIdValue))); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/DefaultPortChainTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/DefaultPortChainTest.java deleted file mode 100644 index b9ce73d8..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/DefaultPortChainTest.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.flowclassifier; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import java.util.List; -import java.util.LinkedList; - -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.DefaultPortChain; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultPortChain class. - */ -public class DefaultPortChainTest { - /** - * Checks that the DefaultPortChain class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultPortChain.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // Create same two port chain objects. - final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortChain1"; - final String description = "PortChain1"; - // create list of Port Pair Groups. - final List<PortPairGroupId> portPairGroups = new LinkedList<PortPairGroupId>(); - PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroups.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroups.add(portPairGroupId); - // create list of Flow classifiers. - final List<FlowClassifierId> flowClassifiers = new LinkedList<FlowClassifierId>(); - FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifiers.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifiers.add(flowClassifierId); - - DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder(); - final PortChain portChain1 = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name) - .setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers) - .build(); - - portChainBuilder = new DefaultPortChain.Builder(); - final PortChain samePortChain1 = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name) - .setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers) - .build(); - - // Create different port chain object. - final PortChainId portChainId2 = PortChainId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortChain2"; - final String description2 = "PortChain2"; - // create list of Port Pair Groups. - final List<PortPairGroupId> portPairGroups2 = new LinkedList<PortPairGroupId>(); - portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroups2.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroups2.add(portPairGroupId); - // create list of Flow classifiers. - final List<FlowClassifierId> flowClassifiers2 = new LinkedList<FlowClassifierId>(); - flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifiers2.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifiers2.add(flowClassifierId); - - portChainBuilder = new DefaultPortChain.Builder(); - final PortChain portChain2 = portChainBuilder.setId(portChainId2).setTenantId(tenantId2).setName(name2) - .setDescription(description2).setPortPairGroups(portPairGroups2).setFlowClassifiers(flowClassifiers2) - .build(); - - new EqualsTester().addEqualityGroup(portChain1, samePortChain1).addEqualityGroup(portChain2).testEquals(); - } - - /** - * Checks the construction of a DefaultPortChain object. - */ - @Test - public void testConstruction() { - final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortChain"; - final String description = "PortChain"; - // create list of Port Pair Groups. - final List<PortPairGroupId> portPairGroups = new LinkedList<PortPairGroupId>(); - PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroups.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroups.add(portPairGroupId); - // create list of Flow classifiers. - final List<FlowClassifierId> flowClassifiers = new LinkedList<FlowClassifierId>(); - FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifiers.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifiers.add(flowClassifierId); - - DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder(); - final PortChain portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name) - .setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers) - .build(); - - assertThat(portChainId, is(portChain.portChainId())); - assertThat(tenantId, is(portChain.tenantId())); - assertThat(name, is(portChain.name())); - assertThat(description, is(portChain.description())); - assertThat(portPairGroups, is(portChain.portPairGroups())); - assertThat(flowClassifiers, is(portChain.flowClassifiers())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/PortChainIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/PortChainIdTest.java deleted file mode 100644 index a87bdb99..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/PortChainIdTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portchain; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.PortChainId; - -import com.google.common.testing.EqualsTester; -import java.util.UUID; - -/** - * Unit tests for PortChainId class. - */ -public class PortChainIdTest { - - final PortChainId portChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortChainId sameAsPortChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortChainId portChainId2 = PortChainId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the PortChainId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PortChainId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(portChainId1, sameAsPortChainId1).addEqualityGroup(portChainId2) - .testEquals(); - } - - /** - * Checks the construction of a PortChainId object. - */ - @Test - public void testConstruction() { - final String portChainIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final PortChainId portChainId = PortChainId.of(portChainIdValue); - assertThat(portChainId, is(notNullValue())); - assertThat(portChainId.value(), is(UUID.fromString(portChainIdValue))); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/DefaultPortPairTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/DefaultPortPairTest.java deleted file mode 100644 index 91e7ab37..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/DefaultPortPairTest.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.flowclassifier; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; - -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.DefaultPortPair; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultPortPair class. - */ -public class DefaultPortPairTest { - /** - * Checks that the DefaultPortPair class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultPortPair.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // Create same two port pair objects. - final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPair1"; - final String description = "PortPair1"; - final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345"; - - DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder(); - final PortPair portPair1 = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name) - .setDescription(description).setIngress(ingress).setEgress(egress).build(); - - portPairBuilder = new DefaultPortPair.Builder(); - final PortPair samePortPair1 = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name) - .setDescription(description).setIngress(ingress).setEgress(egress).build(); - - // Create different port pair object. - final PortPairId portPairId2 = PortPairId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortPair2"; - final String description2 = "PortPair2"; - final String ingress2 = "d5555555-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress2 = "a6666666-4a56-2a6e-cd3a-9dee4e2ec345"; - - portPairBuilder = new DefaultPortPair.Builder(); - final PortPair portPair2 = portPairBuilder.setId(portPairId2).setTenantId(tenantId2).setName(name2) - .setDescription(description2).setIngress(ingress2).setEgress(egress2).build(); - - new EqualsTester().addEqualityGroup(portPair1, samePortPair1).addEqualityGroup(portPair2).testEquals(); - } - - /** - * Checks the construction of a DefaultPortPair object. - */ - @Test - public void testConstruction() { - final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPair"; - final String description = "PortPair"; - final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345"; - - DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder(); - final PortPair portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name) - .setDescription(description).setIngress(ingress).setEgress(egress).build(); - - assertThat(portPairId, is(portPair.portPairId())); - assertThat(tenantId, is(portPair.tenantId())); - assertThat(name, is(portPair.name())); - assertThat(description, is(portPair.description())); - assertThat(ingress, is(portPair.ingress())); - assertThat(egress, is(portPair.egress())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/PortPairIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/PortPairIdTest.java deleted file mode 100644 index f176089e..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/PortPairIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpair; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.PortPairId; - -import com.google.common.testing.EqualsTester; -import java.util.UUID; - -/** - * Unit tests for PortPairId class. - */ -public class PortPairIdTest { - - final PortPairId portPairId1 = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairId sameAsPortPairId1 = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairId portPairId2 = PortPairId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the PortPairId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PortPairId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(portPairId1, sameAsPortPairId1).addEqualityGroup(portPairId2).testEquals(); - } - - /** - * Checks the construction of a PortPairId object. - */ - @Test - public void testConstruction() { - final String portPairIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final PortPairId portPairId = PortPairId.of(portPairIdValue); - assertThat(portPairId, is(notNullValue())); - assertThat(portPairId.value(), is(UUID.fromString(portPairIdValue))); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/DefaultPortPairGroupTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/DefaultPortPairGroupTest.java deleted file mode 100644 index 2528fb29..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/DefaultPortPairGroupTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.flowclassifier; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import java.util.List; -import java.util.LinkedList; - -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.DefaultPortPairGroup; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultPortPairGroup class. - */ -public class DefaultPortPairGroupTest { - /** - * Checks that the DefaultPortPairGroup class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultPortPairGroup.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // Create same two port-pair-group objects. - final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPairGroup1"; - final String description = "PortPairGroup1"; - // create port-pair-id list - final List<PortPairId> portPairList = new LinkedList<PortPairId>(); - PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList.add(portPairId); - portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList.add(portPairId); - - DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - final PortPairGroup portPairGroup1 = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId) - .setName(name).setDescription(description).setPortPairs(portPairList).build(); - - portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - final PortPairGroup samePortPairGroup1 = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId) - .setName(name).setDescription(description).setPortPairs(portPairList).build(); - - // Create different port-pair-group object. - final PortPairGroupId portPairGroupId2 = PortPairGroupId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortPairGroup2"; - final String description2 = "PortPairGroup2"; - // create port-pair-id list - final List<PortPairId> portPairList2 = new LinkedList<PortPairId>(); - portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList2.add(portPairId); - portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList2.add(portPairId); - - portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - final PortPairGroup portPairGroup2 = portPairGroupBuilder.setId(portPairGroupId2).setTenantId(tenantId2) - .setName(name2).setDescription(description2).setPortPairs(portPairList2).build(); - - new EqualsTester().addEqualityGroup(portPairGroup1, samePortPairGroup1).addEqualityGroup(portPairGroup2) - .testEquals(); - } - - /** - * Checks the construction of a DefaultPortPairGroup object. - */ - @Test - public void testConstruction() { - final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPairGroup"; - final String description = "PortPairGroup"; - // create port-pair-id list - final List<PortPairId> portPairList = new LinkedList<PortPairId>(); - PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList.add(portPairId); - portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList.add(portPairId); - - DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - final PortPairGroup portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId) - .setName(name).setDescription(description).setPortPairs(portPairList).build(); - - assertThat(portPairGroupId, is(portPairGroup.portPairGroupId())); - assertThat(tenantId, is(portPairGroup.tenantId())); - assertThat(name, is(portPairGroup.name())); - assertThat(description, is(portPairGroup.description())); - assertThat(portPairList, is(portPairGroup.portPairs())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupIdTest.java deleted file mode 100644 index 25db9d2e..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupIdTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpairgroup; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.PortPairGroupId; - -import com.google.common.testing.EqualsTester; -import java.util.UUID; - -/** - * Unit tests for PortPairGroupId class. - */ -public class PortPairGroupIdTest { - - final PortPairGroupId portPairGroupId1 = PortPairGroupId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairGroupId sameAsPortPairGroupId1 = PortPairGroupId - .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairGroupId portPairGroupId2 = PortPairGroupId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the PortPairGroupId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PortPairGroupId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(portPairGroupId1, sameAsPortPairGroupId1) - .addEqualityGroup(portPairGroupId2).testEquals(); - } - - /** - * Checks the construction of a PortPairGroupId object. - */ - @Test - public void testConstruction() { - final String portPairGroupIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final PortPairGroupId portPairGroupId = PortPairGroupId.of(portPairGroupIdValue); - assertThat(portPairGroupId, is(notNullValue())); - assertThat(portPairGroupId.value(), is(UUID.fromString(portPairGroupIdValue))); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterGatewayTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterGatewayTest.java deleted file mode 100644 index ce6b6c00..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterGatewayTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.router; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import java.util.HashSet; -import java.util.Set; - -import org.junit.Test; -import org.onosproject.vtnrsc.RouterGateway; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.FixedIp; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for RouterGateway class. - */ -public class RouterGatewayTest { - final TenantNetworkId networkId1 = TenantNetworkId.networkId("1"); - final TenantNetworkId networkId2 = TenantNetworkId.networkId("2"); - final Set<FixedIp> fixedIpSet1 = new HashSet<>(); - final Set<FixedIp> fixedIpSet2 = new HashSet<>(); - - /** - * Checks that the RouterGateway class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(RouterGateway.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - RouterGateway routerGateway1 = RouterGateway.routerGateway(networkId1, - true, - fixedIpSet1); - RouterGateway routerGateway2 = RouterGateway.routerGateway(networkId1, - true, - fixedIpSet1); - RouterGateway routerGateway3 = RouterGateway.routerGateway(networkId2, - true, - fixedIpSet2); - new EqualsTester().addEqualityGroup(routerGateway1, routerGateway2) - .addEqualityGroup(routerGateway3).testEquals(); - } - - /** - * Checks the construction of a RouterGateway object. - */ - @Test - public void testConstruction() { - RouterGateway routerGateway = RouterGateway.routerGateway(networkId1, - true, - fixedIpSet1); - assertThat(fixedIpSet1, is(notNullValue())); - assertThat(fixedIpSet1, is(routerGateway.externalFixedIps())); - assertThat(networkId1, is(notNullValue())); - assertThat(networkId1, is(routerGateway.networkId())); - assertThat(routerGateway.enableSnat(), is(true)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterIdTest.java deleted file mode 100644 index 3751c11a..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterIdTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.router; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.RouterId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for RouterId class. - */ -public class RouterIdTest { - final RouterId routerId1 = RouterId.valueOf("1"); - final RouterId sameAsRouterId1 = RouterId.valueOf("1"); - final RouterId routerId2 = RouterId.valueOf("2"); - - /** - * Checks that the RouterId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(RouterId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(routerId1, sameAsRouterId1).addEqualityGroup(routerId2) - .testEquals(); - } - - /** - * Checks the construction of a RouterId object. - */ - @Test - public void testConstruction() { - final String routerIdValue = "s"; - final RouterId routerId = RouterId.valueOf(routerIdValue); - assertThat(routerId, is(notNullValue())); - assertThat(routerId.routerId(), is(routerIdValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultAllocationPoolTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultAllocationPoolTest.java deleted file mode 100644 index 4ce4def2..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultAllocationPoolTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.subnet; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onosproject.vtnrsc.AllocationPool; -import org.onosproject.vtnrsc.DefaultAllocationPool; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultAllocationPool class. - */ -public class DefaultAllocationPoolTest { - - final IpAddress startIP1 = IpAddress.valueOf("192.168.1.1"); - final IpAddress startIP2 = IpAddress.valueOf("192.168.1.2"); - final IpAddress endIP1 = IpAddress.valueOf("192.168.1.1"); - final IpAddress endIP2 = IpAddress.valueOf("192.168.1.2"); - - /** - * Checks that the DefaultAllocationPool class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultAllocationPool.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - AllocationPool pool1 = new DefaultAllocationPool(startIP1, endIP1); - AllocationPool pool2 = new DefaultAllocationPool(startIP1, endIP1); - AllocationPool pool3 = new DefaultAllocationPool(startIP2, endIP2); - new EqualsTester().addEqualityGroup(pool1, pool2) - .addEqualityGroup(pool3).testEquals(); - } - - /** - * Checks the construction of a DefaultAllocationPool object. - */ - @Test - public void testConstruction() { - final AllocationPool apool = new DefaultAllocationPool(startIP1, endIP1); - assertThat(startIP1, is(apool.startIp())); - assertThat(endIP1, is(apool.endIp())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultHostRouteTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultHostRouteTest.java deleted file mode 100644 index 2f751742..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/DefaultHostRouteTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.subnet; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onosproject.vtnrsc.DefaultHostRoute; -import org.onosproject.vtnrsc.HostRoute; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultHostRoute class. - */ -public class DefaultHostRouteTest { - final IpAddress nexthop1 = IpAddress.valueOf("192.168.1.1"); - final IpAddress nexthop2 = IpAddress.valueOf("192.168.1.2"); - final IpPrefix destination1 = IpPrefix.valueOf("1.1.1.1/1"); - final IpPrefix destination2 = IpPrefix.valueOf("1.1.1.1/2"); - - /** - * Checks that the DefaultHostRoute class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultHostRoute.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - HostRoute route1 = new DefaultHostRoute(nexthop1, destination1); - HostRoute route2 = new DefaultHostRoute(nexthop1, destination1); - HostRoute route3 = new DefaultHostRoute(nexthop2, destination2); - new EqualsTester().addEqualityGroup(route1, route2) - .addEqualityGroup(route3).testEquals(); - } - - /** - * Checks the construction of a DefaultHostRoute object. - */ - @Test - public void testConstruction() { - final HostRoute host = new DefaultHostRoute(nexthop1, destination1); - assertThat(nexthop1, is(host.nexthop())); - assertThat(destination1, is(host.destination())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/SubnetIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/SubnetIdTest.java deleted file mode 100644 index d18dd41a..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/subnet/SubnetIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.subnet; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.SubnetId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for SubnetId class. - */ -public class SubnetIdTest { - - final SubnetId subnetId1 = SubnetId.subnetId("1"); - final SubnetId sameAsSubnetId1 = SubnetId.subnetId("1"); - final SubnetId subnetId2 = SubnetId.subnetId("2"); - - /** - * Checks that the SubnetId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SubnetId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(subnetId1, sameAsSubnetId1).addEqualityGroup(subnetId2) - .testEquals(); - } - - /** - * Checks the construction of a SubnetId object. - */ - @Test - public void testConstruction() { - final String subnetIdValue = "s"; - final SubnetId subnetId = SubnetId.subnetId(subnetIdValue); - assertThat(subnetId, is(notNullValue())); - assertThat(subnetId.subnetId(), is(subnetIdValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/DefaultNeutronNetworkTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/DefaultNeutronNetworkTest.java deleted file mode 100644 index 742d5933..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/DefaultNeutronNetworkTest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.tenantnetwork; - -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.DefaultTenantNetwork; -import org.onosproject.vtnrsc.PhysicalNetwork; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultNeutronNetwork class. - */ -public class DefaultNeutronNetworkTest { - - private String networkIdStr1 = "123"; - private String networkIdStr2 = "234"; - private String physicalNetworkStr = "1234"; - private String tenantIdStr = "345"; - private String segmentationIdStr = "1"; - private String name = "456"; - - /** - * Checks that the DefaultNeutronNetwork class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultTenantNetwork.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquality() { - TenantNetworkId networkid1 = TenantNetworkId.networkId(networkIdStr1); - TenantNetworkId networkid2 = TenantNetworkId.networkId(networkIdStr2); - PhysicalNetwork physicalNetwork = PhysicalNetwork - .physicalNetwork(physicalNetworkStr); - TenantId tenantId = TenantId.tenantId(tenantIdStr); - SegmentationId segmentationID = SegmentationId - .segmentationId(segmentationIdStr); - TenantNetwork p1 = new DefaultTenantNetwork(networkid1, name, false, - TenantNetwork.State.ACTIVE, - false, tenantId, false, - TenantNetwork.Type.LOCAL, - physicalNetwork, - segmentationID); - TenantNetwork p2 = new DefaultTenantNetwork(networkid1, name, false, - TenantNetwork.State.ACTIVE, - false, tenantId, false, - TenantNetwork.Type.LOCAL, - physicalNetwork, - segmentationID); - TenantNetwork p3 = new DefaultTenantNetwork(networkid2, name, false, - TenantNetwork.State.ACTIVE, - false, tenantId, false, - TenantNetwork.Type.LOCAL, - physicalNetwork, - segmentationID); - new EqualsTester().addEqualityGroup(p1, p2).addEqualityGroup(p3) - .testEquals(); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/PhysicalNetworkTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/PhysicalNetworkTest.java deleted file mode 100644 index e101795e..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/PhysicalNetworkTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.tenantnetwork; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.PhysicalNetwork; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for PhysicalNetwork class. - */ -public class PhysicalNetworkTest { - - final PhysicalNetwork physicalNetwork1 = PhysicalNetwork.physicalNetwork("1"); - final PhysicalNetwork sameAsPhysicalNetwork1 = PhysicalNetwork.physicalNetwork("1"); - final PhysicalNetwork physicalNetwork2 = PhysicalNetwork.physicalNetwork("2"); - - /** - * Checks that the PhysicalNetwork class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PhysicalNetwork.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(physicalNetwork1, sameAsPhysicalNetwork1) - .addEqualityGroup(physicalNetwork2).testEquals(); - } - - /** - * Checks the construction of a PhysicalNetwork object. - */ - @Test - public void testConstruction() { - final String physicalNetworkValue = "s"; - final PhysicalNetwork physicalNetwork = PhysicalNetwork - .physicalNetwork(physicalNetworkValue); - assertThat(physicalNetwork, is(notNullValue())); - assertThat(physicalNetwork.physicalNetwork(), is(physicalNetworkValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/SegmentationIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/SegmentationIdTest.java deleted file mode 100644 index dea7baf6..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/SegmentationIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.tenantnetwork; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.SegmentationId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for SegmentationId class. - */ -public class SegmentationIdTest { - - final SegmentationId segmentationID1 = SegmentationId.segmentationId("1"); - final SegmentationId sameAsSegmentationID1 = SegmentationId.segmentationId("1"); - final SegmentationId segmentationID2 = SegmentationId.segmentationId("2"); - - /** - * Checks that the SegmentationId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SegmentationId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(segmentationID1, sameAsSegmentationID1) - .addEqualityGroup(segmentationID2).testEquals(); - } - - /** - * Checks the construction of a segmentationId object. - */ - @Test - public void testConstruction() { - final String segmentationIdValue = "s"; - final SegmentationId segmentationId = SegmentationId.segmentationId(segmentationIdValue); - assertThat(segmentationId, is(notNullValue())); - assertThat(segmentationId.segmentationId(), is(segmentationIdValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantIdTest.java deleted file mode 100644 index e9216383..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.tenantnetwork; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.TenantId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for TenantId class. - */ -public class TenantIdTest { - - final TenantId tenantId1 = TenantId.tenantId("1"); - final TenantId sameAsTenantId1 = TenantId.tenantId("1"); - final TenantId tenantId2 = TenantId.tenantId("2"); - - /** - * Checks that the TenantId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(TenantId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(tenantId1, sameAsTenantId1).addEqualityGroup(tenantId2) - .testEquals(); - } - - /** - * Checks the construction of a TenantId object. - */ - @Test - public void testConstruction() { - final String tenantIdValue = "s"; - final TenantId tenantId = TenantId.tenantId(tenantIdValue); - assertThat(tenantId, is(notNullValue())); - assertThat(tenantId.tenantId(), is(tenantIdValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkIdTest.java deleted file mode 100644 index 8271b51c..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.tenantnetwork; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.TenantNetworkId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for TenantNetworkId class. - */ -public class TenantNetworkIdTest { - - final TenantNetworkId networkId1 = TenantNetworkId.networkId("1"); - final TenantNetworkId sameAsnetworkId1 = TenantNetworkId.networkId("1"); - final TenantNetworkId networkId2 = TenantNetworkId.networkId("2"); - - /** - * Checks that the TenantNetworkId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(TenantNetworkId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(networkId1, sameAsnetworkId1) - .addEqualityGroup(networkId2).testEquals(); - } - - /** - * Checks the construction of a TenantNetworkId object. - */ - @Test - public void testConstruction() { - final String networkIdValue = "s"; - final TenantNetworkId networkId = TenantNetworkId.networkId(networkIdValue); - assertThat(networkId, is(notNullValue())); - assertThat(networkId.networkId(), is(networkIdValue)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/AllowedAddressPairTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/AllowedAddressPairTest.java deleted file mode 100644 index dabe5896..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/AllowedAddressPairTest.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc.virtualport; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.vtnrsc.AllowedAddressPair; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for AllowedAddressPair class. - */ -public class AllowedAddressPairTest { - - final IpAddress ip1 = IpAddress.valueOf("192.168.0.1"); - final IpAddress ip2 = IpAddress.valueOf("192.168.0.2"); - final MacAddress mac1 = MacAddress.valueOf("fa:16:3e:76:83:88"); - final MacAddress mac2 = MacAddress.valueOf("aa:16:3e:76:83:88"); - - /** - * Checks that the AllowedAddressPair class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(AllowedAddressPair.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - AllowedAddressPair p1 = AllowedAddressPair - .allowedAddressPair(ip1, mac1); - AllowedAddressPair p2 = AllowedAddressPair - .allowedAddressPair(ip1, mac1); - AllowedAddressPair p3 = AllowedAddressPair - .allowedAddressPair(ip2, mac2); - new EqualsTester().addEqualityGroup(p1, p2).addEqualityGroup(p3) - .testEquals(); - } - - /** - * Checks the construction of a AllowedAddressPair object. - */ - @Test - public void testConstruction() { - AllowedAddressPair allowedAddressPair = AllowedAddressPair - .allowedAddressPair(ip1, mac1); - assertThat(ip1, is(notNullValue())); - assertThat(ip1, is(allowedAddressPair.ip())); - assertThat(mac1, is(notNullValue())); - assertThat(mac1, is(allowedAddressPair.mac())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/DefaultVirtualPortTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/DefaultVirtualPortTest.java deleted file mode 100644 index 8a0c8004..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/DefaultVirtualPortTest.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc.virtualport; - -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import java.util.Map; -import java.util.Set; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultVirtualPort; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; - -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultVirtualPort class. - */ -public class DefaultVirtualPortTest { - - private Set<FixedIp> fixedIps; - private Map<String, String> propertyMap; - private Set<AllowedAddressPair> allowedAddressPairs; - private Set<SecurityGroup> securityGroups; - private VirtualPortId id1; - private VirtualPortId id2; - private String macAddressStr = "fa:12:3e:56:ee:a2"; - private String ipAddress = "10.1.1.1"; - private String deviceStr = "of:000000000000001"; - private String tenantIdStr = "123"; - private String portId1 = "1241"; - private String portId2 = "1242"; - private String tenantNetworkId = "1234567"; - private String subnet = "1212"; - private String hostIdStr = "fa:e2:3e:56:ee:a2"; - - private void initVirtualPortId() { - id1 = VirtualPortId.portId(portId1); - id2 = VirtualPortId.portId(portId2); - } - - private void initFixedIpSet() { - FixedIp fixedIp = FixedIp.fixedIp(SubnetId.subnetId(subnet), - IpAddress.valueOf(ipAddress)); - fixedIps = Sets.newHashSet(); - fixedIps.add(fixedIp); - } - - private void initPropertyMap() { - String deviceOwner = "james"; - propertyMap = Maps.newHashMap(); - propertyMap.putIfAbsent("deviceOwner", deviceOwner); - } - - private void initAddressPairSet() { - allowedAddressPairs = Sets.newHashSet(); - AllowedAddressPair allowedAddressPair = AllowedAddressPair - .allowedAddressPair(IpAddress.valueOf(ipAddress), - MacAddress.valueOf(macAddressStr)); - allowedAddressPairs.add(allowedAddressPair); - } - - private void initSecurityGroupSet() { - securityGroups = Sets.newHashSet(); - } - - /** - * Checks that the DefaultVirtualPort class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SecurityGroup.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - initVirtualPortId(); - initFixedIpSet(); - initPropertyMap(); - initAddressPairSet(); - initSecurityGroupSet(); - TenantNetworkId networkId = TenantNetworkId.networkId(tenantNetworkId); - MacAddress macAddress = MacAddress.valueOf(macAddressStr); - TenantId tenantId = TenantId.tenantId(tenantIdStr); - DeviceId deviceId = DeviceId.deviceId(deviceStr); - BindingHostId bindingHostId = BindingHostId.bindingHostId(hostIdStr); - - VirtualPort d1 = new DefaultVirtualPort(id1, networkId, true, - propertyMap, - VirtualPort.State.ACTIVE, - macAddress, tenantId, deviceId, - fixedIps, bindingHostId, - allowedAddressPairs, - securityGroups); - VirtualPort d2 = new DefaultVirtualPort(id1, networkId, true, - propertyMap, - VirtualPort.State.ACTIVE, - macAddress, tenantId, deviceId, - fixedIps, bindingHostId, - allowedAddressPairs, - securityGroups); - VirtualPort d3 = new DefaultVirtualPort(id2, networkId, true, - propertyMap, - VirtualPort.State.ACTIVE, - macAddress, tenantId, deviceId, - fixedIps, bindingHostId, - allowedAddressPairs, - securityGroups); - new EqualsTester().addEqualityGroup(d1, d2).addEqualityGroup(d3) - .testEquals(); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/FixedIpTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/FixedIpTest.java deleted file mode 100644 index 1e33da09..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/FixedIpTest.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc.virtualport; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.SubnetId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for FixedIp class. - */ -public class FixedIpTest { - - final SubnetId subnetId1 = SubnetId.subnetId("lef11-95w-4er-9c9c"); - final SubnetId subnetId2 = SubnetId.subnetId("lefaa-95w-4er-9c9c"); - final IpAddress ip1 = IpAddress.valueOf("192.168.0.1"); - final IpAddress ip2 = IpAddress.valueOf("192.168.1.1"); - - /** - * Checks that the FixedIp class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(FixedIp.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - FixedIp fixedIp1 = FixedIp.fixedIp(subnetId1, ip1); - FixedIp fixedIp2 = FixedIp.fixedIp(subnetId1, ip1); - FixedIp fixedIp3 = FixedIp.fixedIp(subnetId2, ip2); - new EqualsTester().addEqualityGroup(fixedIp1, fixedIp2) - .addEqualityGroup(fixedIp3).testEquals(); - } - - /** - * Checks the construction of a FixedIp object. - */ - @Test - public void testConstruction() { - FixedIp fixedIp = FixedIp.fixedIp(subnetId1, ip1); - assertThat(ip1, is(notNullValue())); - assertThat(ip1, is(fixedIp.ip())); - assertThat(subnetId1, is(notNullValue())); - assertThat(subnetId1, is(fixedIp.subnetId())); - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/SecurityGroupTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/SecurityGroupTest.java deleted file mode 100644 index 8c04e499..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/SecurityGroupTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc.virtualport; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.SecurityGroup; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for SecurityGroup class. - */ -public class SecurityGroupTest { - - final SecurityGroup securityGroup1 = SecurityGroup.securityGroup("1"); - final SecurityGroup sameAssecurityGroup = SecurityGroup.securityGroup("1"); - final SecurityGroup securityGroup2 = SecurityGroup.securityGroup("2"); - - /** - * Checks that the SecurityGroup class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SecurityGroup.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(securityGroup1, sameAssecurityGroup) - .addEqualityGroup(securityGroup2).testEquals(); - } - - /** - * Checks the construction of a SecurityGroup object. - */ - @Test - public void testConstruction() { - final String securityGroupValue = "1"; - final SecurityGroup securityGroup = SecurityGroup.securityGroup(securityGroupValue); - assertThat(securityGroup, is(notNullValue())); - assertThat(securityGroup.securityGroup(), is(securityGroupValue)); - - } -} diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/VirtualPortIdTest.java b/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/VirtualPortIdTest.java deleted file mode 100644 index 2d63e91c..00000000 --- a/framework/src/onos/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/virtualport/VirtualPortIdTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc.virtualport; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.VirtualPortId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for VirtualPortId class. - */ -public class VirtualPortIdTest { - - final VirtualPortId virtualPortId1 = VirtualPortId.portId("1"); - final VirtualPortId sameAsVirtualPortId1 = VirtualPortId.portId("1"); - final VirtualPortId virtualPortId2 = VirtualPortId.portId("2"); - - /** - * Checks that the VirtualPortId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(VirtualPortId.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(virtualPortId1, sameAsVirtualPortId1) - .addEqualityGroup(virtualPortId2).testEquals(); - } - - /** - * Checks the construction of a VirtualPortId object. - */ - @Test - public void testConstruction() { - final String vPortIdValue = "aaa"; - final VirtualPortId virtualPortId = VirtualPortId.portId(vPortIdValue); - assertThat(virtualPortId, is(notNullValue())); - assertThat(virtualPortId.portId(), is(vPortIdValue)); - - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java index 7a57c0ab..b0e2f38d 100644 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java +++ b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java @@ -15,15 +15,12 @@ */ package org.onosproject.vtnweb.resources; -import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; -import static org.onlab.util.Tools.nullIsNotFound; import static javax.ws.rs.core.Response.Status.NOT_FOUND; +import static javax.ws.rs.core.Response.Status.OK; +import static org.onlab.util.Tools.nullIsNotFound; import java.io.IOException; import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.UUID; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; @@ -36,13 +33,17 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.onosproject.rest.AbstractWebResource; import org.onosproject.vtnrsc.FlowClassifier; import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.rest.AbstractWebResource; import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; import org.onosproject.vtnweb.web.FlowClassifierCodec; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; /** @@ -51,73 +52,51 @@ import com.fasterxml.jackson.databind.node.ObjectNode; @Path("flow_classifiers") public class FlowClassifierWebResource extends AbstractWebResource { + private final Logger log = LoggerFactory.getLogger(FlowClassifierWebResource.class); + final FlowClassifierService service = get(FlowClassifierService.class); - final ObjectNode root = mapper().createObjectNode(); public static final String FLOW_CLASSIFIER_NOT_FOUND = "Flow classifier not found"; /** - * Get all flow classifiers created. Returns list of all flow classifiers - * created. + * Get all flow classifiers created. * * @return 200 OK */ @GET @Produces(MediaType.APPLICATION_JSON) public Response getFlowClassifiers() { - Iterable<FlowClassifier> flowClassifiers = service.getFlowClassifiers(); + final Iterable<FlowClassifier> flowClassifiers = service.getFlowClassifiers(); ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("flow_classifiers", new FlowClassifierCodec().encode(flowClassifiers, this)); + ArrayNode flowClassifierEntry = result.putArray("flow_classifiers"); + if (flowClassifiers != null) { + for (final FlowClassifier flowClassifier : flowClassifiers) { + flowClassifierEntry.add(new FlowClassifierCodec().encode(flowClassifier, this)); + } + } return ok(result.toString()).build(); } /** - * Get details of a flow classifier. Returns details of a specified flow - * classifier id. + * Get details of a flow classifier. * * @param id flow classifier id - * @return 200 OK + * @return 200 OK , 404 if given identifier does not exist */ @GET @Path("{flow_id}") @Produces(MediaType.APPLICATION_JSON) public Response getFlowClassifier(@PathParam("flow_id") String id) { - if (!service.hasFlowClassifier(FlowClassifierId.of(UUID.fromString(id)))) { + if (!service.hasFlowClassifier(FlowClassifierId.of(id))) { return Response.status(NOT_FOUND).entity(FLOW_CLASSIFIER_NOT_FOUND).build(); } - FlowClassifier flowClassifier = nullIsNotFound( - service.getFlowClassifier(FlowClassifierId.of(UUID.fromString(id))), + FlowClassifier flowClassifier = nullIsNotFound(service.getFlowClassifier(FlowClassifierId.of(id)), FLOW_CLASSIFIER_NOT_FOUND); ObjectNode result = new ObjectMapper().createObjectNode(); result.set("flow_classifier", new FlowClassifierCodec().encode(flowClassifier, this)); - return ok(result.toString()).build(); - } - /** - * Creates and stores a new flow classifier. - * - * @param flowClassifierId flow classifier identifier - * @param stream flow classifier from JSON - * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid - */ - @POST - @Path("{flow_id}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createFlowClassifier(@PathParam("flow_id") String flowClassifierId, InputStream stream) { - URI location; - try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - - FlowClassifier flowClassifier = codec(FlowClassifier.class).decode(jsonTree, this); - service.createFlowClassifier(flowClassifier); - location = new URI(flowClassifierId); - } catch (IOException | URISyntaxException ex) { - throw new IllegalArgumentException(ex); - } - return Response.created(location).build(); + return ok(result.toString()).build(); } /** @@ -125,32 +104,32 @@ public class FlowClassifierWebResource extends AbstractWebResource { * * @param stream flow classifier from JSON * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid + * BAD_REQUEST if the JSON is invalid */ @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response createFlowClassifier(InputStream stream) { - URI location; try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - - FlowClassifier flowClassifier = codec(FlowClassifier.class).decode(jsonTree, this); - service.createFlowClassifier(flowClassifier); - location = new URI(flowClassifier.flowClassifierId().toString()); - } catch (IOException | URISyntaxException ex) { + ObjectMapper mapper = new ObjectMapper(); + ObjectNode jsonTree = (ObjectNode) mapper.readTree(stream); + JsonNode flow = jsonTree.get("flow_classifier"); + + FlowClassifier flowClassifier = new FlowClassifierCodec().decode((ObjectNode) flow, this); + Boolean issuccess = nullIsNotFound(service.createFlowClassifier(flowClassifier), FLOW_CLASSIFIER_NOT_FOUND); + return Response.status(OK).entity(issuccess.toString()).build(); + } catch (IOException ex) { + log.error("Exception while creating flow classifier {}.", ex.toString()); throw new IllegalArgumentException(ex); } - return Response.created(location).build(); } /** - * Update details of a flow classifier. Update details of a specified flow - * classifier id. + * Update details of a flow classifier. * * @param id flow classifier id * @param stream InputStream - * @return 200 OK + * @return 200 OK, 404 if given identifier does not exist */ @PUT @Path("{flow_id}") @@ -158,35 +137,29 @@ public class FlowClassifierWebResource extends AbstractWebResource { @Consumes(MediaType.APPLICATION_JSON) public Response updateFlowClassifier(@PathParam("flow_id") String id, final InputStream stream) { try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - FlowClassifier flowClassifier = codec(FlowClassifier.class).decode(jsonTree, this); + + JsonNode jsonTree = mapper().readTree(stream); + JsonNode flow = jsonTree.get("flow_classifier"); + FlowClassifier flowClassifier = new FlowClassifierCodec().decode((ObjectNode) flow, this); Boolean result = nullIsNotFound(service.updateFlowClassifier(flowClassifier), FLOW_CLASSIFIER_NOT_FOUND); - if (!result) { - return Response.status(204).entity(FLOW_CLASSIFIER_NOT_FOUND).build(); - } - return Response.status(203).entity(result.toString()).build(); - } catch (Exception e) { - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()).build(); + return Response.status(OK).entity(result.toString()).build(); + } catch (IOException e) { + log.error("Update flow classifier failed because of exception {}.", e.toString()); + throw new IllegalArgumentException(e); } } /** - * Delete details of a flow classifier. Delete details of a specified flow - * classifier id. + * Delete details of a flow classifier. * * @param id flow classifier id - * @return 200 OK - * @throws IOException when input doesn't match. */ @Path("{flow_id}") @DELETE - public Response deleteFlowClassifier(@PathParam("flow_id") String id) throws IOException { - try { - FlowClassifierId flowClassifierId = FlowClassifierId.of(UUID.fromString(id)); - service.removeFlowClassifier(flowClassifierId); - return Response.status(201).entity("SUCCESS").build(); - } catch (Exception e) { - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()).build(); - } + public void deleteFlowClassifier(@PathParam("flow_id") String id) { + log.debug("Deletes flow classifier by identifier {}.", id); + FlowClassifierId flowClassifierId = FlowClassifierId.of(id); + Boolean issuccess = nullIsNotFound(service.removeFlowClassifier(flowClassifierId), FLOW_CLASSIFIER_NOT_FOUND); + } } diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java index 8bf459c2..b9012898 100644 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java +++ b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java @@ -42,7 +42,9 @@ import org.onosproject.vtnweb.web.PortPairCodec; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; /** @@ -67,8 +69,13 @@ public class PortPairWebResource extends AbstractWebResource { public Response getPortPairs() { Iterable<PortPair> portPairs = service.getPortPairs(); ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("port_pairs", new PortPairCodec().encode(portPairs, this)); - return ok(result).build(); + ArrayNode portPairEntry = result.putArray("port_pairs"); + if (portPairs != null) { + for (final PortPair portPair : portPairs) { + portPairEntry.add(new PortPairCodec().encode(portPair, this)); + } + } + return ok(result.toString()).build(); } /** @@ -80,18 +87,15 @@ public class PortPairWebResource extends AbstractWebResource { @GET @Path("{pair_id}") @Produces(MediaType.APPLICATION_JSON) - public Response getPortPair(@PathParam("portPairId") String id) { + public Response getPortPair(@PathParam("pair_id") String id) { if (!service.exists(PortPairId.of(id))) { - return Response.status(NOT_FOUND) - .entity(PORT_PAIR_NOT_FOUND).build(); + return Response.status(NOT_FOUND).entity(PORT_PAIR_NOT_FOUND).build(); } - PortPair portPair = nullIsNotFound(service.getPortPair(PortPairId.of(id)), - PORT_PAIR_NOT_FOUND); - + PortPair portPair = nullIsNotFound(service.getPortPair(PortPairId.of(id)), PORT_PAIR_NOT_FOUND); ObjectNode result = new ObjectMapper().createObjectNode(); result.set("port_pair", new PortPairCodec().encode(portPair, this)); - return ok(result).build(); + return ok(result.toString()).build(); } /** @@ -106,11 +110,11 @@ public class PortPairWebResource extends AbstractWebResource { @Produces(MediaType.APPLICATION_JSON) public Response createPortPair(InputStream stream) { try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - - PortPair portPair = codec(PortPair.class).decode(jsonTree, this); - Boolean isSuccess = nullIsNotFound(service.createPortPair(portPair), - PORT_PAIR_NOT_FOUND); + ObjectMapper mapper = new ObjectMapper(); + ObjectNode jsonTree = (ObjectNode) mapper.readTree(stream); + JsonNode port = jsonTree.get("port_pair"); + PortPair portPair = new PortPairCodec().decode((ObjectNode) port, this); + Boolean isSuccess = nullIsNotFound(service.createPortPair(portPair), PORT_PAIR_NOT_FOUND); return Response.status(OK).entity(isSuccess.toString()).build(); } catch (IOException e) { log.error("Exception while creating port pair {}.", e.toString()); @@ -132,8 +136,10 @@ public class PortPairWebResource extends AbstractWebResource { public Response updatePortPair(@PathParam("pair_id") String id, final InputStream stream) { try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - PortPair portPair = codec(PortPair.class).decode(jsonTree, this); + ObjectMapper mapper = new ObjectMapper(); + ObjectNode jsonTree = (ObjectNode) mapper.readTree(stream); + JsonNode port = jsonTree.get("port_pair"); + PortPair portPair = new PortPairCodec().decode((ObjectNode) port, this); Boolean isSuccess = nullIsNotFound(service.updatePortPair(portPair), PORT_PAIR_NOT_FOUND); return Response.status(OK).entity(isSuccess.toString()).build(); } catch (IOException e) { @@ -152,8 +158,7 @@ public class PortPairWebResource extends AbstractWebResource { public void deletePortPair(@PathParam("pair_id") String id) { PortPairId portPairId = PortPairId.of(id); - Boolean isSuccess = nullIsNotFound(service.removePortPair(portPairId), - PORT_PAIR_NOT_FOUND); + Boolean isSuccess = nullIsNotFound(service.removePortPair(portPairId), PORT_PAIR_NOT_FOUND); if (!isSuccess) { log.debug("Port pair identifier {} does not exist", id); } diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java index 4c17633c..a18ca362 100644 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java +++ b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java @@ -18,16 +18,14 @@ package org.onosproject.vtnweb.web; import static com.google.common.base.Preconditions.checkNotNull; import static org.onlab.util.Tools.nullIsIllegal; -import java.util.UUID; - import org.onlab.packet.IpPrefix; import org.onosproject.codec.CodecContext; import org.onosproject.codec.JsonCodec; import org.onosproject.vtnrsc.DefaultFlowClassifier; import org.onosproject.vtnrsc.FlowClassifier; import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.VirtualPortId; import org.onosproject.vtnrsc.TenantId; +import org.onosproject.vtnrsc.VirtualPortId; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -40,7 +38,7 @@ public final class FlowClassifierCodec extends JsonCodec<FlowClassifier> { private static final String TENANT_ID = "tenant_id"; private static final String NAME = "name"; private static final String DESCRIPTION = "description"; - private static final String ETHER_TYPE = "etherType"; + private static final String ETHER_TYPE = "ethertype"; private static final String PROTOCOL = "protocol"; private static final String MIN_SRC_PORT_RANGE = "source_port_range_min"; private static final String MAX_SRC_PORT_RANGE = "source_port_range_max"; @@ -62,7 +60,7 @@ public final class FlowClassifierCodec extends JsonCodec<FlowClassifier> { String flowClassifierId = nullIsIllegal(json.get(FLOW_CLASSIFIER_ID), FLOW_CLASSIFIER_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setFlowClassifierId(FlowClassifierId.of(UUID.fromString(flowClassifierId))); + resultBuilder.setFlowClassifierId(FlowClassifierId.of(flowClassifierId)); String tenantId = nullIsIllegal(json.get(TENANT_ID), TENANT_ID + MISSING_MEMBER_MESSAGE).asText(); resultBuilder.setTenantId(TenantId.tenantId(tenantId)); @@ -70,44 +68,46 @@ public final class FlowClassifierCodec extends JsonCodec<FlowClassifier> { String flowClassiferName = nullIsIllegal(json.get(NAME), NAME + MISSING_MEMBER_MESSAGE).asText(); resultBuilder.setName(flowClassiferName); - String flowClassiferDescription = nullIsIllegal(json.get(DESCRIPTION), DESCRIPTION + MISSING_MEMBER_MESSAGE) - .asText(); + String flowClassiferDescription = (json.get(DESCRIPTION)).asText(); resultBuilder.setDescription(flowClassiferDescription); String etherType = nullIsIllegal(json.get(ETHER_TYPE), ETHER_TYPE + MISSING_MEMBER_MESSAGE).asText(); resultBuilder.setEtherType(etherType); - String protocol = nullIsIllegal(json.get(PROTOCOL), PROTOCOL + MISSING_MEMBER_MESSAGE).asText(); + String protocol = (json.get(PROTOCOL)).asText(); resultBuilder.setProtocol(protocol); - int minSrcPortRange = nullIsIllegal(json.get(MIN_SRC_PORT_RANGE), MIN_SRC_PORT_RANGE + MISSING_MEMBER_MESSAGE) - .asInt(); + int minSrcPortRange = (json.get(MIN_SRC_PORT_RANGE)).asInt(); resultBuilder.setMinSrcPortRange(minSrcPortRange); - int maxSrcPortRange = nullIsIllegal(json.get(MAX_SRC_PORT_RANGE), MAX_SRC_PORT_RANGE + MISSING_MEMBER_MESSAGE) - .asInt(); + int maxSrcPortRange = (json.get(MAX_SRC_PORT_RANGE)).asInt(); resultBuilder.setMaxSrcPortRange(maxSrcPortRange); - int minDstPortRange = nullIsIllegal(json.get(MIN_DST_PORT_RANGE), MIN_DST_PORT_RANGE + MISSING_MEMBER_MESSAGE) - .asInt(); + int minDstPortRange = (json.get(MIN_DST_PORT_RANGE)).asInt(); resultBuilder.setMinDstPortRange(minDstPortRange); - int maxDstPortRange = nullIsIllegal(json.get(MAX_DST_PORT_RANGE), MAX_DST_PORT_RANGE + MISSING_MEMBER_MESSAGE) - .asInt(); + int maxDstPortRange = (json.get(MAX_DST_PORT_RANGE)).asInt(); resultBuilder.setMaxDstPortRange(maxDstPortRange); - String srcIpPrefix = nullIsIllegal(json.get(SRC_IP_PREFIX), SRC_IP_PREFIX + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setSrcIpPrefix(IpPrefix.valueOf(srcIpPrefix)); - - String dstIpPrefix = nullIsIllegal(json.get(DST_IP_PREFIX), DST_IP_PREFIX + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setDstIpPrefix(IpPrefix.valueOf(dstIpPrefix)); + String srcIpPrefix = (json.get(SRC_IP_PREFIX)).asText(); + if (!srcIpPrefix.isEmpty()) { + resultBuilder.setSrcIpPrefix(IpPrefix.valueOf(srcIpPrefix)); + } - String srcPort = nullIsIllegal(json.get(SRC_PORT), SRC_PORT + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setSrcPort(VirtualPortId.portId(srcPort)); + String dstIpPrefix = (json.get(DST_IP_PREFIX)).asText(); + if (!dstIpPrefix.isEmpty()) { + resultBuilder.setDstIpPrefix(IpPrefix.valueOf(dstIpPrefix)); + } - String dstPort = nullIsIllegal(json.get(DST_PORT), DST_PORT + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setDstPort(VirtualPortId.portId(dstPort)); + String srcPort = json.get(SRC_PORT) != null ? (json.get(SRC_PORT)).asText() : ""; + if (!srcPort.isEmpty()) { + resultBuilder.setSrcPort(VirtualPortId.portId(srcPort)); + } + String dstPort = json.get(DST_PORT) != null ? (json.get(DST_PORT)).asText() : ""; + if (!dstPort.isEmpty()) { + resultBuilder.setDstPort(VirtualPortId.portId(dstPort)); + } return resultBuilder.build(); } @@ -115,20 +115,20 @@ public final class FlowClassifierCodec extends JsonCodec<FlowClassifier> { public ObjectNode encode(FlowClassifier flowClassifier, CodecContext context) { checkNotNull(flowClassifier, "flowClassifier cannot be null"); ObjectNode result = context.mapper().createObjectNode() - .put("FLOW_CLASSIFIER_ID", flowClassifier.flowClassifierId().toString()) - .put("TENANT_ID", flowClassifier.tenantId().toString()) - .put("NAME", flowClassifier.name()) - .put("DESCRIPTION", flowClassifier.description()) - .put("ETHER_TYPE", flowClassifier.etherType()) - .put("PROTOCOL", flowClassifier.protocol()) - .put("MIN_SRC_PORT_RANGE", flowClassifier.minSrcPortRange()) - .put("MAX_SRC_PORT_RANGE", flowClassifier.maxSrcPortRange()) - .put("MIN_DST_PORT_RANGE", flowClassifier.minDstPortRange()) - .put("MAX_DST_PORT_RANGE", flowClassifier.maxDstPortRange()) - .put("SRC_IP_PREFIX", flowClassifier.srcIpPrefix().toString()) - .put("DST_IP_PREFIX", flowClassifier.dstIpPrefix().toString()) - .put("SRC_PORT", flowClassifier.srcPort().toString()) - .put("DST_PORT", flowClassifier.dstPort().toString()); + .put(FLOW_CLASSIFIER_ID, flowClassifier.flowClassifierId().toString()) + .put(TENANT_ID, flowClassifier.tenantId().toString()) + .put(NAME, flowClassifier.name()) + .put(DESCRIPTION, flowClassifier.description()) + .put(ETHER_TYPE, flowClassifier.etherType()) + .put(PROTOCOL, flowClassifier.protocol()) + .put(MIN_SRC_PORT_RANGE, flowClassifier.minSrcPortRange()) + .put(MAX_SRC_PORT_RANGE, flowClassifier.maxSrcPortRange()) + .put(MIN_DST_PORT_RANGE, flowClassifier.minDstPortRange()) + .put(MAX_DST_PORT_RANGE, flowClassifier.maxDstPortRange()) + .put(SRC_IP_PREFIX, flowClassifier.srcIpPrefix().toString()) + .put(DST_IP_PREFIX, flowClassifier.dstIpPrefix().toString()) + .put(SRC_PORT, flowClassifier.srcPort().toString()) + .put(DST_PORT, flowClassifier.dstPort().toString()); return result; } } diff --git a/framework/src/onos/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java b/framework/src/onos/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java deleted file mode 100644 index 1f686aeb..00000000 --- a/framework/src/onos/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java +++ /dev/null @@ -1,545 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.xosintegration; - -import com.eclipsesource.json.JsonArray; -import com.eclipsesource.json.JsonObject; -import com.google.common.collect.Maps; -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.ClientHandlerException; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Modified; -import org.apache.felix.scr.annotations.Property; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.apache.felix.scr.annotations.Service; -import org.onlab.packet.VlanId; -import org.onlab.util.Tools; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.osgi.service.component.ComponentContext; -import org.slf4j.Logger; - -import java.util.Dictionary; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -import static com.google.common.base.Strings.isNullOrEmpty; -import static com.google.common.net.MediaType.JSON_UTF_8; -import static java.net.HttpURLConnection.HTTP_CREATED; -import static java.net.HttpURLConnection.HTTP_NO_CONTENT; -import static java.net.HttpURLConnection.HTTP_OK; -import static org.slf4j.LoggerFactory.getLogger; - - -/** - * XOS interface application. - */ -@Component(immediate = true) -@Service -public class OnosXOSIntegrationManager implements VoltTenantService { - private static final String XOS_SERVER_ADDRESS_PROPERTY_NAME = - "xosServerAddress"; - private static final String XOS_SERVER_PORT_PROPERTY_NAME = - "xosServerPort"; - private static final String XOS_PROVIDER_SERVICE_PROPERTY_NAME = - "xosProviderService"; - - private static final String TEST_XOS_SERVER_ADDRESS = "10.254.1.22"; - private static final int TEST_XOS_SERVER_PORT = 8000; - private static final String XOS_TENANT_BASE_URI = "/xoslib/volttenant/"; - private static final int TEST_XOS_PROVIDER_SERVICE = 1; - - private static final int PRIORITY = 50000; - private static final DeviceId FABRIC_DEVICE_ID = DeviceId.deviceId("of:5e3e486e73000187"); - private static final PortNumber FABRIC_OLT_CONNECT_POINT = PortNumber.portNumber(2); - private static final PortNumber FABRIC_VCPE_CONNECT_POINT = PortNumber.portNumber(3); - private static final String FABRIC_CONTROLLER_ADDRESS = "10.0.3.136"; - private static final int FABRIC_SERVER_PORT = 8181; - private static final String FABRIC_BASE_URI = "/onos/cordfabric/vlans/add"; - - private static final DeviceId OLT_DEVICE_ID = DeviceId.deviceId("of:90e2ba82f97791e9"); - private static final int OLT_UPLINK_PORT = 129; - - private static final ConnectPoint FABRIC_PORT = new ConnectPoint( - DeviceId.deviceId("of:000090e2ba82f974"), - PortNumber.portNumber(2)); - - private final Logger log = getLogger(getClass()); - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CoreService coreService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ComponentConfigService cfgService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected FlowObjectiveService flowObjectiveService; - - @Property(name = XOS_SERVER_ADDRESS_PROPERTY_NAME, - value = TEST_XOS_SERVER_ADDRESS, - label = "XOS Server address") - protected String xosServerAddress = TEST_XOS_SERVER_ADDRESS; - - @Property(name = XOS_SERVER_PORT_PROPERTY_NAME, - intValue = TEST_XOS_SERVER_PORT, - label = "XOS Server port") - protected int xosServerPort = TEST_XOS_SERVER_PORT; - - @Property(name = XOS_PROVIDER_SERVICE_PROPERTY_NAME, - intValue = TEST_XOS_PROVIDER_SERVICE, - label = "XOS Provider Service") - protected int xosProviderService = TEST_XOS_PROVIDER_SERVICE; - - private ApplicationId appId; - private Map<String, ConnectPoint> nodeToPort; - private Map<Long, Short> portToVlan; - private Map<ConnectPoint, String> portToSsid; - - @Activate - public void activate(ComponentContext context) { - log.info("XOS app is starting"); - cfgService.registerProperties(getClass()); - appId = coreService.registerApplication("org.onosproject.xosintegration"); - - setupMap(); - - readComponentConfiguration(context); - - log.info("XOS({}) started", appId.id()); - } - - @Deactivate - public void deactivate() { - cfgService.unregisterProperties(getClass(), false); - log.info("XOS({}) stopped", appId.id()); - } - - @Modified - public void modified(ComponentContext context) { - readComponentConfiguration(context); - } - - private void setupMap() { - nodeToPort = Maps.newHashMap(); - - nodeToPort.put("cordcompute01.onlab.us", new ConnectPoint(FABRIC_DEVICE_ID, - PortNumber.portNumber(4))); - - nodeToPort.put("cordcompute02.onlab.us", new ConnectPoint(FABRIC_DEVICE_ID, - PortNumber.portNumber(3))); - - portToVlan = Maps.newHashMap(); - portToVlan.putIfAbsent(1L, (short) 201); - portToVlan.putIfAbsent(6L, (short) 401); - - portToSsid = Maps.newHashMap(); - portToSsid.put(new ConnectPoint(OLT_DEVICE_ID, PortNumber.portNumber(1)), "0"); - portToSsid.put(new ConnectPoint(FABRIC_DEVICE_ID, PortNumber.portNumber(6)), "1"); - } - - /** - * Converts a JSON representation of a tenant into a tenant object. - * - * @param jsonTenant JSON object representing the tenant - * @return volt tenant object - */ - private VoltTenant jsonToTenant(JsonObject jsonTenant) { - return VoltTenant.builder() - .withHumanReadableName(jsonTenant.get("humanReadableName").asString()) - .withId(jsonTenant.get("id").asInt()) - .withProviderService(jsonTenant.get("provider_service").asInt()) - .withServiceSpecificId(jsonTenant.get("service_specific_id").asString()) - .withVlanId(jsonTenant.get("vlan_id").asString()) - .build(); - } - - /** - * Converts a tenant object into a JSON string. - * - * @param tenant volt tenant object to convert - * @return JSON string for the tenant - */ - private String tenantToJson(VoltTenant tenant) { - return "{" - + "\"humanReadableName\": \"" + tenant.humanReadableName() + "\"," - + "\"id\": \"" + tenant.id() + "\"," - + "\"provider_service\": \"" + tenant.providerService() + "\"," - + "\"service_specific_id\": \"" + tenant.serviceSpecificId() + "\"," - + "\"vlan_id\": \"" + tenant.vlanId() + "\"" - + "}"; - } - - /** - * Gets a client web resource builder for the base XOS REST API - * with no additional URI. - * - * @return web resource builder - * @deprecated in Cardinal Release - */ - @Deprecated - private WebResource.Builder getClientBuilder() { - return getClientBuilder(""); - } - - /** - * Gets a client web resource builder for the base XOS REST API - * with an optional additional URI. - * - * @return web resource builder - * @deprecated in Cardinal Release - */ - @Deprecated - private WebResource.Builder getClientBuilder(String uri) { - String baseUrl = "http://" + xosServerAddress + ":" - + Integer.toString(xosServerPort); - Client client = Client.create(); - client.addFilter(new HTTPBasicAuthFilter("padmin@vicci.org", "letmein")); - WebResource resource = client.resource(baseUrl - + XOS_TENANT_BASE_URI + uri); - return resource.accept(JSON_UTF_8.toString()) - .type(JSON_UTF_8.toString()); - } - - /** - * Performs a REST GET operation on the base XOS REST URI. - * - * @return JSON string fetched by the GET operation - * @deprecated in Cardinal Release - */ - @Deprecated - private String getRest() { - return getRest(""); - } - - /** - * Performs a REST GET operation on the base XOS REST URI with - * an optional additional URI. - * - * @return JSON string fetched by the GET operation - * @deprecated in Cardinal Release - */ - @Deprecated - private String getRest(String uri) { - WebResource.Builder builder = getClientBuilder(uri); - ClientResponse response = builder.get(ClientResponse.class); - - if (response.getStatus() != HTTP_OK) { - log.info("REST GET request returned error code {}", - response.getStatus()); - } - String jsonString = response.getEntity(String.class); - log.info("JSON read:\n{}", jsonString); - - return jsonString; - } - - /** - * Performs a REST POST operation of a json string on the base - * XOS REST URI with an optional additional URI. - * - * @param json JSON string to post - * @deprecated in Cardinal Release - */ - @Deprecated - private String postRest(String json) { - WebResource.Builder builder = getClientBuilder(); - ClientResponse response; - - try { - response = builder.post(ClientResponse.class, json); - } catch (ClientHandlerException e) { - log.warn("Unable to contact REST server: {}", e.getMessage()); - return "{ 'error' : 'oops no one home' }"; - } - - if (response.getStatus() != HTTP_CREATED) { - log.info("REST POST request returned error code {}", - response.getStatus()); - } - return response.getEntity(String.class); - } - - /** - * Performs a REST DELETE operation on the base - * XOS REST URI with an optional additional URI. - * - * @param uri optional additional URI - * @deprecated in Cardinal Release - */ - @Deprecated - private void deleteRest(String uri) { - WebResource.Builder builder = getClientBuilder(uri); - ClientResponse response = builder.delete(ClientResponse.class); - - if (response.getStatus() != HTTP_NO_CONTENT) { - log.info("REST DELETE request returned error code {}", - response.getStatus()); - } - } - - /** - * Deletes the tenant with the given ID. - * - * @param tenantId ID of tenant to delete - */ - private void deleteTenant(long tenantId) { - deleteRest(Long.toString(tenantId)); - } - - @Override - public Set<VoltTenant> getAllTenants() { - String jsonString = getRest(); - - JsonArray voltTenantItems = JsonArray.readFrom(jsonString); - - return IntStream.range(0, voltTenantItems.size()) - .mapToObj(index -> jsonToTenant(voltTenantItems.get(index).asObject())) - .collect(Collectors.toSet()); - } - - @Override - public void removeTenant(long id) { - deleteTenant(id); - } - - @Override - public VoltTenant addTenant(VoltTenant newTenant) { - long providerServiceId = newTenant.providerService(); - if (providerServiceId == -1) { - providerServiceId = xosProviderService; - } - - PortNumber onuPort = newTenant.port().port(); - VlanId subscriberVlan = VlanId.vlanId(portToVlan.get(onuPort.toLong())); - - VoltTenant tenantToCreate = VoltTenant.builder() - .withProviderService(providerServiceId) - .withServiceSpecificId(portToSsid.get(newTenant.port())) - .withVlanId(String.valueOf(subscriberVlan.toShort())) - .withPort(newTenant.port()) - .build(); - String json = tenantToJson(tenantToCreate); - - - provisionVlanOnPort(OLT_DEVICE_ID, OLT_UPLINK_PORT, onuPort, subscriberVlan.toShort()); - - String retJson = postRest(json); - - fetchCPELocation(tenantToCreate, retJson); - - return newTenant; - } - - private void fetchCPELocation(VoltTenant newTenant, String jsonString) { - JsonObject json = JsonObject.readFrom(jsonString); - - if (json.get("computeNodeName") != null) { - ConnectPoint point = nodeToPort.get(json.get("computeNodeName").asString()); - //ConnectPoint fromPoint = newTenant.port(); - ConnectPoint oltPort = new ConnectPoint(FABRIC_DEVICE_ID, FABRIC_OLT_CONNECT_POINT); - - provisionFabric(VlanId.vlanId(Short.parseShort(newTenant.vlanId())), - point, oltPort); - } - - } - - @Override - public VoltTenant getTenant(long id) { - String jsonString = getRest(Long.toString(id)); - JsonObject jsonTenant = JsonObject.readFrom(jsonString); - if (jsonTenant.get("id") != null) { - return jsonToTenant(jsonTenant); - } else { - return null; - } - } - - private void provisionVlanOnPort(DeviceId deviceId, int uplinkPort, PortNumber p, short vlanId) { - - TrafficSelector upstream = DefaultTrafficSelector.builder() - .matchVlanId(VlanId.ANY) - .matchInPort(p) - .build(); - - TrafficSelector downstream = DefaultTrafficSelector.builder() - .matchVlanId(VlanId.vlanId(vlanId)) - .matchInPort(PortNumber.portNumber(uplinkPort)) - .build(); - - TrafficTreatment upstreamTreatment = DefaultTrafficTreatment.builder() - .setVlanId(VlanId.vlanId(vlanId)) - .setOutput(PortNumber.portNumber(uplinkPort)) - .build(); - - TrafficTreatment downstreamTreatment = DefaultTrafficTreatment.builder() - .popVlan() - .setOutput(p) - .build(); - - - ForwardingObjective upFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(upstream) - .fromApp(appId) - .withTreatment(upstreamTreatment) - .add(); - - ForwardingObjective downFwd = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(1000) - .makePermanent() - .withSelector(downstream) - .fromApp(appId) - .withTreatment(downstreamTreatment) - .add(); - - flowObjectiveService.forward(deviceId, upFwd); - flowObjectiveService.forward(deviceId, downFwd); - - } - - private void provisionDataPlane(VoltTenant tenant) { - VlanId vlan = VlanId.vlanId(Short.parseShort(tenant.vlanId())); - - TrafficSelector fromGateway = DefaultTrafficSelector.builder() - .matchInPhyPort(tenant.port().port()) - .build(); - - TrafficSelector fromFabric = DefaultTrafficSelector.builder() - .matchInPhyPort(FABRIC_PORT.port()) - .matchVlanId(vlan) - .build(); - - TrafficTreatment toFabric = DefaultTrafficTreatment.builder() - .pushVlan() - .setVlanId(vlan) - .setOutput(FABRIC_PORT.port()) - .build(); - - TrafficTreatment toGateway = DefaultTrafficTreatment.builder() - .popVlan() - .setOutput(tenant.port().port()) - .build(); - - ForwardingObjective forwardToFabric = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(PRIORITY) - .makePermanent() - .fromApp(appId) - .withSelector(fromGateway) - .withTreatment(toFabric) - .add(); - - ForwardingObjective forwardToGateway = DefaultForwardingObjective.builder() - .withFlag(ForwardingObjective.Flag.VERSATILE) - .withPriority(PRIORITY) - .makePermanent() - .fromApp(appId) - .withSelector(fromFabric) - .withTreatment(toGateway) - .add(); - - flowObjectiveService.forward(FABRIC_PORT.deviceId(), forwardToFabric); - flowObjectiveService.forward(FABRIC_PORT.deviceId(), forwardToGateway); - } - - private void provisionFabric(VlanId vlanId, ConnectPoint point, ConnectPoint fromPoint) { - - long vlan = vlanId.toShort(); - - JsonObject node = new JsonObject(); - node.add("vlan", vlan); - if (vlan == 201) { - node.add("iptv", true); - } else { - node.add("iptv", false); - } - JsonArray array = new JsonArray(); - JsonObject cp1 = new JsonObject(); - JsonObject cp2 = new JsonObject(); - cp1.add("device", point.deviceId().toString()); - cp1.add("port", point.port().toLong()); - cp2.add("device", fromPoint.deviceId().toString()); - cp2.add("port", fromPoint.port().toLong()); - array.add(cp1); - array.add(cp2); - node.add("ports", array); - - - String baseUrl = "http://" + FABRIC_CONTROLLER_ADDRESS + ":" - + Integer.toString(FABRIC_SERVER_PORT); - Client client = Client.create(); - WebResource resource = client.resource(baseUrl + FABRIC_BASE_URI); - WebResource.Builder builder = resource.accept(JSON_UTF_8.toString()) - .type(JSON_UTF_8.toString()); - - try { - builder.post(ClientResponse.class, node.toString()); - } catch (ClientHandlerException e) { - log.warn("Unable to contact fabric REST server: {}", e.getMessage()); - return; - } - } - - /** - * Extracts properties from the component configuration context. - * - * @param context the component context - */ - private void readComponentConfiguration(ComponentContext context) { - Dictionary<?, ?> properties = context.getProperties(); - - String newXosServerAddress = - Tools.get(properties, XOS_SERVER_ADDRESS_PROPERTY_NAME); - if (!isNullOrEmpty(newXosServerAddress)) { - xosServerAddress = newXosServerAddress; - } - - String newXosServerPortString = - Tools.get(properties, XOS_SERVER_PORT_PROPERTY_NAME); - if (!isNullOrEmpty(newXosServerPortString)) { - xosServerPort = Integer.parseInt(newXosServerPortString); - } - - String newXosProviderServiceString = - Tools.get(properties, XOS_PROVIDER_SERVICE_PROPERTY_NAME); - if (!isNullOrEmpty(newXosProviderServiceString)) { - xosProviderService = Integer.parseInt(newXosProviderServiceString); - } - } -} - - diff --git a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPConnectPeer.java b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPConnectPeer.java deleted file mode 100755 index a2a66438..00000000 --- a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPConnectPeer.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package org.onosproject.bgp.controller; - -import java.util.concurrent.ExecutorService; - -/** - * Abstraction of an BGP connect peer, initiate remote connection to BGP peer on configuration. - */ -public interface BGPConnectPeer { - - /** - * Returns the executor initialized to connect peer. - * - * @return connectExecutor the connection executor - */ - ExecutorService connectExecutor(); -} diff --git a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java index 49432aab..9d44041e 100755 --- a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java +++ b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java @@ -16,11 +16,15 @@ package org.onosproject.bgp.controller; +import java.util.Map; +import java.util.Set; + +import org.onosproject.bgpio.exceptions.BGPParseException; import org.onosproject.bgpio.protocol.BGPMessage; /** - * Abstraction of an BGP controller. Serves as a one stop shop for obtaining BGP devices and (un)register listeners - * on bgp events + * Abstraction of an BGP controller. Serves as a one stop shop for obtaining BGP devices and (un)register listeners on + * bgp events */ public interface BGPController { @@ -40,6 +44,34 @@ public interface BGPController { BGPPeer getPeer(BGPId bgpId); /** + * Register a listener for BGP message events. + * + * @param listener the listener to notify + */ + void addListener(BgpNodeListener listener); + + /** + * Unregister a listener. + * + * @param listener the listener to unregister + */ + void removeListener(BgpNodeListener listener); + + /** + * Register a listener for BGP message events. + * + * @param listener the listener to notify + */ + void addLinkListener(BgpLinkListener listener); + + /** + * Unregister a listener. + * + * @param listener the listener to unregister + */ + void removeLinkListener(BgpLinkListener listener); + + /** * Send a message to a particular bgp peer. * * @param bgpId the id of the peer to send message. @@ -52,8 +84,9 @@ public interface BGPController { * * @param bgpId id of the peer the message arrived on * @param msg the message to process. + * @throws BGPParseException on data processing error */ - void processBGPPacket(BGPId bgpId, BGPMessage msg); + void processBGPPacket(BGPId bgpId, BGPMessage msg) throws BGPParseException; /** * Close all connected BGP peers. @@ -73,5 +106,33 @@ public interface BGPController { * * @return the integer number */ - int getBGPConnNumber(); -}
\ No newline at end of file + int connectedPeerCount(); + + /** + * Return BGP peer manager. + * + * @return BGPPeerManager peer manager instance + */ + BgpPeerManager peerManager(); + + /** + * Return BGP connected peers. + * + * @return connectedPeers connected peers + */ + Map<BGPId, BGPPeer> connectedPeers(); + + /** + * Return BGP node listener. + * + * @return node listener + */ + Set<BgpNodeListener> listener(); + + /** + * Return BGP link listener. + * + * @return link listener + */ + Set<BgpLinkListener> linkListener(); +} diff --git a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeer.java b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeer.java index 1b022c76..aafaf06e 100755 --- a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeer.java +++ b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeer.java @@ -16,30 +16,16 @@ package org.onosproject.bgp.controller; import java.util.List; import org.jboss.netty.channel.Channel; +import org.onosproject.bgpio.protocol.BGPFactory; import org.onosproject.bgpio.protocol.BGPMessage; -import org.onosproject.bgpio.protocol.BGPVersion; /** - * Represents the peer side of an bgp peer. + * Represents the peer side of an BGP peer. * */ public interface BGPPeer { /** - * Sets the BGP version for this bgp peer. - * - * @param bgpVersion the version to set. - */ - void setBgpPeerVersion(BGPVersion bgpVersion); - - /** - * Gets the BGP version for this bgp peer. - * - * @return bgp identifier. - */ - int getBgpPeerIdentifier(); - - /** * Sets the associated Netty channel for this bgp peer. * * @param channel the Netty channel @@ -54,27 +40,6 @@ public interface BGPPeer { Channel getChannel(); /** - * Sets the AS Number for this bgp peer. - * - * @param peerASNum the autonomous system number value to set. - */ - void setBgpPeerASNum(short peerASNum); - - /** - * Sets the hold time for this bgp peer. - * - * @param peerHoldTime the hold timer value to set. - */ - void setBgpPeerHoldTime(short peerHoldTime); - - /** - * Sets the peer identifier value. - * - * @param peerIdentifier the bgp peer identifier value. - */ - void setBgpPeerIdentifier(int peerIdentifier); - - /** * Sets whether the bgp peer is connected. * * @param connected whether the bgp peer is connected @@ -82,15 +47,6 @@ public interface BGPPeer { void setConnected(boolean connected); /** - * Initialises the behaviour. - * - * @param bgpId id of bgp peer - * @param bgpVersion BGP version - * @param pktStats packet statistics - */ - void init(BGPId bgpId, BGPVersion bgpVersion, BGPPacketStats pktStats); - - /** * Checks whether the handshake is complete. * * @return true is finished, false if not. @@ -112,18 +68,11 @@ public interface BGPPeer { void sendMessage(List<BGPMessage> msgs); /** - * Gets a string version of the ID for this bgp peer. + * Provides the factory for BGP version. * - * @return string version of the ID + * @return BGP version specific factory. */ - String getStringId(); - - /** - * Gets the ipAddress of the peer. - * - * @return the peer bgpId in IPAddress format - */ - BGPId getBGPId(); + BGPFactory factory(); /** * Checks if the bgp peer is still connected. @@ -146,16 +95,9 @@ public interface BGPPeer { String channelId(); /** - * Gets the negotiated hold time. - * - * @return the negotiated hold time - */ - int getNegotiatedHoldTime(); - - /** - * Sets negotiated hold time for the peer. + * Return the BGP session info. * - * @param negotiatedHoldTime negotiated hold time + * @return sessionInfo bgp session info */ - void setNegotiatedHoldTime(short negotiatedHoldTime); + BgpSessionInfo sessionInfo(); } diff --git a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeerCfg.java b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeerCfg.java index 87ec031f..e7c5d9b4 100755 --- a/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeerCfg.java +++ b/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeerCfg.java @@ -163,4 +163,18 @@ public interface BGPPeerCfg { * AS number */ void setPeerRouterId(String peerId, int asNumber); + + /** + * Set the peer connect instance. + * + * @param connectpeer connect peer instance + */ + void setConnectPeer(BgpConnectPeer connectpeer); + + /** + * Get the peer connect instance. + * + * @return peer connect instance + */ + BgpConnectPeer connectPeer(); } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java index 1445c763..dab7a3d2 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java @@ -29,19 +29,19 @@ public interface BgpLinkLsNlri extends BGPLSNlri { * * @return local node descriptors */ - NodeDescriptors getLocalNodeDescriptors(); + NodeDescriptors localNodeDescriptors(); /** * Returns remote node descriptors. * * @return remote node descriptors */ - NodeDescriptors getRemoteNodeDescriptors(); + NodeDescriptors remoteNodeDescriptors(); /** * Returns link descriptors. * * @return link descriptors */ - List<BGPValueType> getLinkDescriptors(); + List<BGPValueType> linkDescriptors(); }
\ No newline at end of file diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java index 90e94e88..e9df3999 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java @@ -21,6 +21,7 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,8 +35,6 @@ public class As4Path implements BGPValueType { private static final Logger log = LoggerFactory.getLogger(AsPath.class); public static final byte AS4PATH_TYPE = 17; public static final byte ASNUM_SIZE = 4; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; private List<Integer> as4pathSet; private List<Integer> as4pathSeq; @@ -77,8 +76,8 @@ public class As4Path implements BGPValueType { validation.getLength()); } //if fourth bit is set length is read as short otherwise as byte , len includes type, length and value - int len = validation.isShort() ? validation.getLength() + TYPE_AND_LEN_AS_SHORT : validation - .getLength() + TYPE_AND_LEN_AS_BYTE; + int len = validation.isShort() ? validation.getLength() + Constants.TYPE_AND_LEN_AS_SHORT : validation + .getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if (validation.getFirstBit() && !validation.getSecondBit() && validation.getThirdBit()) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_FLAGS_ERROR, data); diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java index 100e14d7..e3eb2c51 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java @@ -22,6 +22,7 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,7 +54,7 @@ public class AsPath implements BGPValueType { * * @return AS type */ - public byte getType() { + public byte type() { return (byte) value; } } @@ -63,8 +64,6 @@ public class AsPath implements BGPValueType { public static final byte ASPATH_SET_TYPE = 1; public static final byte ASPATH_SEQ_TYPE = 2; public static final byte ASNUM_SIZE = 2; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; private boolean isAsPath = false; private List<Short> aspathSet; @@ -108,8 +107,8 @@ public class AsPath implements BGPValueType { validation.getLength()); } //if fourth bit is set, length is read as short otherwise as byte , len includes type, length and value - int len = validation.isShort() ? validation.getLength() + TYPE_AND_LEN_AS_SHORT : validation - .getLength() + TYPE_AND_LEN_AS_BYTE; + int len = validation.isShort() ? validation.getLength() + Constants.TYPE_AND_LEN_AS_SHORT : validation + .getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if (validation.getFirstBit() && !validation.getSecondBit() && validation.getThirdBit()) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_FLAGS_ERROR, data); diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BGPErrorType.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BGPErrorType.java index f643ae00..dfcfc9dc 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BGPErrorType.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BGPErrorType.java @@ -28,8 +28,8 @@ public final class BGPErrorType { public static final byte OPEN_MESSAGE_ERROR = 2; public static final byte UPDATE_MESSAGE_ERROR = 3; public static final byte HOLD_TIMER_EXPIRED = 4; - public static final byte FINITE_STATE_MACHINE_ERROR = 4; - public static final byte CEASE = 5; + public static final byte FINITE_STATE_MACHINE_ERROR = 5; + public static final byte CEASE = 6; //Message Header Error subcodes public static final byte CONNECTION_NOT_SYNCHRONIZED = 1; @@ -42,6 +42,7 @@ public final class BGPErrorType { public static final byte BAD_BGP_IDENTIFIER = 3; public static final byte UNSUPPORTED_OPTIONAL_PARAMETER = 4; public static final byte UNACCEPTABLE_HOLD_TIME = 5; + public static final byte UNSUPPORTED_CAPABILITY = 7; //UPDATE Message Error subcodes public static final byte MALFORMED_ATTRIBUTE_LIST = 1; @@ -54,4 +55,20 @@ public final class BGPErrorType { public static final byte OPTIONAL_ATTRIBUTE_ERROR = 9; public static final byte INVALID_NETWORK_FIELD = 10; public static final byte MALFORMED_ASPATH = 11; + + //FSM Error subcodes + public static final byte UNSPECIFIED_ERROR = 0; + public static final byte RECEIVE_UNEXPECTED_MESSAGE_IN_OPENSENT_STATE = 1; + public static final byte RECEIVE_UNEXPECTED_MESSAGE_IN_OPENCONFIRM_STATE = 2; + public static final byte RECEIVE_UNEXPECTED_MESSAGE_IN_ESTABLISHED_STATE = 3; + + //Cease Error subcodes + public static final byte MAXIMUM_NUMBER_OF_PREFIXES_REACHED = 1; + public static final byte ADMINISTRATIVE_SHUTDOWN = 2; + public static final byte PEER_DECONFIGURED = 3; + public static final byte ADMINISTRATIVE_RESET = 4; + public static final byte CONNECTION_REJECTED = 5; + public static final byte OTHER_CONFIGURATION_CHANGE = 6; + public static final byte CONNECTION_COLLISION_RESOLUTION = 7; + public static final byte OUT_OF_RESOURCES = 8; }
\ No newline at end of file diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java index 85fb748b..59afbed6 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java @@ -15,6 +15,7 @@ */ package org.onosproject.bgpio.types; +import java.util.Arrays; import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; @@ -86,7 +87,7 @@ public class IPReachabilityInformationTlv implements BGPValueType { @Override public int hashCode() { - return Objects.hash(ipPrefix, prefixLen); + return Objects.hash(Arrays.hashCode(ipPrefix), prefixLen); } @Override @@ -97,7 +98,7 @@ public class IPReachabilityInformationTlv implements BGPValueType { if (obj instanceof IPReachabilityInformationTlv) { IPReachabilityInformationTlv other = (IPReachabilityInformationTlv) obj; - return Objects.equals(prefixLen, other.prefixLen) && Objects.equals(ipPrefix, other.ipPrefix); + return Objects.equals(prefixLen, other.prefixLen) && Arrays.equals(ipPrefix, other.ipPrefix); } return false; } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java index 5c742d0f..35fd2493 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java @@ -15,6 +15,9 @@ */ package org.onosproject.bgpio.types; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; @@ -28,12 +31,12 @@ import com.google.common.base.MoreObjects; * Provides implementation of IsIsPseudonode Tlv. */ public class IsIsPseudonode implements IGPRouterID, BGPValueType { - protected static final Logger log = LoggerFactory.getLogger(IsIsPseudonode.class); + private static final Logger log = LoggerFactory.getLogger(IsIsPseudonode.class); public static final short TYPE = 515; public static final short LENGTH = 7; - private final byte[] isoNodeID; + private final List<Byte> isoNodeID; private byte psnIdentifier; /** @@ -42,7 +45,7 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { * @param isoNodeID ISO system-ID * @param psnIdentifier PSN identifier */ - public IsIsPseudonode(byte[] isoNodeID, byte psnIdentifier) { + public IsIsPseudonode(List<Byte> isoNodeID, byte psnIdentifier) { this.isoNodeID = isoNodeID; this.psnIdentifier = psnIdentifier; } @@ -54,7 +57,8 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { * @param psnIdentifier PSN identifier * @return object of IsIsPseudonode */ - public static IsIsPseudonode of(final byte[] isoNodeID, final byte psnIdentifier) { + public static IsIsPseudonode of(final List<Byte> isoNodeID, + final byte psnIdentifier) { return new IsIsPseudonode(isoNodeID, psnIdentifier); } @@ -63,7 +67,7 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { * * @return ISO NodeID */ - public byte[] getISONodeID() { + public List<Byte> getISONodeID() { return isoNodeID; } @@ -78,7 +82,7 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { @Override public int hashCode() { - return Objects.hash(isoNodeID, psnIdentifier); + return Objects.hash(isoNodeID) & Objects.hash(psnIdentifier); } @Override @@ -87,8 +91,27 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { return true; } if (obj instanceof IsIsPseudonode) { + int countObjSubTlv = 0; + int countOtherSubTlv = 0; + boolean isCommonSubTlv = true; IsIsPseudonode other = (IsIsPseudonode) obj; - return Objects.equals(isoNodeID, other.isoNodeID) && Objects.equals(psnIdentifier, other.psnIdentifier); + Iterator<Byte> objListIterator = other.isoNodeID.iterator(); + countOtherSubTlv = other.isoNodeID.size(); + countObjSubTlv = isoNodeID.size(); + if (countObjSubTlv != countOtherSubTlv) { + return false; + } else { + while (objListIterator.hasNext() && isCommonSubTlv) { + Byte subTlv = objListIterator.next(); + if (isoNodeID.contains(subTlv) && other.isoNodeID.contains(subTlv)) { + isCommonSubTlv = Objects.equals(isoNodeID.get(isoNodeID.indexOf(subTlv)), + other.isoNodeID.get(other.isoNodeID.indexOf(subTlv))); + } else { + isCommonSubTlv = false; + } + } + return isCommonSubTlv && Objects.equals(psnIdentifier, other.psnIdentifier); + } } return false; } @@ -98,7 +121,11 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { int iLenStartIndex = c.writerIndex(); c.writeShort(TYPE); c.writeShort(LENGTH); - c.writeBytes(isoNodeID); + Iterator<Byte> objListIterator = isoNodeID.iterator(); + while (objListIterator.hasNext()) { + byte value = objListIterator.next(); + c.writeByte(value); + } c.writeByte(psnIdentifier); return c.writerIndex() - iLenStartIndex; } @@ -110,8 +137,12 @@ public class IsIsPseudonode implements IGPRouterID, BGPValueType { * @return object of IsIsPseudonode */ public static IsIsPseudonode read(ChannelBuffer cb) { - byte[] isoNodeID = new byte[LENGTH - 1]; - cb.readBytes(isoNodeID, 0, LENGTH - 1); + List<Byte> isoNodeID = new ArrayList<Byte>(); + byte value; + for (int i = 0; i < LENGTH; i++) { + value = cb.readByte(); + isoNodeID.add(value); + } byte psnIdentifier = cb.readByte(); return IsIsPseudonode.of(isoNodeID, psnIdentifier); } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java index 048d81ee..0f78ab77 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java @@ -19,9 +19,8 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.google.common.base.MoreObjects; @@ -29,11 +28,7 @@ import com.google.common.base.MoreObjects; * Provides implementation of LocalPref BGP Path Attribute. */ public class LocalPref implements BGPValueType { - - private static final Logger log = LoggerFactory.getLogger(LocalPref.class); public static final byte LOCAL_PREF_TYPE = 5; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; public static final byte LOCAL_PREF_MAX_LEN = 4; private int localPref; @@ -72,8 +67,8 @@ public class LocalPref implements BGPValueType { parseFlags.getLength()); } - int len = parseFlags.isShort() ? parseFlags.getLength() + TYPE_AND_LEN_AS_SHORT : parseFlags.getLength() - + TYPE_AND_LEN_AS_BYTE; + int len = parseFlags.isShort() ? parseFlags.getLength() + + Constants.TYPE_AND_LEN_AS_SHORT : parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if (parseFlags.getFirstBit()) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_FLAGS_ERROR, data); diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java index 49e1fc5a..23402c26 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java @@ -19,9 +19,8 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.google.common.base.MoreObjects; @@ -29,10 +28,7 @@ import com.google.common.base.MoreObjects; * Provides Implementation of Med BGP Path Attribute. */ public class Med implements BGPValueType { - private static final Logger log = LoggerFactory.getLogger(Med.class); public static final byte MED_TYPE = 4; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; public static final byte MED_MAX_LEN = 4; private int med; @@ -71,8 +67,8 @@ public class Med implements BGPValueType { Validation.validateLen(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_LENGTH_ERROR, parseFlags.getLength()); } - int len = parseFlags.isShort() ? parseFlags.getLength() + TYPE_AND_LEN_AS_SHORT : parseFlags - .getLength() + TYPE_AND_LEN_AS_BYTE; + int len = parseFlags.isShort() ? parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_SHORT : parseFlags + .getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if (!parseFlags.getFirstBit() && parseFlags.getSecondBit() && parseFlags.getThirdBit()) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_FLAGS_ERROR, data); diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java index 90a1cc6b..fe99d28d 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java @@ -26,6 +26,7 @@ import org.onosproject.bgpio.exceptions.BGPParseException; import org.onosproject.bgpio.protocol.BGPLSNlri; import org.onosproject.bgpio.protocol.linkstate.BGPPrefixIPv4LSNlriVer4; import org.onosproject.bgpio.protocol.linkstate.BGPNodeLSNlriVer4; +import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4; import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; import org.slf4j.Logger; @@ -39,7 +40,6 @@ import com.google.common.base.MoreObjects; public class MpReachNlri implements BGPValueType { private static final Logger log = LoggerFactory.getLogger(MpReachNlri.class); - public static final byte MPREACHNLRI_TYPE = 14; public static final byte LINK_NLRITYPE = 2; @@ -131,8 +131,7 @@ public class MpReachNlri implements BGPValueType { if ((afi == Constants.AFI_VALUE) && (safi == Constants.SAFI_VALUE) || (afi == Constants.AFI_VALUE) && (safi == Constants.VPN_SAFI_VALUE)) { byte nextHopLen = tempCb.readByte(); - //TODO: use Validation.toInetAddress once Validation is merged - InetAddress ipAddress = (InetAddress) cb.readBytes(nextHopLen); + InetAddress ipAddress = Validation.toInetAddress(nextHopLen, cb); if (ipAddress.isMulticastAddress()) { throw new BGPParseException("Multicast not supported"); } @@ -151,8 +150,8 @@ public class MpReachNlri implements BGPValueType { case BGPNodeLSNlriVer4.NODE_NLRITYPE: bgpLSNlri = BGPNodeLSNlriVer4.read(tempBuf, afi, safi); break; - case LINK_NLRITYPE: - //TODO: To be merged later + case BgpLinkLsNlriVer4.LINK_NLRITYPE: + bgpLSNlri = BgpLinkLsNlriVer4.read(tempBuf, afi, safi); break; case BGPPrefixIPv4LSNlriVer4.PREFIX_IPV4_NLRITYPE: bgpLSNlri = BGPPrefixIPv4LSNlriVer4.read(tempBuf, afi, safi); @@ -163,7 +162,6 @@ public class MpReachNlri implements BGPValueType { mpReachNlri.add(bgpLSNlri); } } else { - //TODO: check with the values got from capability throw new BGPParseException("Not Supporting afi " + afi + "safi " + safi); } } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java index 3efed95c..8763ec59 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java @@ -24,6 +24,7 @@ import org.onosproject.bgpio.exceptions.BGPParseException; import org.onosproject.bgpio.protocol.BGPLSNlri; import org.onosproject.bgpio.protocol.linkstate.BGPNodeLSNlriVer4; import org.onosproject.bgpio.protocol.linkstate.BGPPrefixIPv4LSNlriVer4; +import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4; import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; import org.slf4j.Logger; @@ -36,10 +37,10 @@ import com.google.common.base.MoreObjects; */ public class MpUnReachNlri implements BGPValueType { - protected static final Logger log = LoggerFactory.getLogger(MpUnReachNlri.class); - + private static final Logger log = LoggerFactory.getLogger(MpUnReachNlri.class); public static final byte MPUNREACHNLRI_TYPE = 15; public static final byte LINK_NLRITYPE = 2; + private boolean isMpUnReachNlri = false; private final short afi; private final byte safi; @@ -113,8 +114,8 @@ public class MpUnReachNlri implements BGPValueType { case BGPNodeLSNlriVer4.NODE_NLRITYPE: bgpLSNlri = BGPNodeLSNlriVer4.read(tempBuf, afi, safi); break; - case LINK_NLRITYPE: - //TODO: to be merged later + case BgpLinkLsNlriVer4.LINK_NLRITYPE: + bgpLSNlri = BgpLinkLsNlriVer4.read(tempBuf, afi, safi); break; case BGPPrefixIPv4LSNlriVer4.PREFIX_IPV4_NLRITYPE: bgpLSNlri = BGPPrefixIPv4LSNlriVer4.read(tempBuf, afi, diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java index 353ec3d5..1d083b72 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java @@ -21,9 +21,8 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onlab.packet.Ip4Address; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; @@ -32,10 +31,7 @@ import com.google.common.base.Preconditions; * Implementation of NextHop BGP Path Attribute. */ public class NextHop implements BGPValueType { - private static final Logger log = LoggerFactory.getLogger(NextHop.class); public static final byte NEXTHOP_TYPE = 3; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; private boolean isNextHop = false; private Ip4Address nextHop; @@ -75,15 +71,14 @@ public class NextHop implements BGPValueType { Validation.validateLen(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_LENGTH_ERROR, parseFlags.getLength()); } - int len = parseFlags.isShort() ? parseFlags.getLength() + TYPE_AND_LEN_AS_SHORT : parseFlags - .getLength() + TYPE_AND_LEN_AS_BYTE; + int len = parseFlags.isShort() ? parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_SHORT : parseFlags + .getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if (parseFlags.getFirstBit() && !parseFlags.getSecondBit() && parseFlags.getThirdBit()) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_FLAGS_ERROR, data); } - //TODO: use Validation.toInetAddress once Validation is merged - InetAddress ipAddress = (InetAddress) cb.readBytes(parseFlags.getLength()); + InetAddress ipAddress = Validation.toInetAddress(parseFlags.getLength(), cb); if (ipAddress.isMulticastAddress()) { throw new BGPParseException("Multicast address is not supported"); } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java index 3b2070de..2052e965 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java @@ -19,9 +19,8 @@ import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.util.Constants; import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.google.common.base.MoreObjects; @@ -29,7 +28,6 @@ import com.google.common.base.MoreObjects; * Provides Implementation of mandatory BGP Origin path attribute. */ public class Origin implements BGPValueType { - private static final Logger log = LoggerFactory.getLogger(Origin.class); /** * Enum to provide ORIGIN types. @@ -58,8 +56,6 @@ public class Origin implements BGPValueType { public static final byte ORIGIN_TYPE = 1; public static final byte ORIGIN_VALUE_LEN = 1; - public static final int TYPE_AND_LEN_AS_SHORT = 4; - public static final int TYPE_AND_LEN_AS_BYTE = 3; private boolean isOrigin = false; private byte origin; @@ -109,8 +105,8 @@ public class Origin implements BGPValueType { ChannelBuffer tempCb = cb.copy(); Validation parseFlags = Validation.parseAttributeHeader(cb); - int len = parseFlags.isShort() ? parseFlags.getLength() + TYPE_AND_LEN_AS_SHORT : parseFlags - .getLength() + TYPE_AND_LEN_AS_BYTE; + int len = parseFlags.isShort() ? parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_SHORT : parseFlags + .getLength() + Constants.TYPE_AND_LEN_AS_BYTE; ChannelBuffer data = tempCb.readBytes(len); if ((parseFlags.getLength() > ORIGIN_VALUE_LEN) || (cb.readableBytes() < parseFlags.getLength())) { Validation.validateLen(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_LENGTH_ERROR, @@ -122,7 +118,7 @@ public class Origin implements BGPValueType { byte originValue; originValue = cb.readByte(); - if ((originValue != ORIGINTYPE.INCOMPLETE.value) || (originValue != ORIGINTYPE.IGP.value) || + if ((originValue != ORIGINTYPE.INCOMPLETE.value) && (originValue != ORIGINTYPE.IGP.value) && (originValue != ORIGINTYPE.EGP.value)) { throw new BGPParseException(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.INVALID_ORIGIN_ATTRIBUTE, data); } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java index 194d6dac..4b704fb0 100644 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.onosproject.bgpio.types.attr; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; @@ -39,18 +40,28 @@ public class BgpAttrNodeMultiTopologyId implements BGPValueType { public static final int ATTRNODE_MULTITOPOLOGY = 263; /* Opaque Node Attribute */ - private short[] multiTopologyId; + private List<Short> multiTopologyId = new ArrayList<Short>(); /** * Constructor to initialize the Node attribute multi-topology ID. * * @param multiTopologyId multi-topology ID */ - BgpAttrNodeMultiTopologyId(short[] multiTopologyId) { + public BgpAttrNodeMultiTopologyId(List<Short> multiTopologyId) { this.multiTopologyId = multiTopologyId; } /** + * Returns object of this class with specified values. + * + * @param multiTopologyId Prefix Metric + * @return object of BgpAttrNodeMultiTopologyId + */ + public static BgpAttrNodeMultiTopologyId of(ArrayList<Short> multiTopologyId) { + return new BgpAttrNodeMultiTopologyId(multiTopologyId); + } + + /** * Reads the Multi-topology ID of Node attribute. * * @param cb ChannelBuffer @@ -59,21 +70,20 @@ public class BgpAttrNodeMultiTopologyId implements BGPValueType { */ public static BgpAttrNodeMultiTopologyId read(ChannelBuffer cb) throws BGPParseException { - - log.debug("BgpAttrNodeMultiTopologyId"); + ArrayList<Short> multiTopologyId = new ArrayList<Short>(); + short tempMultiTopologyId; short lsAttrLength = cb.readShort(); int len = lsAttrLength / 2; // Length is 2*n and n is the number of MT-IDs if (cb.readableBytes() < lsAttrLength) { Validation.validateLen(BGPErrorType.UPDATE_MESSAGE_ERROR, BGPErrorType.ATTRIBUTE_LENGTH_ERROR, - cb.readableBytes()); + lsAttrLength); } - short[] multiTopologyId; - multiTopologyId = new short[len]; for (int i = 0; i < len; i++) { - multiTopologyId[i] = cb.readShort(); + tempMultiTopologyId = cb.readShort(); + multiTopologyId.add(new Short(tempMultiTopologyId)); } return new BgpAttrNodeMultiTopologyId(multiTopologyId); @@ -84,7 +94,7 @@ public class BgpAttrNodeMultiTopologyId implements BGPValueType { * * @return multitopology ID */ - short[] getAttrMultiTopologyId() { + public List<Short> attrMultiTopologyId() { return multiTopologyId; } @@ -113,7 +123,7 @@ public class BgpAttrNodeMultiTopologyId implements BGPValueType { @Override public int write(ChannelBuffer cb) { - // TODO Auto-generated method stub + // TODO This will be implemented in the next version return 0; } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java index 50591ecf..e44ba7e1 100755 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java @@ -16,7 +16,6 @@ package org.onosproject.bgpio.types.attr; import java.util.Arrays; -import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; import org.onosproject.bgpio.exceptions.BGPParseException; @@ -46,11 +45,21 @@ public class BgpLinkAttrName implements BGPValueType { * * @param linkName link name */ - BgpLinkAttrName(byte[] linkName) { + public BgpLinkAttrName(byte[] linkName) { this.linkName = Arrays.copyOf(linkName, linkName.length); } /** + * Returns object of this class with specified values. + * + * @param linkName Prefix Metric + * @return object of BgpLinkAttrName + */ + public static BgpLinkAttrName of(byte[] linkName) { + return new BgpLinkAttrName(linkName); + } + + /** * Reads the BGP link attributes Name. * * @param cb Channel buffer @@ -70,7 +79,7 @@ public class BgpLinkAttrName implements BGPValueType { linkName = new byte[lsAttrLength]; cb.readBytes(linkName); - return new BgpLinkAttrName(linkName); + return BgpLinkAttrName.of(linkName); } /** @@ -78,7 +87,7 @@ public class BgpLinkAttrName implements BGPValueType { * * @return link name */ - byte[] getAttrLinkName() { + public byte[] attrLinkName() { return linkName; } @@ -89,7 +98,7 @@ public class BgpLinkAttrName implements BGPValueType { @Override public int hashCode() { - return Objects.hash(linkName); + return Arrays.hashCode(linkName); } @Override @@ -100,7 +109,7 @@ public class BgpLinkAttrName implements BGPValueType { if (obj instanceof BgpLinkAttrName) { BgpLinkAttrName other = (BgpLinkAttrName) obj; - return Objects.equals(linkName, other.linkName); + return Arrays.equals(linkName, other.linkName); } return false; } diff --git a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java index 0cf02386..426eb274 100755 --- a/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java +++ b/framework/src/onos/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java @@ -15,7 +15,8 @@ */ package org.onosproject.bgpio.types.attr; -import java.util.Arrays; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; import org.jboss.netty.buffer.ChannelBuffer; @@ -36,18 +37,28 @@ public class BgpPrefixAttrRouteTag implements BGPValueType { protected static final Logger log = LoggerFactory .getLogger(BgpPrefixAttrRouteTag.class); - public static final int ATTR_PREFIX_ROUTETAG = 1153; + public static final short ATTR_PREFIX_ROUTETAG = 1153; /* Prefix Route Tag */ - private int[] pfxRouteTag; + private List<Integer> pfxRouteTag = new ArrayList<Integer>(); /** * Constructor to initialize the values. * * @param pfxRouteTag prefix route tag */ - BgpPrefixAttrRouteTag(int[] pfxRouteTag) { - this.pfxRouteTag = Arrays.copyOf(pfxRouteTag, pfxRouteTag.length); + public BgpPrefixAttrRouteTag(List<Integer> pfxRouteTag) { + this.pfxRouteTag = pfxRouteTag; + } + + /** + * Returns object of this class with specified values. + * + * @param pfxRouteTag Prefix Metric + * @return object of BgpPrefixAttrRouteTag + */ + public static BgpPrefixAttrRouteTag of(ArrayList<Integer> pfxRouteTag) { + return new BgpPrefixAttrRouteTag(pfxRouteTag); } /** @@ -59,7 +70,8 @@ public class BgpPrefixAttrRouteTag implements BGPValueType { */ public static BgpPrefixAttrRouteTag read(ChannelBuffer cb) throws BGPParseException { - int[] pfxRouteTag; + int tmp; + ArrayList<Integer> pfxRouteTag = new ArrayList<Integer>(); short lsAttrLength = cb.readShort(); int len = lsAttrLength / Integer.SIZE; @@ -70,13 +82,12 @@ public class BgpPrefixAttrRouteTag implements BGPValueType { lsAttrLength); } - pfxRouteTag = new int[lsAttrLength]; - for (int i = 0; i < len; i++) { - pfxRouteTag[i] = cb.readInt(); + tmp = cb.readInt(); + pfxRouteTag.add(new Integer(tmp)); } - return new BgpPrefixAttrRouteTag(pfxRouteTag); + return BgpPrefixAttrRouteTag.of(pfxRouteTag); } /** @@ -84,7 +95,7 @@ public class BgpPrefixAttrRouteTag implements BGPValueType { * * @return route tag */ - int[] getPfxRouteTag() { + public List<Integer> getPfxRouteTag() { return pfxRouteTag; } diff --git a/framework/src/onos/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.java b/framework/src/onos/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.java index a2a7c2b5..00e85dcf 100644 --- a/framework/src/onos/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.java +++ b/framework/src/onos/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.java @@ -15,6 +15,11 @@ */ package org.onosproject.bgpio.types; +import java.util.ArrayList; +import java.util.List; + +import org.jboss.netty.buffer.ChannelBuffer; +import org.jboss.netty.buffer.ChannelBuffers; import org.junit.Test; import com.google.common.testing.EqualsTester; @@ -24,13 +29,28 @@ import com.google.common.testing.EqualsTester; */ public class IsIsPseudonodeTest { private final byte[] value1 = new byte[] {0x01, 0x02, 0x01, 0x02, 0x01, 0x02}; + byte value; + List<Byte> isoNodeID1 = new ArrayList<Byte>(); + ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); private final byte[] value2 = new byte[] {0x01, 0x02, 0x01, 0x02, 0x01, 0x03}; - private final IsIsPseudonode tlv1 = IsIsPseudonode.of(value1, (byte) 1); - private final IsIsPseudonode sameAsTlv1 = IsIsPseudonode.of(value1, (byte) 1); - private final IsIsPseudonode tlv2 = IsIsPseudonode.of(value2, (byte) 1); + List<Byte> isoNodeID2 = new ArrayList<Byte>(); + ChannelBuffer buffer1 = ChannelBuffers.dynamicBuffer(); + private final IsIsPseudonode tlv1 = IsIsPseudonode.of(isoNodeID1, (byte) 1); + private final IsIsPseudonode sameAsTlv1 = IsIsPseudonode.of(isoNodeID1, (byte) 1); + private final IsIsPseudonode tlv2 = IsIsPseudonode.of(isoNodeID2, (byte) 1); @Test public void testEquality() { + buffer.writeBytes(value1); + for (int i = 0; i < 6; i++) { + value = buffer.readByte(); + isoNodeID1.add(value); + } + buffer1.writeBytes(value2); + for (int i = 0; i < 6; i++) { + value = buffer1.readByte(); + isoNodeID1.add(value); + } new EqualsTester() .addEqualityGroup(tlv1, sameAsTlv1) .addEqualityGroup(tlv2) diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPChannelHandler.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPChannelHandler.java index c17736ed..f21c311c 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPChannelHandler.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPChannelHandler.java @@ -17,13 +17,19 @@ package org.onosproject.bgp.controller.impl; import java.io.IOException; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.SocketAddress; +import java.net.UnknownHostException; import java.nio.channels.ClosedChannelException; -import java.util.Date; +import java.util.Collections; import java.util.List; +import java.util.LinkedList; +import java.util.ListIterator; import java.util.concurrent.RejectedExecutionException; +import org.jboss.netty.buffer.ChannelBuffer; +import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelStateEvent; @@ -32,17 +38,24 @@ import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler; import org.jboss.netty.handler.timeout.ReadTimeoutException; import org.jboss.netty.handler.timeout.ReadTimeoutHandler; +import org.onlab.packet.Ip4Address; import org.onlab.packet.IpAddress; import org.onosproject.bgp.controller.BGPCfg; +import org.onosproject.bgp.controller.BGPController; import org.onosproject.bgp.controller.BGPId; import org.onosproject.bgp.controller.BGPPeer; import org.onosproject.bgp.controller.BGPPeerCfg; -import org.onosproject.bgp.controller.impl.BGPControllerImpl.BGPPeerManager; +import org.onosproject.bgp.controller.impl.BGPControllerImpl.BGPPeerManagerImpl; import org.onosproject.bgpio.exceptions.BGPParseException; +import org.onosproject.bgpio.protocol.BGPFactory; import org.onosproject.bgpio.protocol.BGPMessage; -//import org.onosproject.bgpio.protocol.BGPOpenMsg; +import org.onosproject.bgpio.protocol.BGPOpenMsg; import org.onosproject.bgpio.protocol.BGPType; import org.onosproject.bgpio.protocol.BGPVersion; +import org.onosproject.bgpio.types.BGPErrorType; +import org.onosproject.bgpio.types.BGPValueType; +import org.onosproject.bgpio.types.FourOctetAsNumCapabilityTlv; +import org.onosproject.bgpio.types.MultiProtocolExtnCapabilityTlv; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,18 +65,25 @@ import org.slf4j.LoggerFactory; class BGPChannelHandler extends IdleStateAwareChannelHandler { private static final Logger log = LoggerFactory.getLogger(BGPChannelHandler.class); - + static final int BGP_MIN_HOLDTIME = 3; static final int BGP_MAX_KEEPALIVE_INTERVAL = 3; private BGPPeer bgpPeer; private BGPId thisbgpId; - Channel channel; + private Channel channel; private BGPKeepAliveTimer keepAliveTimer = null; private short peerHoldTime = 0; private short negotiatedHoldTime = 0; - private short peerAsNum; + private long peerAsNum; private int peerIdentifier; private BGPPacketStatsImpl bgpPacketStats; static final int MAX_WRONG_COUNT_PACKET = 5; + static final byte MULTI_PROTOCOL_EXTN_CAPA_TYPE = 1; + static final byte FOUR_OCTET_AS_NUM_CAPA_TYPE = 65; + static final int AS_TRANS = 23456; + static final int MAX_AS2_NUM = 65535; + static final short AFI = 16388; + static final byte RES = 0; + static final byte SAFI = 71; // State needs to be volatile because the HandshakeTimeoutHandler // needs to check if the handshake is complete @@ -72,13 +92,17 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { // When a bgp peer with a ip addresss is found (i.e we already have a // connected peer with the same ip), the new peer is immediately // disconnected. At that point netty callsback channelDisconnected() which - // proceeds to cleaup peer state - we need to ensure that it does not cleanup + // proceeds to cleaup peer state - we need to ensure that it does not + // cleanup // peer state for the older (still connected) peer private volatile Boolean duplicateBGPIdFound; // Indicates the bgp version used by this bgp peer protected BGPVersion bgpVersion; - private BGPControllerImpl bgpControllerImpl; - private BGPPeerManager peerManager; + private BGPController bgpController; + protected BGPFactory factory4; + private boolean isIbgpSession; + private BgpSessionInfoImpl sessionInfo; + private BGPPeerManagerImpl peerManager; private InetSocketAddress inetAddress; private IpAddress ipAddress; private SocketAddress address; @@ -88,15 +112,16 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { /** * Create a new unconnected BGPChannelHandler. * - * @param bgpCtrlImpl bgp controller implementation object + * @param bgpController bgp controller */ - BGPChannelHandler(BGPControllerImpl bgpCtrlImpl) { - this.bgpControllerImpl = bgpCtrlImpl; - this.peerManager = bgpCtrlImpl.getPeerManager(); + BGPChannelHandler(BGPController bgpController) { + this.bgpController = bgpController; + this.peerManager = (BGPPeerManagerImpl) bgpController.peerManager(); this.state = ChannelState.IDLE; + this.factory4 = Controller.getBGPMessageFactory4(); this.duplicateBGPIdFound = Boolean.FALSE; this.bgpPacketStats = new BGPPacketStatsImpl(); - this.bgpconfig = bgpCtrlImpl.getConfig(); + this.bgpconfig = bgpController.getConfig(); } // To disconnect peer session. @@ -127,17 +152,19 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { // check for OPEN message if (m.getType() != BGPType.OPEN) { // When the message type is not keep alive message increment the wrong packet statistics - h.processUnknownMsg(); + h.processUnknownMsg(BGPErrorType.FINITE_STATE_MACHINE_ERROR, + BGPErrorType.RECEIVE_UNEXPECTED_MESSAGE_IN_OPENSENT_STATE, m.getType() + .getType()); log.debug("Message is not OPEN message"); } else { log.debug("Sending keep alive message in OPENSENT state"); h.bgpPacketStats.addInPacket(); - // TODO: initialize openmessage BGPOpenMsg pOpenmsg = (BGPOpenMsg) m; - // TODO: initialize identifier from open messgae h.peerIdentifier = pOpenmsg.getBgpId(); + BGPOpenMsg pOpenmsg = (BGPOpenMsg) m; + h.peerIdentifier = pOpenmsg.getBgpId(); // validate capabilities and open msg - if (h.openMsgValidation(h)) { + if (h.openMsgValidation(h, pOpenmsg)) { log.debug("Sending handshake OPEN message"); /* @@ -145,7 +172,7 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { * value of the Hold Timer by using the smaller of its configured Hold Time and the Hold Time * received in the OPEN message */ - // TODO: initialize holdtime from open message h.peerHoldTime = pOpenmsg.getHoldTime(); + h.peerHoldTime = pOpenmsg.getHoldTime(); if (h.peerHoldTime < h.bgpconfig.getHoldTime()) { h.channel.getPipeline().replace("holdTime", "holdTime", @@ -155,7 +182,8 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { log.info("Hold Time : " + h.peerHoldTime); - // TODO: get AS number for open message update AS number + // update AS number + h.peerAsNum = pOpenmsg.getAsNumber(); } // Send keepalive message to peer. @@ -175,15 +203,17 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { // check for open message if (m.getType() != BGPType.OPEN) { // When the message type is not open message increment the wrong packet statistics - h.processUnknownMsg(); + h.processUnknownMsg(BGPErrorType.FINITE_STATE_MACHINE_ERROR, BGPErrorType.UNSPECIFIED_ERROR, m + .getType().getType()); log.debug("Message is not OPEN message"); } else { h.bgpPacketStats.addInPacket(); - // TODO: initialize open message BGPOpenMsg pOpenmsg = (BGPOpenMsg) m; + BGPOpenMsg pOpenmsg = (BGPOpenMsg) m; + h.peerIdentifier = pOpenmsg.getBgpId(); // Validate open message - if (h.openMsgValidation(h)) { + if (h.openMsgValidation(h, pOpenmsg)) { log.debug("Sending handshake OPEN message"); /* @@ -191,7 +221,7 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { * value of the Hold Timer by using the smaller of its configured Hold Time and the Hold Time * received in the OPEN message */ - // TODO: get hold time from open message h.peerHoldTime = pOpenmsg.getHoldTime(); + h.peerHoldTime = pOpenmsg.getHoldTime(); if (h.peerHoldTime < h.bgpconfig.getHoldTime()) { h.channel.getPipeline().replace("holdTime", "holdTime", @@ -201,7 +231,8 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { log.debug("Hold Time : " + h.peerHoldTime); - //TODO: update AS number form open messsage update AS number + // update AS number + h.peerAsNum = pOpenmsg.getAsNumber(); h.sendHandshakeOpenMessage(); h.bgpPacketStats.addOutPacket(); @@ -218,7 +249,9 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { // check for keep alive message if (m.getType() != BGPType.KEEP_ALIVE) { // When the message type is not keep alive message handle the wrong packet - h.processUnknownMsg(); + h.processUnknownMsg(BGPErrorType.FINITE_STATE_MACHINE_ERROR, + BGPErrorType.RECEIVE_UNEXPECTED_MESSAGE_IN_OPENCONFIRM_STATE, m.getType() + .getType()); log.debug("Message is not KEEPALIVE message"); } else { @@ -229,30 +262,28 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { final InetSocketAddress inetAddress = (InetSocketAddress) h.address; h.thisbgpId = BGPId.bgpId(IpAddress.valueOf(inetAddress.getAddress())); - h.bgpPeer = h.peerManager.getBGPPeerInstance(h.thisbgpId, h.bgpVersion, h.bgpPacketStats); - // set the status fo bgp as connected + // set session parameters + h.negotiatedHoldTime = (h.peerHoldTime < h.bgpconfig.getHoldTime()) ? h.peerHoldTime + : h.bgpconfig.getHoldTime(); + h.sessionInfo = new BgpSessionInfoImpl(h.thisbgpId, h.bgpVersion, h.peerAsNum, h.peerHoldTime, + h.peerIdentifier, h.negotiatedHoldTime, h.isIbgpSession); + + h.bgpPeer = h.peerManager.getBGPPeerInstance(h.bgpController, h.sessionInfo, h.bgpPacketStats); + // set the status of bgp as connected h.bgpPeer.setConnected(true); h.bgpPeer.setChannel(h.channel); - // set specific parameters to bgp peer - h.bgpPeer.setBgpPeerVersion(h.bgpVersion); - h.bgpPeer.setBgpPeerASNum(h.peerAsNum); - h.bgpPeer.setBgpPeerHoldTime(h.peerHoldTime); - h.bgpPeer.setBgpPeerIdentifier(h.peerIdentifier); - - h.negotiatedHoldTime = (h.peerHoldTime < h.bgpconfig.getHoldTime()) ? h.peerHoldTime : h.bgpconfig - .getHoldTime(); - h.bgpPeer.setNegotiatedHoldTime(h.negotiatedHoldTime); /* * RFC 4271, When an OPEN message is received, sends a KEEPALIVE message, If the negotiated hold * time value is zero, then the HoldTimer and KeepaliveTimer are not started. A reasonable maximum * time between KEEPALIVE messages would be one third of the Hold Time interval. */ - h.sendKeepAliveMessage(); if (h.negotiatedHoldTime != 0) { - h.keepAliveTimer - = new BGPKeepAliveTimer(h, (h.negotiatedHoldTime / BGP_MAX_KEEPALIVE_INTERVAL)); + h.keepAliveTimer = new BGPKeepAliveTimer(h, + (h.negotiatedHoldTime / BGP_MAX_KEEPALIVE_INTERVAL)); + } else { + h.sendKeepAliveMessage(); } h.bgpPacketStats.addOutPacket(); @@ -349,8 +380,7 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { } inetAddress = (InetSocketAddress) address; - ipAddress = IpAddress.valueOf(inetAddress.getAddress()); - peerAddr = ipAddress.toString(); + peerAddr = IpAddress.valueOf(inetAddress.getAddress()).toString(); // if peer is not configured disconnect session if (!bgpconfig.isPeerConfigured(peerAddr)) { @@ -360,7 +390,7 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { } // if connection is already established close channel - if (peerManager.isPeerConnected(peerAddr)) { + if (peerManager.isPeerConnected(BGPId.bgpId(IpAddress.valueOf(peerAddr)))) { log.debug("Duplicate connection received, peer {}", peerAddr); channel.close(); return; @@ -392,8 +422,7 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { } inetAddress = (InetSocketAddress) address; - ipAddress = IpAddress.valueOf(inetAddress.getAddress()); - peerAddr = ipAddress.toString(); + peerAddr = IpAddress.valueOf(inetAddress.getAddress()).toString(); if (thisbgpId != null) { if (!duplicateBGPIdFound) { @@ -432,14 +461,14 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { if ((ChannelState.OPENWAIT == state) || (ChannelState.OPENSENT == state)) { // When ReadTimeout timer is expired in OPENWAIT/OPENSENT state, it is considered - // TODO: Send notification + sendNotification(BGPErrorType.HOLD_TIMER_EXPIRED, (byte) 0, null); channel.close(); state = ChannelState.IDLE; return; } else if (ChannelState.OPENCONFIRM == state) { // When ReadTimeout timer is expired in OPENCONFIRM state. - // TODO: Send Notification + sendNotification(BGPErrorType.HOLD_TIMER_EXPIRED, (byte) 0, null); channel.close(); state = ChannelState.IDLE; return; @@ -454,8 +483,17 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { } channel.close(); } else if (e.getCause() instanceof BGPParseException) { - // TODO: SEND NOTIFICATION - log.debug("BGP Parse Exception: ", e.getCause()); + byte[] data = new byte[] {}; + BGPParseException errMsg = (BGPParseException) e.getCause(); + byte errorCode = errMsg.getErrorCode(); + byte errorSubCode = errMsg.getErrorSubCode(); + ChannelBuffer tempCb = errMsg.getData(); + if (tempCb != null) { + int dataLength = tempCb.capacity(); + data = new byte[dataLength]; + tempCb.readBytes(data, 0, dataLength); + } + sendNotification(errorCode, errorSubCode, data); } else if (e.getCause() instanceof RejectedExecutionException) { log.warn("Could not process message: queue full"); } else { @@ -507,11 +545,12 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { /** * To handle the BGP message. * - * @param m BGP message + * @param m bgp message + * @throws BGPParseException throw exception */ private void dispatchMessage(BGPMessage m) throws BGPParseException { bgpPacketStats.addInPacket(); - bgpControllerImpl.processBGPPacket(thisbgpId, m); + bgpController.processBGPPacket(thisbgpId, m); } /** @@ -557,14 +596,39 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { /** * Send handshake open message to the peer. * - * @throws IOException ,BGPParseException + * @throws IOException, BGPParseException */ private void sendHandshakeOpenMessage() throws IOException, BGPParseException { - // TODO: send open message. + int bgpId; + + bgpId = Ip4Address.valueOf(bgpconfig.getRouterId()).toInt(); + BGPMessage msg = factory4.openMessageBuilder().setAsNumber((short) bgpconfig.getAsNumber()) + .setHoldTime(bgpconfig.getHoldTime()).setBgpId(bgpId) + .setLsCapabilityTlv(bgpconfig.getLsCapability()) + .setLargeAsCapabilityTlv(bgpconfig.getLargeASCapability()) + .build(); + log.debug("Sending open message to {}", channel.getRemoteAddress()); + channel.write(Collections.singletonList(msg)); } /** + * Send notification message to peer. + * + * @param errorCode error code send in notification + * @param errorSubCode sub error code send in notification + * @param data data to send in notification + * @throws IOException, BGPParseException while building message + */ + private void sendNotification(byte errorCode, byte errorSubCode, byte[] data) + throws IOException, BGPParseException { + BGPMessage msg = factory4.notificationMessageBuilder().setErrorCode(errorCode).setErrorSubCode(errorSubCode) + .setData(data).build(); + log.debug("Sending notification message to {}", channel.getRemoteAddress()); + channel.write(Collections.singletonList(msg)); + } + + /** * Send keep alive message. * * @throws IOException when channel is disconnected @@ -572,60 +636,220 @@ class BGPChannelHandler extends IdleStateAwareChannelHandler { */ synchronized void sendKeepAliveMessage() throws IOException, BGPParseException { - // TODO: send keep alive message. + BGPMessage msg = factory4.keepaliveMessageBuilder().build(); + log.debug("Sending keepalive message to {}", channel.getRemoteAddress()); + channel.write(Collections.singletonList(msg)); } /** - * Send notification and close channel with peer. + * Process unknown BGP message received. + * + * @param errorCode error code + * @param errorSubCode error sub code + * @param data message type + * @throws BGPParseException while processing error messsage + * @throws IOException while processing error message */ - private void sendErrNotificationAndCloseChannel() { - // TODO: send notification + public void processUnknownMsg(byte errorCode, byte errorSubCode, byte data) throws BGPParseException, IOException { + log.debug("UNKNOWN message received"); + byte[] byteArray = new byte[1]; + byteArray[0] = data; + sendNotification(errorCode, errorSubCode, byteArray); channel.close(); } /** - * Process unknown BGP message received. + * BGP open message validation. * - * @throws BGPParseException when received invalid message + * @param h channel handler + * @param openMsg open message + * @return true if valid message, otherwise false + * @throws BGPParseException throw exception */ - public void processUnknownMsg() throws BGPParseException { - log.debug("UNKNOWN message received"); - Date now = null; - if (bgpPacketStats.wrongPacketCount() == 0) { - now = new Date(); - bgpPacketStats.setTime(now.getTime()); - bgpPacketStats.addWrongPacket(); - sendErrNotificationAndCloseChannel(); + public boolean openMsgValidation(BGPChannelHandler h, BGPOpenMsg openMsg) throws BGPParseException { + boolean result; + + // Validate BGP ID + result = bgpIdValidation(openMsg); + if (!result) { + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, BGPErrorType.BAD_BGP_IDENTIFIER, null); + } + + // Validate AS number + result = asNumberValidation(h, openMsg); + if (!result) { + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, BGPErrorType.BAD_PEER_AS, null); + } + + // Validate hold timer + if ((openMsg.getHoldTime() != 0) && (openMsg.getHoldTime() < BGP_MIN_HOLDTIME)) { + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, BGPErrorType.UNACCEPTABLE_HOLD_TIME, null); + } + + // Validate capabilities + result = capabilityValidation(h, openMsg); + return result; + } + + /** + * Capability Validation. + * + * @param h channel handler + * @param openmsg open message + * @return success or failure + * @throws BGPParseException + */ + private boolean capabilityValidation(BGPChannelHandler h, BGPOpenMsg openmsg) throws BGPParseException { + log.debug("capabilityValidation"); + + boolean isMultiProtocolcapabilityExists = false; + boolean isFourOctetCapabilityExits = false; + int capAsNum = 0; + + List<BGPValueType> capabilityTlv = openmsg.getCapabilityTlv(); + ListIterator<BGPValueType> listIterator = capabilityTlv.listIterator(); + List<BGPValueType> unSupportedCapabilityTlv = new LinkedList<>(); + ListIterator<BGPValueType> unSupportedCaplistIterator = unSupportedCapabilityTlv.listIterator(); + BGPValueType tempTlv; + boolean isLargeAsCapabilityCfg = h.bgpconfig.getLargeASCapability(); + boolean isLsCapabilityCfg = h.bgpconfig.getLsCapability(); + + while (listIterator.hasNext()) { + BGPValueType tlv = listIterator.next(); + if (tlv.getType() == MULTI_PROTOCOL_EXTN_CAPA_TYPE) { + isMultiProtocolcapabilityExists = true; + } + if (tlv.getType() == FOUR_OCTET_AS_NUM_CAPA_TYPE) { + isFourOctetCapabilityExits = true; + capAsNum = ((FourOctetAsNumCapabilityTlv) tlv).getInt(); + } } - if (bgpPacketStats.wrongPacketCount() > 1) { - Date lastest = new Date(); - bgpPacketStats.addWrongPacket(); - // converting to seconds - if (((lastest.getTime() - bgpPacketStats.getTime()) / 1000) > 60) { - now = lastest; - bgpPacketStats.setTime(now.getTime()); - bgpPacketStats.resetWrongPacket(); - bgpPacketStats.addWrongPacket(); - } else if (((int) (lastest.getTime() - now.getTime()) / 1000) < 60) { - if (MAX_WRONG_COUNT_PACKET <= bgpPacketStats.wrongPacketCount()) { - // reset once wrong packet count reaches MAX_WRONG_COUNT_PACKET - bgpPacketStats.resetWrongPacket(); - // max wrong packets received send error message and close the session - sendErrNotificationAndCloseChannel(); + + if (isFourOctetCapabilityExits) { + if (capAsNum > MAX_AS2_NUM) { + if (openmsg.getAsNumber() != AS_TRANS) { + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, BGPErrorType.BAD_PEER_AS, null); + } + } else { + if (capAsNum != openmsg.getAsNumber()) { + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, BGPErrorType.BAD_PEER_AS, null); } } } + + if ((isLsCapabilityCfg)) { + if (!isMultiProtocolcapabilityExists) { + tempTlv = new MultiProtocolExtnCapabilityTlv(AFI, RES, SAFI); + unSupportedCapabilityTlv.add(tempTlv); + } + } + + if ((isLargeAsCapabilityCfg)) { + if (!isFourOctetCapabilityExits) { + tempTlv = new FourOctetAsNumCapabilityTlv(h.bgpconfig.getAsNumber()); + unSupportedCapabilityTlv.add(tempTlv); + } + } + + if (unSupportedCaplistIterator.hasNext()) { + ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); + while (unSupportedCaplistIterator.hasNext()) { + BGPValueType tlv = unSupportedCaplistIterator.next(); + tlv.write(buffer); + } + throw new BGPParseException(BGPErrorType.OPEN_MESSAGE_ERROR, + BGPErrorType.UNSUPPORTED_CAPABILITY, buffer); + } else { + return true; + } } /** - * Open message validation. + * AS Number Validation. * - * @param h channel handler - * @return true if validation succeed, otherwise false - * @throws BGPParseException when received invalid message + * @param h channel Handler + * @param openMsg open message + * @return true or false */ - public boolean openMsgValidation(BGPChannelHandler h) throws BGPParseException { - // TODO: Open message validation. + private boolean asNumberValidation(BGPChannelHandler h, BGPOpenMsg openMsg) { + log.debug("AS Num validation"); + + int capAsNum = 0; + boolean isFourOctetCapabilityExits = false; + + BGPPeerCfg peerCfg = h.bgpconfig.displayPeers(peerAddr); + List<BGPValueType> capabilityTlv = openMsg.getCapabilityTlv(); + ListIterator<BGPValueType> listIterator = capabilityTlv.listIterator(); + + while (listIterator.hasNext()) { + BGPValueType tlv = listIterator.next(); + if (tlv.getType() == FOUR_OCTET_AS_NUM_CAPA_TYPE) { + isFourOctetCapabilityExits = true; + capAsNum = ((FourOctetAsNumCapabilityTlv) tlv).getInt(); + } + } + + if (peerCfg.getAsNumber() > MAX_AS2_NUM) { + if (openMsg.getAsNumber() != AS_TRANS) { + return false; + } + + if (!isFourOctetCapabilityExits) { + return false; + } + + if (peerCfg.getAsNumber() != capAsNum) { + return false; + } + + isIbgpSession = peerCfg.getIsIBgp(); + if (isIbgpSession) { + // IBGP - AS number should be same for Peer and local if it is IBGP + if (h.bgpconfig.getAsNumber() != capAsNum) { + return false; + } + } + } else { + + if (openMsg.getAsNumber() != peerCfg.getAsNumber()) { + return false; + } + + if (isFourOctetCapabilityExits) { + if (capAsNum != peerCfg.getAsNumber()) { + return false; + } + } + + isIbgpSession = peerCfg.getIsIBgp(); + if (isIbgpSession) { + // IBGP - AS number should be same for Peer and local if it is IBGP + if (openMsg.getAsNumber() != h.bgpconfig.getAsNumber()) { + return false; + } + } + } + return true; + } + + /** + * Validates BGP ID. + * + * @param openMsg open message + * @return true or false + */ + private boolean bgpIdValidation(BGPOpenMsg openMsg) { + String openMsgBgpId = Ip4Address.valueOf(openMsg.getBgpId()).toString(); + + InetAddress ipAddress; + try { + ipAddress = InetAddress.getByName(openMsgBgpId); + if (ipAddress.isMulticastAddress()) { + return false; + } + } catch (UnknownHostException e) { + log.debug("InetAddress convertion failed"); + } return true; } } diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java index d8378e31..35c31ab7 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java @@ -16,25 +16,25 @@ package org.onosproject.bgp.controller.impl; -import static org.onlab.util.Tools.groupedThreads; - +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; +import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; + import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Deactivate; import org.apache.felix.scr.annotations.Service; -import org.onlab.packet.IpAddress; import org.onosproject.bgp.controller.BGPCfg; import org.onosproject.bgp.controller.BGPController; import org.onosproject.bgp.controller.BGPId; -import org.onosproject.bgp.controller.BGPPacketStats; import org.onosproject.bgp.controller.BGPPeer; +import org.onosproject.bgp.controller.BgpLinkListener; +import org.onosproject.bgp.controller.BgpNodeListener; +import org.onosproject.bgp.controller.BgpPeerManager; +import org.onosproject.bgpio.exceptions.BGPParseException; import org.onosproject.bgpio.protocol.BGPMessage; -import org.onosproject.bgpio.protocol.BGPVersion; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,16 +44,13 @@ public class BGPControllerImpl implements BGPController { private static final Logger log = LoggerFactory.getLogger(BGPControllerImpl.class); - private final ExecutorService executorMsgs = Executors.newFixedThreadPool(32, - groupedThreads("onos/bgp", - "event-stats-%d")); - - private final ExecutorService executorBarrier = Executors.newFixedThreadPool(4, - groupedThreads("onos/bgp", - "event-barrier-%d")); protected ConcurrentHashMap<BGPId, BGPPeer> connectedPeers = new ConcurrentHashMap<BGPId, BGPPeer>(); - protected BGPPeerManager peerManager = new BGPPeerManager(); + protected BGPPeerManagerImpl peerManager = new BGPPeerManagerImpl(); + + protected Set<BgpNodeListener> bgpNodeListener = new CopyOnWriteArraySet<>(); + protected Set<BgpLinkListener> bgpLinkListener = new CopyOnWriteArraySet<>(); + final Controller ctrl = new Controller(this); private BGPConfig bgpconfig = new BGPConfig(); @@ -83,12 +80,42 @@ public class BGPControllerImpl implements BGPController { } @Override + public void addListener(BgpNodeListener listener) { + this.bgpNodeListener.add(listener); + } + + @Override + public void removeListener(BgpNodeListener listener) { + this.bgpNodeListener.remove(listener); + } + + @Override + public Set<BgpNodeListener> listener() { + return bgpNodeListener; + } + + @Override + public void addLinkListener(BgpLinkListener listener) { + this.bgpLinkListener.add(listener); + } + + @Override + public void removeLinkListener(BgpLinkListener listener) { + this.bgpLinkListener.remove(listener); + } + + @Override + public Set<BgpLinkListener> linkListener() { + return bgpLinkListener; + } + + @Override public void writeMsg(BGPId bgpId, BGPMessage msg) { - // TODO: Send message + this.getPeer(bgpId).sendMessage(msg); } @Override - public void processBGPPacket(BGPId bgpId, BGPMessage msg) { + public void processBGPPacket(BGPId bgpId, BGPMessage msg) throws BGPParseException { switch (msg.getType()) { case OPEN: @@ -122,18 +149,12 @@ public class BGPControllerImpl implements BGPController { * Implementation of an BGP Peer which is responsible for keeping track of connected peers and the state in which * they are. */ - public class BGPPeerManager { + public class BGPPeerManagerImpl implements BgpPeerManager { - private final Logger log = LoggerFactory.getLogger(BGPPeerManager.class); + private final Logger log = LoggerFactory.getLogger(BGPPeerManagerImpl.class); private final Lock peerLock = new ReentrantLock(); - /** - * Add a BGP peer that has just connected to the system. - * - * @param bgpId the id of bgp peer to add - * @param bgpPeer the actual bgp peer object. - * @return true if added, false otherwise. - */ + @Override public boolean addConnectedPeer(BGPId bgpId, BGPPeer bgpPeer) { if (connectedPeers.get(bgpId) != null) { @@ -147,119 +168,49 @@ public class BGPControllerImpl implements BGPController { } } - /** - * Checks if the activation for this bgp peer is valid. - * - * @param bgpId the id of bgp peer to check - * @return true if valid, false otherwise - */ + @Override public boolean isPeerConnected(BGPId bgpId) { if (connectedPeers.get(bgpId) == null) { - this.log.error("Trying to activate peer but is not in " + "connected peer: bgpIp {}. Aborting ..", - bgpId.toString()); + this.log.error("Is peer connected: bgpIp {}.", bgpId.toString()); return false; } return true; } - /** - * Checks if the activation for this bgp peer is valid. - * - * @param routerid the routerid of bgp peer to check - * @return true if valid, false otherwise - */ - public boolean isPeerConnected(String routerid) { - - final BGPId bgpId; - bgpId = BGPId.bgpId(IpAddress.valueOf(routerid)); - - if (connectedPeers.get(bgpId) != null) { - this.log.info("Peer connection exist "); - return true; - } - this.log.info("Initiate connect request to " + "peer: bgpIp {}", bgpId.toString()); - - return false; - } - - /** - * Clear all state in controller peer maps for a bgp peer that has - * disconnected from the local controller. - * - * @param bgpId the id of bgp peer to remove. - */ + @Override public void removeConnectedPeer(BGPId bgpId) { connectedPeers.remove(bgpId); } - /** - * Clear all state in controller peer maps for a bgp peer that has - * disconnected from the local controller. - * - * @param routerid the router id of bgp peer to remove. - */ - public void removeConnectedPeer(String routerid) { - final BGPId bgpId; - - bgpId = BGPId.bgpId(IpAddress.valueOf(routerid)); - - connectedPeers.remove(bgpId); - } - - /** - * Gets bgp peer for connected peer map. - * - * @param routerid router id - * @return peer if available, null otherwise - */ - public BGPPeer getPeer(String routerid) { - final BGPId bgpId; - bgpId = BGPId.bgpId(IpAddress.valueOf(routerid)); - + @Override + public BGPPeer getPeer(BGPId bgpId) { return connectedPeers.get(bgpId); } /** - * Gets bgp peer instance. - * - * @param bgpId bgp identifier. - * @param pv bgp version. - * @param pktStats packet statistics. - * @return BGPPeer peer instance. - */ - public BGPPeer getBGPPeerInstance(BGPId bgpId, BGPVersion pv, BGPPacketStats pktStats) { - BGPPeer bgpPeer = new BGPPeerImpl(); - bgpPeer.init(bgpId, pv, pktStats); + * Gets bgp peer instance. + * + * @param bgpController controller instance. + * @param sessionInfo bgp session info. + * @param pktStats packet statistics. + * @return BGPPeer peer instance. + */ + public BGPPeer getBGPPeerInstance(BGPController bgpController, BgpSessionInfoImpl sessionInfo, + BGPPacketStatsImpl pktStats) { + BGPPeer bgpPeer = new BGPPeerImpl(bgpController, sessionInfo, pktStats); return bgpPeer; } } - /** - * Gets controller instance. - * - * @return Controller instance. - */ - public Controller getController() { - return ctrl; - } - - /** - * Gets connected peers. - * - * @return connectedPeers from connected Peers Map. - */ - public ConcurrentHashMap<BGPId, BGPPeer> getConnectedPeers() { + @Override + public ConcurrentHashMap<BGPId, BGPPeer> connectedPeers() { return connectedPeers; } - /** - * Gets peer manager. - * - * @return peerManager. - */ - public BGPPeerManager getPeerManager() { + @Override + public BGPPeerManagerImpl peerManager() { return peerManager; } @@ -269,7 +220,7 @@ public class BGPControllerImpl implements BGPController { } @Override - public int getBGPConnNumber() { + public int connectedPeerCount() { return connectedPeers.size(); } -}
\ No newline at end of file +} diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerConfig.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerConfig.java index 51b95a4b..14a68cf6 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerConfig.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerConfig.java @@ -16,6 +16,7 @@ package org.onosproject.bgp.controller.impl; import org.onlab.packet.Ip4Address; +import org.onosproject.bgp.controller.BgpConnectPeer; import org.onosproject.bgp.controller.BGPPeerCfg; /** @@ -28,6 +29,7 @@ public class BGPPeerConfig implements BGPPeerCfg { private Ip4Address peerId = null; private State state; private boolean selfInitiated; + private BgpConnectPeer connectPeer; /** * Constructor to initialize the values. @@ -106,4 +108,14 @@ public class BGPPeerConfig implements BGPPeerCfg { public void setSelfInnitConnection(boolean selfInit) { this.selfInitiated = selfInit; } + + @Override + public BgpConnectPeer connectPeer() { + return this.connectPeer; + } + + @Override + public void setConnectPeer(BgpConnectPeer connectPeer) { + this.connectPeer = connectPeer; + } } diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java index 212b24d3..45f74634 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPeerImpl.java @@ -24,11 +24,12 @@ import java.util.concurrent.RejectedExecutionException; import org.jboss.netty.channel.Channel; import org.onlab.packet.IpAddress; -import org.onosproject.bgp.controller.BGPId; -import org.onosproject.bgp.controller.BGPPacketStats; +import org.onosproject.bgp.controller.BGPController; import org.onosproject.bgp.controller.BGPPeer; +import org.onosproject.bgp.controller.BgpSessionInfo; +import org.onosproject.bgpio.protocol.BGPFactories; +import org.onosproject.bgpio.protocol.BGPFactory; import org.onosproject.bgpio.protocol.BGPMessage; -import org.onosproject.bgpio.protocol.BGPVersion; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,19 +44,31 @@ public class BGPPeerImpl implements BGPPeer { private static final String SHUTDOWN_MSG = "Worker has already been shutdown"; + private BGPController bgpController; private Channel channel; protected String channelId; private boolean connected; protected boolean isHandShakeComplete = false; - public BGPSessionInfo sessionInfo; + private BgpSessionInfo sessionInfo; private BGPPacketStatsImpl pktStats; + @Override - public void init(BGPId bgpId, BGPVersion bgpVersion, BGPPacketStats pktStats) { - this.sessionInfo.setRemoteBgpId(bgpId); - this.sessionInfo.setRemoteBgpVersion(bgpVersion); - this.pktStats = (BGPPacketStatsImpl) pktStats; - this.sessionInfo = new BGPSessionInfo(); + public BgpSessionInfo sessionInfo() { + return sessionInfo; + } + + /** + * Initialize peer. + * + *@param bgpController controller instance + *@param sessionInfo bgp session info + *@param pktStats packet statistics + */ + public BGPPeerImpl(BGPController bgpController, BgpSessionInfo sessionInfo, BGPPacketStatsImpl pktStats) { + this.bgpController = bgpController; + this.sessionInfo = sessionInfo; + this.pktStats = pktStats; } // ************************ @@ -129,53 +142,9 @@ public class BGPPeerImpl implements BGPPeer { return channelId; } - // ************************ - // BGP Peer features related - // ************************ - - @Override - public final BGPId getBGPId() { - return this.sessionInfo.getRemoteBgpId(); - }; - - @Override - public final String getStringId() { - return this.sessionInfo.getRemoteBgpId().toString(); - } - - @Override - public final void setBgpPeerVersion(BGPVersion peerVersion) { - this.sessionInfo.setRemoteBgpVersion(peerVersion); - } - - @Override - public void setBgpPeerASNum(short peerASNum) { - this.sessionInfo.setRemoteBgpASNum(peerASNum); - } - - @Override - public void setBgpPeerHoldTime(short peerHoldTime) { - this.sessionInfo.setRemoteBgpHoldTime(peerHoldTime); - } - - @Override - public void setBgpPeerIdentifier(int peerIdentifier) { - this.sessionInfo.setRemoteBgpIdentifier(peerIdentifier); - } - - @Override - public int getBgpPeerIdentifier() { - return this.sessionInfo.getRemoteBgpIdentifier(); - } - - @Override - public int getNegotiatedHoldTime() { - return this.sessionInfo.getNegotiatedholdTime(); - } - @Override - public void setNegotiatedHoldTime(short negotiatedHoldTime) { - this.sessionInfo.setNegotiatedholdTime(negotiatedHoldTime); + public BGPFactory factory() { + return BGPFactories.getFactory(sessionInfo.remoteBgpVersion()); } @Override @@ -185,7 +154,8 @@ public class BGPPeerImpl implements BGPPeer { @Override public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues().add("channel", channelId()) - .add("bgpId", getBGPId()).toString(); + return MoreObjects.toStringHelper(getClass()).omitNullValues() + .add("channel", channelId()) + .add("bgpId", sessionInfo().remoteBgpId()).toString(); } } diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPipelineFactory.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPipelineFactory.java index b2ca5077..e6f09f20 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPipelineFactory.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPPipelineFactory.java @@ -23,6 +23,7 @@ import org.jboss.netty.handler.timeout.ReadTimeoutHandler; import org.jboss.netty.util.ExternalResourceReleasable; import org.jboss.netty.util.HashedWheelTimer; import org.jboss.netty.util.Timer; +import org.onosproject.bgp.controller.BGPController; /** * Creates a ChannelPipeline for a server-side bgp channel. @@ -32,30 +33,36 @@ public class BGPPipelineFactory static final Timer TIMER = new HashedWheelTimer(); protected ReadTimeoutHandler readTimeoutHandler; - BGPControllerImpl bgpCtrlImpl; + private boolean isBgpServ; + private BGPController bgpController; /** * Constructor to initialize the values. * - * @param ctrlImpl parent ctrlImpl - * @param isServBgp if it is a server or not + * @param bgpController parent controller + * @param isBgpServ if it is a server or remote peer */ - public BGPPipelineFactory(BGPControllerImpl ctrlImpl, boolean isServBgp) { + public BGPPipelineFactory(BGPController bgpController, boolean isBgpServ) { super(); - bgpCtrlImpl = ctrlImpl; - /* hold time*/ - readTimeoutHandler = new ReadTimeoutHandler(TIMER, bgpCtrlImpl.getConfig().getHoldTime()); + this.isBgpServ = isBgpServ; + this.bgpController = bgpController; + /* hold time */ + this.readTimeoutHandler = new ReadTimeoutHandler(TIMER, bgpController.getConfig().getHoldTime()); } @Override public ChannelPipeline getPipeline() throws Exception { - BGPChannelHandler handler = new BGPChannelHandler(bgpCtrlImpl); + BGPChannelHandler handler = new BGPChannelHandler(bgpController); ChannelPipeline pipeline = Channels.pipeline(); pipeline.addLast("bgpmessagedecoder", new BGPMessageDecoder()); pipeline.addLast("bgpmessageencoder", new BGPMessageEncoder()); pipeline.addLast("holdTime", readTimeoutHandler); - pipeline.addLast("PassiveHandler", handler); + if (isBgpServ) { + pipeline.addLast("PassiveHandler", handler); + } else { + pipeline.addLast("ActiveHandler", handler); + } return pipeline; } diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPSessionInfo.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPSessionInfo.java deleted file mode 100755 index 207d7831..00000000 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPSessionInfo.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.bgp.controller.impl; - -import org.onosproject.bgp.controller.BGPId; -import org.onosproject.bgpio.protocol.BGPVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Class maintains BGP peer session info. - */ -public class BGPSessionInfo { - - protected final Logger log = LoggerFactory.getLogger(BGPSessionInfo.class); - private BGPId remoteBgpId; - private BGPVersion remoteBgpVersion; - private short remoteBgpASNum; - private short remoteBgpholdTime; - private int remoteBgpIdentifier; - private short negotiatedholdTime; - - /** - * Gets the negotiated hold time for the session. - * - * @return negotiated hold time. - */ - public short getNegotiatedholdTime() { - return negotiatedholdTime; - } - - /** - * Sets the negotiated hold time for the session. - * - * @param negotiatedholdTime negotiated hold time. - */ - public void setNegotiatedholdTime(short negotiatedholdTime) { - this.negotiatedholdTime = negotiatedholdTime; - } - - /** - * Gets the BGP ID of BGP peer. - * - * @return bgp ID. - */ - public BGPId getRemoteBgpId() { - return remoteBgpId; - } - - /** - * Sets the BGP ID of bgp peer. - * - * @param bgpId BGP ID to set. - */ - public void setRemoteBgpId(BGPId bgpId) { - log.debug("Remote BGP ID {}", bgpId); - this.remoteBgpId = bgpId; - } - - /** - * Gets the BGP version of peer. - * - * @return bgp version. - */ - public BGPVersion getRemoteBgpVersion() { - return remoteBgpVersion; - } - - /** - * Sets the BGP version for this bgp peer. - * - * @param bgpVersion bgp version to set. - */ - public void setRemoteBgpVersion(BGPVersion bgpVersion) { - log.debug("Remote BGP version {}", bgpVersion); - this.remoteBgpVersion = bgpVersion; - } - - /** - * Gets the BGP remote bgp AS number. - * - * @return remoteBgpASNum peer AS number. - */ - public short getRemoteBgpASNum() { - return remoteBgpASNum; - } - - /** - * Sets the AS Number for this bgp peer. - * - * @param bgpASNum the autonomous system number value to set. - */ - public void setRemoteBgpASNum(short bgpASNum) { - log.debug("Remote BGP AS number {}", bgpASNum); - this.remoteBgpASNum = bgpASNum; - } - - /** - * Gets the BGP peer hold time. - * - * @return bgp hold time. - */ - public short getRemoteBgpHoldTime() { - return remoteBgpholdTime; - } - - /** - * Sets the hold time for this bgp peer. - * - * @param holdTime the hold timer value to set. - */ - public void setRemoteBgpHoldTime(short holdTime) { - log.debug("Remote BGP HoldTime {}", holdTime); - this.remoteBgpholdTime = holdTime; - } - - /** - * Gets the BGP version for this bgp peer. - * - * @return bgp identifier. - */ - public int getRemoteBgpIdentifier() { - return remoteBgpIdentifier; - } - - /** - * Sets the peer identifier value. - * - * @param bgpIdentifier the bgp peer identifier value. - */ - public void setRemoteBgpIdentifier(int bgpIdentifier) { - log.debug("Remote BGP Identifier {}", bgpIdentifier); - this.remoteBgpIdentifier = bgpIdentifier; - } -} diff --git a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java index 402e8c94..017c39e5 100755 --- a/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java +++ b/framework/src/onos/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java @@ -24,11 +24,17 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.Executors; +import org.jboss.netty.bootstrap.ClientBootstrap; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.group.ChannelGroup; import org.jboss.netty.channel.group.DefaultChannelGroup; +import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; +import org.onosproject.bgp.controller.BGPController; +import org.onosproject.bgpio.protocol.BGPFactories; +import org.onosproject.bgpio.protocol.BGPFactory; +import org.onosproject.bgpio.protocol.BGPVersion; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,36 +44,45 @@ import org.slf4j.LoggerFactory; */ public class Controller { - protected static final Logger log = LoggerFactory.getLogger(Controller.class); + private static final Logger log = LoggerFactory.getLogger(Controller.class); + + private static final BGPFactory FACTORY4 = BGPFactories.getFactory(BGPVersion.BGP_4); private ChannelGroup cg; // Configuration options private static final short BGP_PORT_NUM = 179; - private int workerThreads = 16; + private final int workerThreads = 16; + private final int peerWorkerThreads = 16; // Start time of the controller - protected long systemStartTime; + private long systemStartTime; private NioServerSocketChannelFactory serverExecFactory; + private NioClientSocketChannelFactory peerExecFactory; + private static ClientBootstrap peerBootstrap; + private BGPController bgpController; // Perf. related configuration - protected static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024; - - BGPControllerImpl bgpCtrlImpl; + private static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024; /** - * Constructor to initialize parameter. + * Constructor to initialize the values. * - * @param bgpCtrlImpl BGP controller Impl instance + * @param bgpController bgp controller instance */ - public Controller(BGPControllerImpl bgpCtrlImpl) { - this.bgpCtrlImpl = bgpCtrlImpl; + public Controller(BGPController bgpController) { + this.bgpController = bgpController; } - // *************** - // Getters/Setters - // *************** + /** + * Returns factory version for processing BGP messages. + * + * @return instance of factory version + */ + static BGPFactory getBGPMessageFactory4() { + return FACTORY4; + } /** * To get system start time. @@ -78,16 +93,20 @@ public class Controller { return (this.systemStartTime); } - // ************** - // Initialization - // ************** - /** * Tell controller that we're ready to accept bgp peer connections. */ public void run() { try { + + peerBootstrap = createPeerBootStrap(); + + peerBootstrap.setOption("reuseAddr", true); + peerBootstrap.setOption("child.keepAlive", true); + peerBootstrap.setOption("child.tcpNoDelay", true); + peerBootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE); + final ServerBootstrap bootstrap = createServerBootStrap(); bootstrap.setOption("reuseAddr", true); @@ -95,7 +114,7 @@ public class Controller { bootstrap.setOption("child.tcpNoDelay", true); bootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE); - ChannelPipelineFactory pfact = new BGPPipelineFactory(bgpCtrlImpl, true); + ChannelPipelineFactory pfact = new BGPPipelineFactory(bgpController, true); bootstrap.setPipelineFactory(pfact); InetSocketAddress sa = new InetSocketAddress(getBgpPortNum()); @@ -129,6 +148,36 @@ public class Controller { } /** + * Creates peer boot strap. + * + * @return ClientBootstrap + */ + private ClientBootstrap createPeerBootStrap() { + + if (peerWorkerThreads == 0) { + peerExecFactory = new NioClientSocketChannelFactory( + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "boss-%d")), + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "worker-%d"))); + return new ClientBootstrap(peerExecFactory); + } else { + peerExecFactory = new NioClientSocketChannelFactory( + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "boss-%d")), + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "worker-%d")), + peerWorkerThreads); + return new ClientBootstrap(peerExecFactory); + } + } + + /** + * Gets peer bootstrap. + * + * @return peer bootstrap + */ + public static ClientBootstrap peerBootstrap() { + return peerBootstrap; + } + + /** * Initialize internal data structures. */ public void init() { @@ -137,10 +186,11 @@ public class Controller { this.systemStartTime = System.currentTimeMillis(); } - // ************** - // Utility methods - // ************** - + /** + * Gets run time memory. + * + * @return m run time memory + */ public Map<String, Long> getMemory() { Map<String, Long> m = new HashMap<>(); Runtime runtime = Runtime.getRuntime(); @@ -149,6 +199,11 @@ public class Controller { return m; } + /** + * Gets UP time. + * + * @return UP time + */ public Long getUptime() { RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean(); return rb.getUptime(); @@ -169,6 +224,7 @@ public class Controller { public void stop() { log.info("Stopped"); serverExecFactory.shutdown(); + peerExecFactory.shutdown(); cg.close(); } diff --git a/framework/src/onos/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java b/framework/src/onos/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java index c3693799..cb4ff04a 100644 --- a/framework/src/onos/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java +++ b/framework/src/onos/cli/src/main/java/org/onosproject/cli/net/DeviceSetControllersCommand.java @@ -59,8 +59,11 @@ public class DeviceSetControllersCommand extends AbstractShellCommand { ControllerConfig config = h.behaviour(ControllerConfig.class); print("before:"); config.getControllers().forEach(c -> print(c.target())); - - config.setControllers(newControllers); + try { + config.setControllers(newControllers); + } catch (NullPointerException e) { + print("No Device with requested parameters {} ", uri); + } print("after:"); config.getControllers().forEach(c -> print(c.target())); print("size %d", config.getControllers().size()); diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java index d81b83cc..34042dad 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java @@ -16,6 +16,7 @@ package org.onosproject.net; import static com.google.common.base.Preconditions.checkArgument; +import com.google.common.base.Objects; /** * Base implementation of an annotated model description. @@ -46,4 +47,18 @@ public abstract class AbstractDescription implements Annotated { return annotations; } + @Override + public int hashCode() { + return Objects.hashCode(annotations); + } + + @Override + public boolean equals(Object object) { + if (object instanceof AbstractDescription) { + AbstractDescription that = (AbstractDescription) object; + return Objects.equal(this.annotations, that.annotations); + } + return false; + } + } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java index 2877701e..557fa5c1 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java @@ -98,7 +98,8 @@ public class DefaultHost extends AbstractElement implements Host { return Objects.equals(this.id, other.id) && Objects.equals(this.mac, other.mac) && Objects.equals(this.vlan, other.vlan) && - Objects.equals(this.location, other.location); + Objects.equals(this.location, other.location) && + Objects.equals(this.ipAddresses(), other.ipAddresses()); } return false; } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java index e3d6993c..cf7bed6d 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java @@ -36,6 +36,15 @@ public interface BridgeConfig extends HandlerBehaviour { void addBridge(BridgeName bridgeName); /** + * Adds a bridge with given bridge name, dpid and exPortName. + * + * @param bridgeName bridge name + * @param dpid dpid + * @param exPortName external port name + */ + void addBridge(BridgeName bridgeName, String dpid, String exPortName); + + /** * Adds a bridge with given bridge name and dpid, and sets the controller * of the bridge with given controllers. * diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java index 5cdc0c12..3757d327 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java @@ -20,10 +20,15 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.common.annotations.Beta; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterators; import com.google.common.collect.Lists; +import org.onlab.packet.IpAddress; +import org.onlab.packet.MacAddress; import java.util.Collection; import java.util.List; +import java.util.Set; import java.util.function.Function; import static com.google.common.base.Preconditions.checkNotNull; @@ -51,6 +56,21 @@ public abstract class Config<S> { protected ConfigApplyDelegate delegate; /** + * Indicator of whether a configuration JSON field is required. + */ + public enum FieldPresence { + /** + * Signifies that config field is an optional one. + */ + OPTIONAL, + + /** + * Signifies that config field is mandatory. + */ + MANDATORY + } + + /** * Initializes the configuration behaviour with necessary context. * * @param subject configuration subject @@ -71,6 +91,29 @@ public abstract class Config<S> { } /** + * Indicates whether or not the backing JSON node contains valid data. + * <p> + * Default implementation returns true. + * Subclasses are expected to override this with their own validation. + * </p> + * + * @return true if the data is valid; false otherwise + */ + public boolean isValid() { + // TODO: figure out what assertions could be made in the base class + // NOTE: The thought is to have none, but instead to provide a set + // of predicates to allow configs to test validity of present fields, + // e.g.: + // isString(path) + // isBoolean(path) + // isNumber(path, [min, max]) + // isDecimal(path, [min, max]) + // isMacAddress(path) + // isIpAddress(path) + return true; + } + + /** * Returns the specific subject to which this configuration pertains. * * @return configuration subject @@ -309,4 +352,104 @@ public abstract class Config<S> { return this; } + /** + * Indicates whether only the specified fields are present in the backing JSON. + * + * @param allowedFields allowed field names + * @return true if all allowedFields are present; false otherwise + */ + protected boolean hasOnlyFields(String... allowedFields) { + Set<String> fields = ImmutableSet.copyOf(allowedFields); + return !Iterators.any(object.fieldNames(), f -> !fields.contains(f)); + } + + /** + * Indicates whether the specified field holds a valid MAC address. + * + * @param field JSON field name + * @param presence specifies if field is optional or mandatory + * @return true if valid; false otherwise + * @throws IllegalArgumentException if field is present, but not valid MAC + */ + protected boolean isMacAddress(String field, FieldPresence presence) { + JsonNode node = object.path(field); + return isValid(node, presence, node.isTextual() && + MacAddress.valueOf(node.asText()) != null); + } + + /** + * Indicates whether the specified field holds a valid IP address. + * + * @param field JSON field name + * @param presence specifies if field is optional or mandatory + * @return true if valid; false otherwise + * @throws IllegalArgumentException if field is present, but not valid IP + */ + protected boolean isIpAddress(String field, FieldPresence presence) { + JsonNode node = object.path(field); + return isValid(node, presence, node.isTextual() && + IpAddress.valueOf(node.asText()) != null); + } + + /** + * Indicates whether the specified field holds a valid string value. + * + * @param field JSON field name + * @param presence specifies if field is optional or mandatory + * @param pattern optional regex pattern + * @return true if valid; false otherwise + * @throws IllegalArgumentException if field is present, but not valid MAC + */ + protected boolean isString(String field, FieldPresence presence, String... pattern) { + JsonNode node = object.path(field); + return isValid(node, presence, node.isTextual() && + (pattern.length > 0 && node.asText().matches(pattern[0]) || pattern.length < 1)); + } + + /** + * Indicates whether the specified field holds a valid number. + * + * @param field JSON field name + * @param presence specifies if field is optional or mandatory + * @param minMax optional min/max values + * @return true if valid; false otherwise + * @throws IllegalArgumentException if field is present, but not valid + */ + protected boolean isNumber(String field, FieldPresence presence, long... minMax) { + JsonNode node = object.path(field); + return isValid(node, presence, (node.isLong() || node.isInt()) && + (minMax.length > 0 && minMax[0] <= node.asLong() || minMax.length < 1) && + (minMax.length > 1 && minMax[1] > node.asLong() || minMax.length < 2)); + } + + /** + * Indicates whether the specified field holds a valid decimal number. + * + * @param field JSON field name + * @param presence specifies if field is optional or mandatory + * @param minMax optional min/max values + * @return true if valid; false otherwise + * @throws IllegalArgumentException if field is present, but not valid + */ + protected boolean isDecimal(String field, FieldPresence presence, double... minMax) { + JsonNode node = object.path(field); + return isValid(node, presence, (node.isDouble() || node.isFloat()) && + (minMax.length > 0 && minMax[0] <= node.asDouble() || minMax.length < 1) && + (minMax.length > 1 && minMax[1] > node.asDouble() || minMax.length < 2)); + } + + /** + * Indicates whether the node is present and of correct value or not + * mandatory and absent. + * + * @param node JSON node + * @param presence specifies if field is optional or mandatory + * @param correctValue true if the value is correct + * @return true if the field is as expected + */ + private boolean isValid(JsonNode node, FieldPresence presence, boolean correctValue) { + boolean isMandatory = presence == FieldPresence.MANDATORY; + return isMandatory && correctValue || !isMandatory && !node.isNull() || correctValue; + } + } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java index 8eb69a45..f1b22c41 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java @@ -119,7 +119,7 @@ public interface NetworkConfigService /** * Applies configuration for the specified subject and configuration - * class using the raw JSON object. If configuration already exists, it + * class using the raw JSON node. If configuration already exists, it * will be updated. * * @param subject configuration subject @@ -128,6 +128,8 @@ public interface NetworkConfigService * @param <S> type of subject * @param <C> type of configuration * @return configuration or null if one is not available + * @throws IllegalArgumentException if the supplied JSON node contains + * invalid data */ <S, C extends Config<S>> C applyConfig(S subject, Class<C> configClass, JsonNode json); diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java index 9dd66e8d..9be4b120 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java @@ -113,6 +113,8 @@ public interface NetworkConfigStore extends Store<NetworkConfigEvent, NetworkCon * @param <S> type of subject * @param <C> type of configuration * @return configuration object + * @throws IllegalArgumentException if the supplied JSON node contains + * invalid data */ <S, C extends Config<S>> C applyConfig(S subject, Class<C> configClass, JsonNode json); diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java index 0fcc800d..9074792c 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java @@ -24,6 +24,7 @@ import java.net.URI; import static com.google.common.base.MoreObjects.toStringHelper; import static com.google.common.base.Preconditions.checkNotNull; import static org.onosproject.net.Device.Type; +import com.google.common.base.Objects; /** * Default implementation of immutable device description entity. @@ -132,6 +133,30 @@ public class DefaultDeviceDescription extends AbstractDescription .toString(); } + @Override + public int hashCode() { + return Objects.hashCode(super.hashCode(), uri, type, manufacturer, + hwVersion, swVersion, serialNumber, chassisId); + } + + @Override + public boolean equals(Object object) { + if (object instanceof DefaultDeviceDescription) { + if (!super.equals(object)) { + return false; + } + DefaultDeviceDescription that = (DefaultDeviceDescription) object; + return Objects.equal(this.uri, that.uri) + && Objects.equal(this.type, that.type) + && Objects.equal(this.manufacturer, that.manufacturer) + && Objects.equal(this.hwVersion, that.hwVersion) + && Objects.equal(this.swVersion, that.swVersion) + && Objects.equal(this.serialNumber, that.serialNumber) + && Objects.equal(this.chassisId, that.chassisId); + } + return false; + } + // default constructor for serialization private DefaultDeviceDescription() { this.uri = null; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java index 572d201c..d62e932c 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java @@ -21,6 +21,7 @@ import org.onosproject.net.PortNumber; import org.onosproject.net.SparseAnnotations; import static org.onosproject.net.Port.Type; +import com.google.common.base.Objects; /** * Default implementation of immutable port description. @@ -117,4 +118,25 @@ public class DefaultPortDescription extends AbstractDescription .toString(); } + @Override + public int hashCode() { + return Objects.hashCode(super.hashCode(), number, isEnabled, type, + portSpeed); + } + + @Override + public boolean equals(Object object) { + if (object != null && getClass() == object.getClass()) { + if (!super.equals(object)) { + return false; + } + DefaultPortDescription that = (DefaultPortDescription) object; + return Objects.equal(this.number, that.number) + && Objects.equal(this.isEnabled, that.isEnabled) + && Objects.equal(this.type, that.type) + && Objects.equal(this.portSpeed, that.portSpeed); + } + return false; + } + } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java index 453a7648..a842d600 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java @@ -23,6 +23,7 @@ import java.util.Objects; import java.util.Set; import java.util.TreeSet; +import org.onlab.packet.Ip4Address; import org.onlab.packet.Ip6Address; import org.onlab.packet.IpPrefix; import org.onlab.packet.MacAddress; @@ -353,6 +354,26 @@ public final class DefaultTrafficSelector implements TrafficSelector { } @Override + public Builder matchArpTpa(Ip4Address addr) { + return add(Criteria.matchArpTpa(addr)); + } + + @Override + public Builder matchArpSpa(Ip4Address addr) { + return add(Criteria.matchArpSpa(addr)); + } + + @Override + public Builder matchArpTha(MacAddress addr) { + return add(Criteria.matchArpTha(addr)); + } + + @Override + public Builder matchArpSha(MacAddress addr) { + return add(Criteria.matchArpSha(addr)); + } + + @Override public TrafficSelector build() { return new DefaultTrafficSelector(ImmutableSet.copyOf(selector.values())); } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java index 1286ffc1..9fe88d5a 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java @@ -17,6 +17,7 @@ package org.onosproject.net.flow; import java.util.Set; +import org.onlab.packet.Ip4Address; import org.onlab.packet.Ip6Address; import org.onlab.packet.IpPrefix; import org.onlab.packet.MacAddress; @@ -386,6 +387,38 @@ public interface TrafficSelector { Builder matchIPv6ExthdrFlags(short exthdrFlags); /** + * Matches a arp IPv4 destination address. + * + * @param addr a arp IPv4 destination address + * @return a selection builder + */ + Builder matchArpTpa(Ip4Address addr); + + /** + * Matches a arp IPv4 source address. + * + * @param addr a arp IPv4 source address + * @return a selection builder + */ + Builder matchArpSpa(Ip4Address addr); + + /** + * Matches a arp_eth_dst address. + * + * @param addr a arp_eth_dst address + * @return a selection builder + */ + Builder matchArpTha(MacAddress addr); + + /** + * Matches a arp_eth_src address. + * + * @param addr a arp_eth_src address + * @return a selection builder + */ + Builder matchArpSha(MacAddress addr); + + /** * Builds an immutable traffic selector. * * @return traffic selector diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java index bc1a094c..554b8e74 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java @@ -510,9 +510,9 @@ public final class Criteria { } /** - * Creates a match on IPv4 source field using the specified value. + * Creates a match on IPv4 destination field using the specified value. * - * @param ip ipv4 source value + * @param ip ipv4 destination value * @return match criterion */ public static Criterion matchArpTpa(Ip4Address ip) { @@ -520,15 +520,35 @@ public final class Criteria { } /** - * Creates a match on MAC source field using the specified value. + * Creates a match on IPv4 source field using the specified value. * - * @param mac MAC source value + * @param ip ipv4 source value + * @return match criterion + */ + public static Criterion matchArpSpa(Ip4Address ip) { + return new ArpPaCriterion(ip, Type.ARP_SPA); + } + + /** + * Creates a match on MAC destination field using the specified value. + * + * @param mac MAC destination value * @return match criterion */ public static Criterion matchArpTha(MacAddress mac) { return new ArpHaCriterion(mac, Type.ARP_THA); } + /** + * Creates a match on MAC source field using the specified value. + * + * @param mac MAC source value + * @return match criterion + */ + public static Criterion matchArpSha(MacAddress mac) { + return new ArpHaCriterion(mac, Type.ARP_SHA); + } + public static Criterion dummy() { return new DummyCriterion(); } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionType.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionType.java index 747a85b5..3e1cb75c 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionType.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionType.java @@ -32,7 +32,8 @@ public final class ExtensionType { */ public enum ExtensionTypes { // TODO fix type numbers to include experimenter id - NICIRA_SET_TUNNEL_DST(31); + NICIRA_SET_TUNNEL_DST(31), + NICIRA_RESUBMIT(32); private ExtensionType type; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java index 1f05197a..307a6078 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java @@ -28,6 +28,7 @@ import org.onlab.packet.VlanId; import com.google.common.collect.ImmutableSet; import static com.google.common.base.MoreObjects.toStringHelper; +import com.google.common.base.Objects; /** * Default implementation of an immutable host description. @@ -119,4 +120,24 @@ public class DefaultHostDescription extends AbstractDescription .toString(); } + @Override + public int hashCode() { + return Objects.hashCode(super.hashCode(), mac, vlan, location, ip); + } + + @Override + public boolean equals(Object object) { + if (object != null && getClass() == object.getClass()) { + if (!super.equals(object)) { + return false; + } + DefaultHostDescription that = (DefaultHostDescription) object; + return Objects.equal(this.mac, that.mac) + && Objects.equal(this.vlan, that.vlan) + && Objects.equal(this.location, that.location) + && Objects.equal(this.ip, that.ip); + } + return false; + } + } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java index 58ac0bb8..92824cf8 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java @@ -18,7 +18,6 @@ package org.onosproject.net.host; import org.joda.time.LocalDateTime; import org.onosproject.event.AbstractEvent; import org.onosproject.net.Host; -import org.onosproject.net.HostLocation; import static com.google.common.base.MoreObjects.toStringHelper; @@ -52,7 +51,7 @@ public class HostEvent extends AbstractEvent<HostEvent.Type, Host> { HOST_MOVED } - private HostLocation prevLocation; + private Host prevSubject; /** * Creates an event of a given type and for the specified host and the @@ -77,25 +76,29 @@ public class HostEvent extends AbstractEvent<HostEvent.Type, Host> { } /** - * Creates an event with HOST_MOVED type along with the previous location - * of the host. + * Creates an event with previous subject. * + * The previous subject is ignored if the type is not moved or updated + * + * @param type host event type * @param host event host subject - * @param prevLocation previous location of the host + * @param prevSubject previous host subject */ - public HostEvent(Host host, HostLocation prevLocation) { - super(Type.HOST_MOVED, host); - this.prevLocation = prevLocation; + public HostEvent(Type type, Host host, Host prevSubject) { + super(type, host); + if (type == Type.HOST_MOVED || type == Type.HOST_UPDATED) { + this.prevSubject = prevSubject; + } } /** - * Gets the previous location information in this host event. + * Gets the previous subject in this host event. * - * @return the previous location, or null if previous location is not + * @return the previous subject, or null if previous subject is not * specified. */ - public HostLocation prevLocation() { - return this.prevLocation; + public Host prevSubject() { + return this.prevSubject; } @Override @@ -104,7 +107,7 @@ public class HostEvent extends AbstractEvent<HostEvent.Type, Host> { .add("time", new LocalDateTime(time())) .add("type", type()) .add("subject", subject()) - .add("prevLocation", prevLocation()) + .add("prevSubject", prevSubject()) .toString(); } } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java index 891eb65d..cba17640 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java @@ -20,6 +20,7 @@ import org.onosproject.net.AbstractDescription; import org.onosproject.net.ConnectPoint; import org.onosproject.net.Link; import org.onosproject.net.SparseAnnotations; +import com.google.common.base.Objects; /** * Default implementation of immutable link description entity. @@ -70,4 +71,23 @@ public class DefaultLinkDescription extends AbstractDescription .add("type", type()).toString(); } + @Override + public int hashCode() { + return Objects.hashCode(super.hashCode(), src, dst, type); + } + + @Override + public boolean equals(Object object) { + if (object != null && getClass() == object.getClass()) { + if (!super.equals(object)) { + return false; + } + DefaultLinkDescription that = (DefaultLinkDescription) object; + return Objects.equal(this.src, that.src) + && Objects.equal(this.dst, that.dst) + && Objects.equal(this.type, that.type); + } + return false; + } + } diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java index 3aa29f6b..d87682a9 100644 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java @@ -19,12 +19,14 @@ import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; -import java.util.Arrays; +import java.util.LinkedList; import java.util.List; import java.util.Objects; import java.util.Optional; +import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.base.Preconditions.checkState; /** * An object that is used to locate a resource in a network. @@ -32,32 +34,45 @@ import static com.google.common.base.Preconditions.checkNotNull; * of elementary resources that are not globally identifiable. A ResourcePath can be a globally * unique resource identifier. * + * Two types of resource are considered. One is discrete type and the other is continuous type. + * Discrete type resource is a resource whose amount is measured as a discrete unit. VLAN ID and + * MPLS label are examples of discrete type resource. Continuous type resource is a resource whose + * amount is measured as a continuous value. Bandwidth is an example of continuous type resource. + * A double value is associated with a continuous type value. + * * Users of this class must keep the semantics of resources regarding the hierarchical structure. * For example, resource path, Link:1/VLAN ID:100, is valid, but resource path, VLAN ID:100/Link:1 * is not valid because a link is not a sub-component of a VLAN ID. */ @Beta -public final class ResourcePath { +public abstract class ResourcePath { - private final List<Object> resources; + private final Discrete parent; + private final Object last; - public static final ResourcePath ROOT = new ResourcePath(ImmutableList.of()); + public static final Discrete ROOT = new Discrete(); - public static ResourcePath child(ResourcePath parent, Object child) { - ImmutableList<Object> components = ImmutableList.builder() - .addAll(parent.components()) - .add(child) - .build(); - return new ResourcePath(components); + /** + * Creates an resource path which represents a discrete-type resource from the specified components. + * + * @param components components of the path. The order represents hierarchical structure of the resource. + */ + public static ResourcePath discrete(Object... components) { + if (components.length == 0) { + return ROOT; + } else { + return new Discrete(ImmutableList.copyOf(components)); + } } /** - * Creates an resource path from the specified components. + * Creates an resource path which represents a continuous-type resource from the specified components. * + * @param value amount of the resource * @param components components of the path. The order represents hierarchical structure of the resource. */ - public ResourcePath(Object... components) { - this(Arrays.asList(components)); + public static ResourcePath continuous(double value, Object... components) { + return new Continuous(ImmutableList.copyOf(components), value); } /** @@ -65,15 +80,37 @@ public final class ResourcePath { * * @param components components of the path. The order represents hierarchical structure of the resource. */ - public ResourcePath(List<Object> components) { + ResourcePath(List<Object> components) { checkNotNull(components); + checkArgument(!components.isEmpty()); + + LinkedList<Object> children = new LinkedList<>(components); + this.last = children.pollLast(); + if (children.isEmpty()) { + this.parent = ROOT; + } else { + this.parent = new Discrete(children); + } + } - this.resources = ImmutableList.copyOf(components); + /** + * Creates an resource path from the specified parent and child. + * + * @param parent the parent of this resource + * @param last a child of the parent + */ + ResourcePath(Discrete parent, Object last) { + checkNotNull(parent); + checkNotNull(last); + + this.parent = parent; + this.last = last; } // for serialization private ResourcePath() { - this.resources = null; + this.parent = null; + this.last = null; } /** @@ -82,7 +119,15 @@ public final class ResourcePath { * @return the components of this resource path */ public List<Object> components() { - return resources; + LinkedList<Object> components = new LinkedList<>(); + + ResourcePath current = this; + while (current.parent().isPresent()) { + components.addFirst(current.last); + current = current.parent; + } + + return components; } /** @@ -92,21 +137,20 @@ public final class ResourcePath { * @return the parent resource path of this instance. * If there is no parent, empty instance will be returned. */ - public Optional<ResourcePath> parent() { - if (!isRoot()) { - return Optional.of(new ResourcePath(resources.subList(0, resources.size() - 1))); - } + public Optional<Discrete> parent() { + return Optional.ofNullable(parent); + } + + public ResourcePath child(Object child) { + checkState(this instanceof Discrete); - return Optional.empty(); + return new Discrete((Discrete) this, child); } - /** - * Returns true if the path represents root. - * - * @return true if the path represents root, false otherwise. - */ - public boolean isRoot() { - return resources.size() == 0; + public ResourcePath child(Object child, double value) { + checkState(this instanceof Discrete); + + return new Continuous((Discrete) this, child, value); } /** @@ -115,14 +159,13 @@ public final class ResourcePath { * @return the last component of this instance. * The return value is equal to the last object of {@code components()}. */ - public Object lastComponent() { - int last = resources.size() - 1; - return resources.get(last); + public Object last() { + return last; } @Override public int hashCode() { - return resources.hashCode(); + return Objects.hash(this.parent, this.last); } @Override @@ -134,13 +177,68 @@ public final class ResourcePath { return false; } final ResourcePath that = (ResourcePath) obj; - return Objects.equals(this.resources, that.resources); + return Objects.equals(this.parent, that.parent) + && Objects.equals(this.last, that.last); } @Override public String toString() { return MoreObjects.toStringHelper(this) - .add("resources", resources) + .add("parent", parent) + .add("last", last) .toString(); } + + /** + * Represents a resource path which specifies a resource which can be measured + * as a discrete unit. A VLAN ID and a MPLS label of a link are examples of the resource. + * <p> + * Note: This class is exposed to the public, but intended to be used in the resource API + * implementation only. It is not for resource API user. + * </p> + */ + public static final class Discrete extends ResourcePath { + private Discrete() { + super(); + } + + private Discrete(List<Object> components) { + super(components); + } + + private Discrete(Discrete parent, Object last) { + super(parent, last); + } + } + + /** + * Represents a resource path which specifies a resource which can be measured + * as continuous value. Bandwidth of a link is an example of the resource. + * <p> + * Note: This class is exposed to the public, but intended to be used in the resource API + * implementation only. It is not for resource API user. + */ + public static final class Continuous extends ResourcePath { + // Note: value is not taken into account for equality + private final double value; + + private Continuous(List<Object> components, double value) { + super(components); + this.value = value; + } + + public Continuous(Discrete parent, Object last, double value) { + super(parent, last); + this.value = value; + } + + /** + * Returns the value of the resource amount. + * + * @return the value of the resource amount + */ + public double value() { + return value; + } + } } diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java index a84927a0..5f448221 100644 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java +++ b/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java @@ -38,9 +38,9 @@ public class ResourceAllocationTest { @Test public void testEquals() { - ResourceAllocation alloc1 = new ResourceAllocation(new ResourcePath(LK1, VLAN1), IID1); - ResourceAllocation sameAsAlloc1 = new ResourceAllocation(new ResourcePath(LK1, VLAN1), IID1); - ResourceAllocation alloc2 = new ResourceAllocation(new ResourcePath(LK2, VLAN1), IID1); + ResourceAllocation alloc1 = new ResourceAllocation(ResourcePath.discrete(LK1, VLAN1), IID1); + ResourceAllocation sameAsAlloc1 = new ResourceAllocation(ResourcePath.discrete(LK1, VLAN1), IID1); + ResourceAllocation alloc2 = new ResourceAllocation(ResourcePath.discrete(LK2, VLAN1), IID1); new EqualsTester() .addEqualityGroup(alloc1, sameAsAlloc1) diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java index 4a8886a4..35dcf1ec 100644 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java +++ b/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java @@ -18,6 +18,7 @@ package org.onosproject.net.newresource; import com.google.common.testing.EqualsTester; import org.junit.Test; import org.onlab.packet.VlanId; +import org.onlab.util.Bandwidth; import org.onosproject.net.ConnectPoint; import org.onosproject.net.DeviceId; import org.onosproject.net.LinkKey; @@ -25,6 +26,7 @@ import org.onosproject.net.PortNumber; import java.util.Optional; +import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; @@ -36,37 +38,49 @@ public class ResourcePathTest { private static final ConnectPoint CP1_1 = new ConnectPoint(D1, P1); private static final ConnectPoint CP2_1 = new ConnectPoint(D2, P1); private static final VlanId VLAN1 = VlanId.vlanId((short) 100); + private static final Bandwidth BW1 = Bandwidth.gbps(2); + private static final Bandwidth BW2 = Bandwidth.gbps(1); @Test public void testEquals() { - ResourcePath resource1 = new ResourcePath(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); - ResourcePath sameAsResource1 = new ResourcePath(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); - ResourcePath resource2 = new ResourcePath(LinkKey.linkKey(CP2_1, CP1_1), VLAN1); + ResourcePath resource1 = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); + ResourcePath sameAsResource1 = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); + ResourcePath resource2 = ResourcePath.discrete(LinkKey.linkKey(CP2_1, CP1_1), VLAN1); + ResourcePath resource3 = ResourcePath.continuous(BW1.bps(), LinkKey.linkKey(CP1_1, CP2_1), BW1); + ResourcePath sameAsResource3 = ResourcePath.continuous(BW2.bps(), LinkKey.linkKey(CP1_1, CP2_1), BW1); new EqualsTester() .addEqualityGroup(resource1, sameAsResource1) .addEqualityGroup(resource2) + .addEqualityGroup(resource3, sameAsResource3) // this is intentional .testEquals(); } @Test public void testCreateWithZeroComponent() { - ResourcePath path = new ResourcePath(); + ResourcePath path = ResourcePath.discrete(); assertThat(path, is(ResourcePath.ROOT)); } @Test + public void testComponents() { + ResourcePath port = ResourcePath.discrete(D1, P1); + + assertThat(port.components(), contains(D1, P1)); + } + + @Test public void testThereIsParent() { - ResourcePath path = new ResourcePath(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); - ResourcePath parent = new ResourcePath(LinkKey.linkKey(CP1_1, CP2_1)); + ResourcePath path = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); + ResourcePath parent = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1)); assertThat(path.parent(), is(Optional.of(parent))); } @Test public void testNoParent() { - ResourcePath path = new ResourcePath(LinkKey.linkKey(CP1_1, CP2_1)); + ResourcePath path = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1)); assertThat(path.parent(), is(Optional.of(ResourcePath.ROOT))); } @@ -74,9 +88,9 @@ public class ResourcePathTest { @Test public void testBase() { LinkKey linkKey = LinkKey.linkKey(CP1_1, CP2_1); - ResourcePath path = new ResourcePath(linkKey); + ResourcePath path = ResourcePath.discrete(linkKey); - LinkKey child = (LinkKey) path.lastComponent(); + LinkKey child = (LinkKey) path.last(); assertThat(child, is(linkKey)); } } diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java index 4f612de2..02462e85 100644 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java +++ b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java @@ -30,7 +30,8 @@ import org.onlab.util.KryoNamespace; import org.onosproject.cluster.NodeId; import org.onosproject.store.Timestamp; -import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.*; +import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.PUT; +import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.REMOVE; /** * Testing version of an Eventually Consistent Map. diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java index acc5a5d5..718c7bbf 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java @@ -121,7 +121,7 @@ public class MplsPathIntentCompiler implements IntentCompiler<MplsPathIntent> { } List<ResourcePath> resources = labels.entrySet().stream() - .map(x -> new ResourcePath(linkKey(x.getKey().src(), x.getKey().src()), x.getValue())) + .map(x -> ResourcePath.discrete(linkKey(x.getKey().src(), x.getKey().src()), x.getValue())) .collect(Collectors.toList()); List<org.onosproject.net.newresource.ResourceAllocation> allocations = resourceService.allocate(intent.id(), resources); @@ -145,9 +145,9 @@ public class MplsPathIntentCompiler implements IntentCompiler<MplsPathIntent> { } private Optional<MplsLabel> findMplsLabel(LinkKey link) { - return resourceService.getAvailableResources(new ResourcePath(link)).stream() - .filter(x -> x.lastComponent() instanceof MplsLabel) - .map(x -> (MplsLabel) x.lastComponent()) + return resourceService.getAvailableResources(ResourcePath.discrete(link)).stream() + .filter(x -> x.last() instanceof MplsLabel) + .map(x -> (MplsLabel) x.last()) .findFirst(); } diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java index fce8498c..ee04aab5 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompiler.java @@ -160,8 +160,8 @@ public class OpticalCircuitIntentCompiler implements IntentCompiler<OpticalCircu log.debug("Compiling optical circuit intent between {} and {}", src, dst); // Reserve OduClt ports - ResourcePath srcPortPath = new ResourcePath(src.deviceId(), src.port()); - ResourcePath dstPortPath = new ResourcePath(dst.deviceId(), dst.port()); + ResourcePath srcPortPath = ResourcePath.discrete(src.deviceId(), src.port()); + ResourcePath dstPortPath = ResourcePath.discrete(dst.deviceId(), dst.port()); List<ResourceAllocation> allocation = resourceService.allocate(intent.id(), srcPortPath, dstPortPath); if (allocation.isEmpty()) { throw new IntentCompilationException("Unable to reserve ports for intent " + intent); @@ -312,7 +312,7 @@ public class OpticalCircuitIntentCompiler implements IntentCompiler<OpticalCircu if (ochCP != null) { OchPort ochPort = (OchPort) deviceService.getPort(ochCP.deviceId(), ochCP.port()); Optional<IntentId> intentId = - resourceService.getResourceAllocation(new ResourcePath(ochCP.deviceId(), ochCP.port())) + resourceService.getResourceAllocation(ResourcePath.discrete(ochCP.deviceId(), ochCP.port())) .map(ResourceAllocation::consumer) .filter(x -> x instanceof IntentId) .map(x -> (IntentId) x); @@ -331,7 +331,7 @@ public class OpticalCircuitIntentCompiler implements IntentCompiler<OpticalCircu } Optional<IntentId> intentId = - resourceService.getResourceAllocation(new ResourcePath(oduPort.deviceId(), port.number())) + resourceService.getResourceAllocation(ResourcePath.discrete(oduPort.deviceId(), port.number())) .map(ResourceAllocation::consumer) .filter(x -> x instanceof IntentId) .map(x -> (IntentId) x); diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java index d6725b7c..a4ed551a 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java @@ -107,8 +107,8 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical log.debug("Compiling optical connectivity intent between {} and {}", src, dst); // Reserve OCh ports - ResourcePath srcPortPath = new ResourcePath(src.deviceId(), src.port()); - ResourcePath dstPortPath = new ResourcePath(dst.deviceId(), dst.port()); + ResourcePath srcPortPath = ResourcePath.discrete(src.deviceId(), src.port()); + ResourcePath dstPortPath = ResourcePath.discrete(dst.deviceId(), dst.port()); List<org.onosproject.net.newresource.ResourceAllocation> allocation = resourceService.allocate(intent.id(), srcPortPath, dstPortPath); if (allocation.isEmpty()) { @@ -182,8 +182,8 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical IndexedLambda minLambda = findFirstLambda(lambdas); List<ResourcePath> lambdaResources = path.links().stream() - .map(x -> new ResourcePath(linkKey(x.src(), x.dst()))) - .map(x -> ResourcePath.child(x, minLambda)) + .map(x -> ResourcePath.discrete(linkKey(x.src(), x.dst()))) + .map(x -> x.child(minLambda)) .collect(Collectors.toList()); List<ResourceAllocation> allocations = resourceService.allocate(intent.id(), lambdaResources); @@ -196,10 +196,10 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical private Set<IndexedLambda> findCommonLambdasOverLinks(List<Link> links) { return links.stream() - .map(x -> new ResourcePath(linkKey(x.src(), x.dst()))) + .map(x -> ResourcePath.discrete(linkKey(x.src(), x.dst()))) .map(resourceService::getAvailableResources) - .map(x -> Iterables.filter(x, r -> r.lastComponent() instanceof IndexedLambda)) - .map(x -> Iterables.transform(x, r -> (IndexedLambda) r.lastComponent())) + .map(x -> Iterables.filter(x, r -> r.last() instanceof IndexedLambda)) + .map(x -> Iterables.transform(x, r -> (IndexedLambda) r.last())) .map(x -> (Set<IndexedLambda>) ImmutableSet.copyOf(x)) .reduce(Sets::intersection) .orElse(Collections.emptySet()); diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java index e6d92253..066dd33e 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java @@ -75,12 +75,12 @@ final class ResourceDeviceListener implements DeviceListener { } private void registerPortResource(Device device, Port port) { - ResourcePath parent = new ResourcePath(device.id()); + ResourcePath parent = ResourcePath.discrete(device.id()); executor.submit(() -> adminService.registerResources(parent, port.number())); } private void unregisterPortResource(Device device, Port port) { - ResourcePath parent = new ResourcePath(device.id()); + ResourcePath parent = ResourcePath.discrete(device.id()); executor.submit(() -> adminService.unregisterResources(parent, port.number())); } } diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceLinkListener.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceLinkListener.java index f04c78b9..68fd6612 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceLinkListener.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceLinkListener.java @@ -87,7 +87,7 @@ final class ResourceLinkListener implements LinkListener { LinkKey linkKey = LinkKey.linkKey(link); adminService.registerResources(ResourcePath.ROOT, linkKey); - ResourcePath linkPath = new ResourcePath(linkKey); + ResourcePath linkPath = ResourcePath.discrete(linkKey); // register VLAN IDs against the link if (isEnabled(link, this::isVlanEnabled)) { adminService.registerResources(linkPath, ENTIRE_VLAN_IDS); diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java index 77a32f45..1c6930bb 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceManager.java @@ -169,7 +169,7 @@ public final class ResourceManager extends AbstractListenerManager<ResourceEvent checkNotNull(children); checkArgument(!children.isEmpty()); - List<ResourcePath> resources = Lists.transform(children, x -> ResourcePath.child(parent, x)); + List<ResourcePath> resources = Lists.transform(children, parent::child); return store.register(resources); } @@ -179,7 +179,7 @@ public final class ResourceManager extends AbstractListenerManager<ResourceEvent checkNotNull(children); checkArgument(!children.isEmpty()); - List<ResourcePath> resources = Lists.transform(children, x -> ResourcePath.child(parent, x)); + List<ResourcePath> resources = Lists.transform(children, parent::child); return store.unregister(resources); } diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java index 8e87a07d..793030f2 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java @@ -312,9 +312,13 @@ public class PacketManager public void processPacket(PacketContext context) { // TODO filter packets sent to processors based on registrations for (ProcessorEntry entry : processors) { - long start = System.nanoTime(); - entry.processor().process(context); - entry.addNanos(System.nanoTime() - start); + try { + long start = System.nanoTime(); + entry.processor().process(context); + entry.addNanos(System.nanoTime() - start); + } catch (Exception e) { + log.warn("Packet processor {} threw an exception", entry.processor(), e); + } } } diff --git a/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java b/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java index 8d7452b3..eb7f2ccd 100644 --- a/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java +++ b/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java @@ -231,7 +231,7 @@ public class ObjectiveTrackerTest { @Test public void testResourceEvent() throws Exception { ResourceEvent event = new ResourceEvent(RESOURCE_ADDED, - new ResourcePath(linkKey(link("a", 1, "b", 1)))); + ResourcePath.discrete(linkKey(link("a", 1, "b", 1)))); resourceListener.event(event); assertThat( diff --git a/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MockResourceService.java b/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MockResourceService.java index 8ec09bd1..f5d3d0f3 100644 --- a/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MockResourceService.java +++ b/framework/src/onos/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MockResourceService.java @@ -90,7 +90,7 @@ class MockResourceService implements ResourceService { @Override public Collection<ResourcePath> getAvailableResources(ResourcePath parent) { - ResourcePath resource = ResourcePath.child(parent, MplsLabel.mplsLabel(10)); + ResourcePath resource = parent.child(MplsLabel.mplsLabel(10)); return ImmutableList.of(resource); } diff --git a/framework/src/onos/core/store/dist/pom.xml b/framework/src/onos/core/store/dist/pom.xml index f2ec2a71..0b8b72bc 100644 --- a/framework/src/onos/core/store/dist/pom.xml +++ b/framework/src/onos/core/store/dist/pom.xml @@ -69,6 +69,12 @@ </dependency> <dependency> + <groupId>org.onosproject</groupId> + <artifactId>onos-core-persistence</artifactId> + <version>${project.version}</version> + </dependency> + + <dependency> <groupId>org.mapdb</groupId> <artifactId>mapdb</artifactId> <version>1.0.8</version> @@ -110,5 +116,4 @@ <artifactId>onlab-thirdparty</artifactId> </dependency> </dependencies> - </project> diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java index dda820ae..fe4aa0be 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java @@ -183,21 +183,34 @@ public class GossipApplicationStore extends ApplicationArchive * they are marked to be active. */ private void loadFromDisk() { - for (String name : getApplicationNames()) { - for (int i = 0; i < MAX_LOAD_RETRIES; i++) { - try { - Application app = create(getApplicationDescription(name), false); - if (app != null && isActive(app.id().name())) { - requiredBy.put(app.id(), coreAppId); - activate(app.id(), false); - // load app permissions - } - } catch (Exception e) { - log.warn("Unable to load application {} from disk; retrying", name); - randomDelay(RETRY_DELAY_MS); // FIXME: This is a deliberate hack; fix in Drake + getApplicationNames().forEach(appName -> { + Application app = loadFromDisk(appName); + if (app != null && isActive(app.id().name())) { + activate(app.id(), false); + // TODO Load app permissions + } + }); + } + + private Application loadFromDisk(String appName) { + for (int i = 0; i < MAX_LOAD_RETRIES; i++) { + try { + // Directly return if app already exists + ApplicationId appId = getId(appName); + if (appId != null) { + return getApplication(appId); } + + ApplicationDescription appDesc = getApplicationDescription(appName); + boolean success = appDesc.requiredApps().stream() + .noneMatch(requiredApp -> loadFromDisk(requiredApp) == null); + return success ? create(appDesc, false) : null; + } catch (Exception e) { + log.warn("Unable to load application {} from disk; retrying", appName); + randomDelay(RETRY_DELAY_MS); //FIXME: This is a deliberate hack; fix in Falcon } } + return null; } @Deactivate diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/StaticClusterMetadataStore.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/StaticClusterMetadataStore.java index e4a09cef..3cd992bb 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/StaticClusterMetadataStore.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/StaticClusterMetadataStore.java @@ -7,6 +7,7 @@ import static org.slf4j.LoggerFactory.getLogger; import java.io.File; import java.io.IOException; import java.net.InetAddress; +import java.net.Inet4Address; import java.net.NetworkInterface; import java.util.Arrays; import java.util.Collection; @@ -58,6 +59,7 @@ public class StaticClusterMetadataStore private static final String ONOS_IP = "ONOS_IP"; private static final String ONOS_INTERFACE = "ONOS_INTERFACE"; + private static final String ONOS_ALLOW_IPV6 = "ONOS_ALLOW_IPV6"; private static final String DEFAULT_ONOS_INTERFACE = "eth0"; private static final String CLUSTER_METADATA_FILE = "../config/cluster.json"; private static final int DEFAULT_ONOS_PORT = 9876; @@ -214,13 +216,25 @@ public class StaticClusterMetadataStore useOnosInterface = DEFAULT_ONOS_INTERFACE; } + // Capture if they want to limit IP address selection to only IPv4 (default). + boolean allowIPv6 = (System.getenv(ONOS_ALLOW_IPV6) != null); + Function<NetworkInterface, IpAddress> ipLookup = nif -> { - for (InetAddress address : Collections.list(nif.getInetAddresses())) { - if (address.isSiteLocalAddress()) { - return IpAddress.valueOf(address); + IpAddress fallback = null; + + // nif can be null if the interface name specified doesn't exist on the node's host + if (nif != null) { + for (InetAddress address : Collections.list(nif.getInetAddresses())) { + if (address.isSiteLocalAddress() && (allowIPv6 || address instanceof Inet4Address)) { + return IpAddress.valueOf(address); + } + if (fallback == null && !address.isLoopbackAddress() && !address.isMulticastAddress() + && (allowIPv6 || address instanceof Inet4Address)) { + fallback = IpAddress.valueOf(address); + } } } - return null; + return fallback; }; try { IpAddress ip = ipLookup.apply(NetworkInterface.getByName(useOnosInterface)); @@ -228,14 +242,17 @@ public class StaticClusterMetadataStore return ip.toString(); } for (NetworkInterface nif : Collections.list(getNetworkInterfaces())) { - ip = ipLookup.apply(nif); - if (ip != null) { - return ip.toString(); + if (!nif.getName().equals(useOnosInterface)) { + ip = ipLookup.apply(nif); + if (ip != null) { + return ip.toString(); + } } } } catch (Exception e) { throw new IllegalStateException("Unable to get network interfaces", e); } + return IpAddress.valueOf(InetAddress.getLoopbackAddress()).toString(); } } diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java index 3e73d8f4..ca8eea37 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java @@ -60,6 +60,7 @@ import java.util.Map; import java.util.Objects; import java.util.Set; +import static com.google.common.base.Preconditions.checkArgument; import static org.onosproject.net.config.NetworkConfigEvent.Type.*; /** @@ -71,10 +72,12 @@ public class DistributedNetworkConfigStore extends AbstractStore<NetworkConfigEvent, NetworkConfigStoreDelegate> implements NetworkConfigStore { - private static final int MAX_BACKOFF = 10; - private final Logger log = LoggerFactory.getLogger(getClass()); + private static final int MAX_BACKOFF = 10; + private static final String INVALID_CONFIG_JSON = + "JSON node does not contain valid configuration"; + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected StorageService storageService; @@ -187,8 +190,17 @@ public class DistributedNetworkConfigStore @Override public <S, C extends Config<S>> C applyConfig(S subject, Class<C> configClass, JsonNode json) { - return createConfig(subject, configClass, - configs.putAndGet(key(subject, configClass), json).value()); + // Create the configuration and validate it. + C config = createConfig(subject, configClass, json); + checkArgument(config.isValid(), INVALID_CONFIG_JSON); + + // Insert the validated configuration and get it back. + Versioned<JsonNode> versioned = configs.putAndGet(key(subject, configClass), json); + + // Re-create the config if for some reason what we attempted to put + // was supplanted by someone else already. + return versioned.value() == json ? config : + createConfig(subject, configClass, versioned.value()); } @Override diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/AsyncCachingConsistentMap.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/AsyncCachingConsistentMap.java index 7e575b01..92db5b44 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/AsyncCachingConsistentMap.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/AsyncCachingConsistentMap.java @@ -26,8 +26,12 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; /** - * Extension of DefaultAsyncConsistentMap that provides a weaker read consistency + * Extension of {@link DefaultAsyncConsistentMap} that provides a weaker read consistency * guarantee in return for better read performance. + * <p> + * For read/write operations that are local to a node this map implementation provides + * guarantees similar to a ConsistentMap. However for read/write operations executed + * across multiple nodes this implementation only provides eventual consistency. * * @param <K> key type * @param <V> value type @@ -68,4 +72,10 @@ public class AsyncCachingConsistentMap<K, V> extends DefaultAsyncConsistentMap<K } return cache.getUnchecked(key); } + + @Override + protected void beforeUpdate(K key) { + super.beforeUpdate(key); + cache.invalidate(key); + } }
\ No newline at end of file diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseManager.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseManager.java index 3e89635a..90d81ee7 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseManager.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseManager.java @@ -55,6 +55,7 @@ import org.onosproject.cluster.ControllerNode; import org.onosproject.cluster.NodeId; import org.onosproject.core.ApplicationId; import org.onosproject.core.IdGenerator; +import org.onosproject.persistence.PersistenceService; import org.onosproject.store.cluster.messaging.ClusterCommunicationService; import org.onosproject.store.ecmap.EventuallyConsistentMapBuilderImpl; import org.onosproject.store.service.AtomicCounterBuilder; @@ -128,6 +129,9 @@ public class DatabaseManager implements StorageService, StorageAdminService { @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected ClusterCommunicationService clusterCommunicator; + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) + protected PersistenceService persistenceService; + protected String nodeIdToUri(NodeId nodeId) { ControllerNode node = clusterService.getNode(nodeId); return String.format("onos://%s:%d", node.ip(), node.tcpPort()); @@ -312,7 +316,8 @@ public class DatabaseManager implements StorageService, StorageAdminService { @Override public <K, V> EventuallyConsistentMapBuilder<K, V> eventuallyConsistentMapBuilder() { return new EventuallyConsistentMapBuilderImpl<>(clusterService, - clusterCommunicator); + clusterCommunicator, + persistenceService); } @Override diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DefaultAsyncConsistentMap.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DefaultAsyncConsistentMap.java index 0ea66861..c6d300c9 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DefaultAsyncConsistentMap.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DefaultAsyncConsistentMap.java @@ -405,6 +405,14 @@ public class DefaultAsyncConsistentMap<K, V> implements AsyncConsistentMap<K, V .thenApply(v -> v.updated()); } + /** + * Pre-update hook for performing required checks/actions before going forward with an update operation. + * @param key map key. + */ + protected void beforeUpdate(K key) { + checkIfUnmodifiable(); + } + private Map.Entry<K, Versioned<V>> mapRawEntry(Map.Entry<String, Versioned<byte[]>> e) { return Maps.immutableEntry(dK(e.getKey()), e.getValue().<V>map(serializer::decode)); } @@ -413,7 +421,7 @@ public class DefaultAsyncConsistentMap<K, V> implements AsyncConsistentMap<K, V Match<V> oldValueMatch, Match<Long> oldVersionMatch, V value) { - checkIfUnmodifiable(); + beforeUpdate(key); return database.mapUpdate(name, keyCache.getUnchecked(key), oldValueMatch.map(serializer::encode), diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapBuilderImpl.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapBuilderImpl.java index a553ffff..eb98c829 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapBuilderImpl.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapBuilderImpl.java @@ -18,6 +18,7 @@ package org.onosproject.store.ecmap; import org.onlab.util.KryoNamespace; import org.onosproject.cluster.ClusterService; import org.onosproject.cluster.NodeId; +import org.onosproject.persistence.PersistenceService; import org.onosproject.store.Timestamp; import org.onosproject.store.cluster.messaging.ClusterCommunicationService; import org.onosproject.store.service.EventuallyConsistentMap; @@ -52,6 +53,8 @@ public class EventuallyConsistentMapBuilderImpl<K, V> private TimeUnit antiEntropyTimeUnit = TimeUnit.SECONDS; private boolean convergeFaster = false; private boolean persistent = false; + private boolean persistentMap = false; + private final PersistenceService persistenceService; /** * Creates a new eventually consistent map builder. @@ -60,7 +63,9 @@ public class EventuallyConsistentMapBuilderImpl<K, V> * @param clusterCommunicator cluster communication service */ public EventuallyConsistentMapBuilderImpl(ClusterService clusterService, - ClusterCommunicationService clusterCommunicator) { + ClusterCommunicationService clusterCommunicator, + PersistenceService persistenceService) { + this.persistenceService = persistenceService; this.clusterService = checkNotNull(clusterService); this.clusterCommunicator = checkNotNull(clusterCommunicator); } @@ -133,6 +138,7 @@ public class EventuallyConsistentMapBuilderImpl<K, V> @Override public EventuallyConsistentMapBuilder<K, V> withPersistence() { + checkNotNull(this.persistenceService); persistent = true; return this; } @@ -156,6 +162,7 @@ public class EventuallyConsistentMapBuilderImpl<K, V> antiEntropyPeriod, antiEntropyTimeUnit, convergeFaster, - persistent); + persistent, + persistenceService); } } diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java index f1e0dbd4..b5ea52e0 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java @@ -28,6 +28,7 @@ import org.onlab.util.SlidingWindowCounter; import org.onosproject.cluster.ClusterService; import org.onosproject.cluster.ControllerNode; import org.onosproject.cluster.NodeId; +import org.onosproject.persistence.PersistenceService; import org.onosproject.store.Timestamp; import org.onosproject.store.cluster.messaging.ClusterCommunicationService; import org.onosproject.store.cluster.messaging.MessageSubject; @@ -37,6 +38,7 @@ import org.onosproject.store.serializers.KryoSerializer; import org.onosproject.store.service.EventuallyConsistentMap; import org.onosproject.store.service.EventuallyConsistentMapEvent; import org.onosproject.store.service.EventuallyConsistentMapListener; +import org.onosproject.store.service.Serializer; import org.onosproject.store.service.WallClockTimestamp; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -81,6 +83,7 @@ public class EventuallyConsistentMapImpl<K, V> private final ClusterCommunicationService clusterCommunicator; private final KryoSerializer serializer; private final NodeId localNodeId; + private final PersistenceService persistenceService; private final BiFunction<K, V, Timestamp> timestampProvider; @@ -116,7 +119,9 @@ public class EventuallyConsistentMapImpl<K, V> private SlidingWindowCounter counter = new SlidingWindowCounter(WINDOW_SIZE); private final boolean persistent; - private final PersistentStore<K, V> persistentStore; + + private static final String PERSISTENT_LOCAL_MAP_NAME = "itemsMap"; + /** * Creates a new eventually consistent map shared amongst multiple instances. @@ -158,9 +163,32 @@ public class EventuallyConsistentMapImpl<K, V> long antiEntropyPeriod, TimeUnit antiEntropyTimeUnit, boolean convergeFaster, - boolean persistent) { + boolean persistent, + PersistenceService persistenceService) { this.mapName = mapName; - items = Maps.newConcurrentMap(); + this.serializer = createSerializer(serializerBuilder); + this.persistenceService = persistenceService; + this.persistent = + persistent; + if (persistent) { + items = this.persistenceService.<K, MapValue<V>>persistentMapBuilder() + .withName(PERSISTENT_LOCAL_MAP_NAME) + .withSerializer(new Serializer() { + + @Override + public <T> byte[] encode(T object) { + return EventuallyConsistentMapImpl.this.serializer.encode(object); + } + + @Override + public <T> T decode(byte[] bytes) { + return EventuallyConsistentMapImpl.this.serializer.decode(bytes); + } + }) + .build(); + } else { + items = Maps.newConcurrentMap(); + } senderPending = Maps.newConcurrentMap(); destroyedMessage = mapName + ERROR_DESTROYED; @@ -168,8 +196,6 @@ public class EventuallyConsistentMapImpl<K, V> this.clusterCommunicator = clusterCommunicator; this.localNodeId = clusterService.getLocalNode().id(); - this.serializer = createSerializer(serializerBuilder); - this.timestampProvider = timestampProvider; if (peerUpdateFunction != null) { @@ -198,20 +224,6 @@ public class EventuallyConsistentMapImpl<K, V> newFixedThreadPool(8, groupedThreads("onos/ecm", mapName + "-publish-%d")); } - this.persistent = persistent; - - if (this.persistent) { - String dataDirectory = System.getProperty("karaf.data", "./data"); - String filename = dataDirectory + "/" + "mapdb-ecm-" + mapName; - - ExecutorService dbExecutor = - newFixedThreadPool(1, groupedThreads("onos/ecm", mapName + "-dbwriter")); - - persistentStore = new MapDbPersistentStore<>(filename, dbExecutor, serializer); - persistentStore.readInto(items); - } else { - this.persistentStore = null; - } if (backgroundExecutor != null) { this.backgroundExecutor = backgroundExecutor; @@ -373,15 +385,6 @@ public class EventuallyConsistentMapImpl<K, V> return existing; } }); - if (updated.get()) { - if (persistent) { - if (tombstone.isPresent()) { - persistentStore.update(key, tombstone.get()); - } else { - persistentStore.remove(key); - } - } - } return previousValue.get(); } @@ -455,6 +458,7 @@ public class EventuallyConsistentMapImpl<K, V> /** * Returns true if newValue was accepted i.e. map is updated. + * * @param key key * @param newValue proposed new value * @return true if update happened; false if map already contains a more recent value for the key @@ -473,9 +477,6 @@ public class EventuallyConsistentMapImpl<K, V> } return existing; }); - if (updated.get() && persistent) { - persistentStore.update(key, newValue); - } return updated.get(); } diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/host/impl/ECHostStore.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/host/impl/ECHostStore.java index 391a88f7..20124576 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/host/impl/ECHostStore.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/host/impl/ECHostStore.java @@ -19,6 +19,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static org.onosproject.net.DefaultAnnotations.merge; import static org.onosproject.net.host.HostEvent.Type.HOST_ADDED; +import static org.onosproject.net.host.HostEvent.Type.HOST_MOVED; import static org.onosproject.net.host.HostEvent.Type.HOST_REMOVED; import static org.onosproject.net.host.HostEvent.Type.HOST_UPDATED; import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.PUT; @@ -88,7 +89,7 @@ public class ECHostStore private EventuallyConsistentMap<HostId, DefaultHost> hosts; - private final ConcurrentHashMap<HostId, HostLocation> locations = + private final ConcurrentHashMap<HostId, DefaultHost> prevHosts = new ConcurrentHashMap<>(); private EventuallyConsistentMapListener<HostId, DefaultHost> hostLocationTracker = @@ -114,7 +115,7 @@ public class ECHostStore public void deactivate() { hosts.removeListener(hostLocationTracker); hosts.destroy(); - locations.clear(); + prevHosts.clear(); log.info("Stopped"); } @@ -253,16 +254,16 @@ public class ECHostStore public void event(EventuallyConsistentMapEvent<HostId, DefaultHost> event) { DefaultHost host = checkNotNull(event.value()); if (event.type() == PUT) { - HostLocation prevLocation = locations.put(host.id(), host.location()); - if (prevLocation == null) { + Host prevHost = prevHosts.put(host.id(), host); + if (prevHost == null) { notifyDelegate(new HostEvent(HOST_ADDED, host)); - } else if (!Objects.equals(prevLocation, host.location())) { - notifyDelegate(new HostEvent(host, prevLocation)); - } else { - notifyDelegate(new HostEvent(HOST_UPDATED, host)); + } else if (!Objects.equals(prevHost.location(), host.location())) { + notifyDelegate(new HostEvent(HOST_MOVED, host, prevHost)); + } else if (!Objects.equals(prevHost, host)) { + notifyDelegate(new HostEvent(HOST_UPDATED, host, prevHost)); } } else if (event.type() == REMOVE) { - if (locations.remove(host.id()) != null) { + if (prevHosts.remove(host.id()) != null) { notifyDelegate(new HostEvent(HOST_REMOVED, host)); } } diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java index 4d9e3cbf..0335ba5d 100644 --- a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java +++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java @@ -264,7 +264,7 @@ public class ConsistentResourceStore extends AbstractStore<ResourceEvent, Resour } return children.value().stream() - .filter(x -> x.lastComponent().getClass().equals(cls)) + .filter(x -> x.last().getClass().equals(cls)) .filter(consumerMap::containsKey) .collect(Collectors.toList()); } @@ -344,7 +344,7 @@ public class ConsistentResourceStore extends AbstractStore<ResourceEvent, Resour */ private boolean isRegistered(TransactionalMap<ResourcePath, List<ResourcePath>> map, ResourcePath resource) { // root is always regarded to be registered - if (resource.isRoot()) { + if (!resource.parent().isPresent()) { return true; } diff --git a/framework/src/onos/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java b/framework/src/onos/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java index ccf6ee71..ef8d9924 100644 --- a/framework/src/onos/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java +++ b/framework/src/onos/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java @@ -42,6 +42,7 @@ import org.onosproject.cluster.ControllerNode; import org.onosproject.cluster.DefaultControllerNode; import org.onosproject.cluster.NodeId; import org.onosproject.event.AbstractEvent; +import org.onosproject.persistence.impl.PersistenceManager; import org.onosproject.store.Timestamp; import org.onosproject.store.cluster.messaging.ClusterCommunicationService; import org.onosproject.store.cluster.messaging.ClusterCommunicationServiceAdapter; @@ -81,6 +82,7 @@ public class EventuallyConsistentMapImplTest { private EventuallyConsistentMap<String, String> ecMap; + private PersistenceManager persistenceService; private ClusterService clusterService; private ClusterCommunicationService clusterCommunicator; private SequentialClockService<String, String> clockService; @@ -136,6 +138,8 @@ public class EventuallyConsistentMapImplTest { clusterCommunicator = createMock(ClusterCommunicationService.class); + persistenceService = new PersistenceManager(); + persistenceService.activate(); // Add expectation for adding cluster message subscribers which // delegate to our ClusterCommunicationService implementation. This // allows us to get a reference to the map's internal cluster message @@ -153,11 +157,12 @@ public class EventuallyConsistentMapImplTest { .register(TestTimestamp.class); ecMap = new EventuallyConsistentMapBuilderImpl<String, String>( - clusterService, clusterCommunicator) + clusterService, clusterCommunicator, persistenceService) .withName(MAP_NAME) .withSerializer(serializer) .withTimestampProvider((k, v) -> clockService.getTimestamp(k, v)) .withCommunicationExecutor(MoreExecutors.newDirectExecutorService()) + .withPersistence() .build(); // Reset ready for tests to add their own expectations diff --git a/framework/src/onos/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java b/framework/src/onos/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java index b2199f70..6f96498f 100644 --- a/framework/src/onos/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java +++ b/framework/src/onos/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java @@ -416,6 +416,8 @@ public final class KryoNamespaces { BandwidthResourceAllocation.class, LambdaResourceAllocation.class, ResourcePath.class, + ResourcePath.Discrete.class, + ResourcePath.Continuous.class, ResourceAllocation.class, // Constraints LambdaConstraint.class, diff --git a/framework/src/onos/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java b/framework/src/onos/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java index 97ccb836..11a62d4e 100644 --- a/framework/src/onos/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java +++ b/framework/src/onos/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java @@ -373,13 +373,13 @@ public class KryoSerializerTest { @Test public void testResourcePath() { - testSerializedEquals(new ResourcePath(LinkKey.linkKey(CP1, CP2), VLAN1)); + testSerializedEquals(ResourcePath.discrete(LinkKey.linkKey(CP1, CP2), VLAN1)); } @Test public void testResourceAllocation() { testSerializedEquals(new org.onosproject.net.newresource.ResourceAllocation( - new ResourcePath(LinkKey.linkKey(CP1, CP2), VLAN1), + ResourcePath.discrete(LinkKey.linkKey(CP1, CP2), VLAN1), IntentId.valueOf(30))); } diff --git a/framework/src/onos/docs/external.xml b/framework/src/onos/docs/external.xml index 69ac0577..f2c568a6 100644 --- a/framework/src/onos/docs/external.xml +++ b/framework/src/onos/docs/external.xml @@ -49,7 +49,8 @@ <version>2.10.1</version> <configuration> <show>package</show> - <excludePackageNames>@external-excludes</excludePackageNames> + <excludePackageNames>@external-excludes + </excludePackageNames> <docfilessubdirs>true</docfilessubdirs> <doctitle>ONOS Java API (1.4.0-SNAPSHOT)</doctitle> <groups> @@ -58,7 +59,8 @@ <packages>@external-apis</packages> </group> <group> - <title>Incubator for Network Model & Services</title> + <title>Incubator for Network Model & Services + </title> <packages>@external-incubator-apis</packages> </group> <group> @@ -66,6 +68,13 @@ <packages>@utils</packages> </group> </groups> + <tags> + <tag> + <name>rsModel</name> + <placement>m</placement> + <head>Json model for REST api:</head> + </tag> + </tags> </configuration> </plugin> </plugins> diff --git a/framework/src/onos/docs/internal.xml b/framework/src/onos/docs/internal.xml index 602479eb..e0ba3607 100644 --- a/framework/src/onos/docs/internal.xml +++ b/framework/src/onos/docs/internal.xml @@ -51,14 +51,16 @@ <show>package</show> <docfilessubdirs>true</docfilessubdirs> <doctitle>ONOS Java API (1.4.0-SNAPSHOT)</doctitle> - <excludePackageNames>@internal-excludes</excludePackageNames> + <excludePackageNames>@internal-excludes + </excludePackageNames> <groups> <group> <title>Network Model & Services</title> <packages>@internal-apis</packages> </group> <group> - <title>Incubator for Network Model & Services</title> + <title>Incubator for Network Model & Services + </title> <packages>@internal-incubator-apis</packages> </group> <group> @@ -70,7 +72,9 @@ <packages>@internal-stores</packages> </group> <group> - <title>Incubator for Core Subsystems & Distributed Stores</title> + <title>Incubator for Core Subsystems & + Distributed Stores + </title> <packages>@internal-incubator</packages> </group> <group> @@ -114,10 +118,18 @@ <packages>@internal-apps</packages> </group> <group> - <title>Test Instrumentation & Applications</title> + <title>Test Instrumentation & Applications + </title> <packages>@internal-test-apps</packages> </group> </groups> + <tags> + <tag> + <name>rsModel</name> + <placement>m</placement> + <head>Json model for REST api:</head> + </tag> + </tags> </configuration> </plugin> </plugins> diff --git a/framework/src/onos/drivers/features.xml b/framework/src/onos/drivers/features.xml index a7144492..e83f93fa 100644 --- a/framework/src/onos/drivers/features.xml +++ b/framework/src/onos/drivers/features.xml @@ -24,5 +24,7 @@ <bundle>mvn:${project.groupId}/onos-ovsdb-api/${project.version}</bundle> <bundle>mvn:${project.groupId}/onos-ovsdb-rfc/${project.version}</bundle> + + <bundle>mvn:${project.groupId}/onos-netconf-api/${project.version}</bundle> </feature> </features> diff --git a/framework/src/onos/drivers/pom.xml b/framework/src/onos/drivers/pom.xml index 56a39a8e..db0a3985 100644 --- a/framework/src/onos/drivers/pom.xml +++ b/framework/src/onos/drivers/pom.xml @@ -67,6 +67,11 @@ <artifactId>easymock</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.onosproject</groupId> + <artifactId>onos-netconf-api</artifactId> + <version>${project.version}</version> + </dependency> <dependency> <groupId>org.apache.felix</groupId> diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionInterpreter.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionInterpreter.java index 082c5a6d..b8f1fd91 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionInterpreter.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionInterpreter.java @@ -38,10 +38,12 @@ public class NiciraExtensionInterpreter extends AbstractHandlerBehaviour @Override public boolean supported(ExtensionType extensionType) { - if (extensionType.equals(ExtensionType.ExtensionTypes.NICIRA_SET_TUNNEL_DST)) { + if (extensionType.equals(ExtensionType.ExtensionTypes.NICIRA_SET_TUNNEL_DST.type())) { + return true; + } + if (extensionType.equals(ExtensionType.ExtensionTypes.NICIRA_RESUBMIT.type())) { return true; } - return false; } @@ -53,6 +55,9 @@ public class NiciraExtensionInterpreter extends AbstractHandlerBehaviour return factory.actions().setField(factory.oxms().tunnelIpv4Dst( IPv4Address.of(tunnelDst.tunnelDst().toInt()))); } + if (type.equals(ExtensionType.ExtensionTypes.NICIRA_RESUBMIT.type())) { + // TODO this will be implemented later + } return null; } @@ -78,6 +83,9 @@ public class NiciraExtensionInterpreter extends AbstractHandlerBehaviour if (type.equals(ExtensionType.ExtensionTypes.NICIRA_SET_TUNNEL_DST.type())) { return new NiciraSetTunnelDst(); } + if (type.equals(ExtensionType.ExtensionTypes.NICIRA_RESUBMIT.type())) { + return new NiciraResubmit(); + } throw new UnsupportedOperationException( "Driver does not support extension type " + type.toString()); } diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbBridgeConfig.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbBridgeConfig.java index 77b48298..6451160a 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbBridgeConfig.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/ovsdb/OvsdbBridgeConfig.java @@ -54,6 +54,13 @@ public class OvsdbBridgeConfig extends AbstractHandlerBehaviour } @Override + public void addBridge(BridgeName bridgeName, String dpid, String exPortName) { + DriverHandler handler = handler(); + OvsdbClientService clientService = getOvsdbClientService(handler); + clientService.createBridge(bridgeName.name(), dpid, exPortName); + } + + @Override public boolean addBridge(BridgeName bridgeName, String dpid, List<ControllerInfo> controllers) { DriverHandler handler = handler(); OvsdbClientService clientService = getOvsdbClientService(handler); diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/OLTPipeline.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/OLTPipeline.java deleted file mode 100644 index c735af3f..00000000 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/OLTPipeline.java +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.driver.pipeline; - -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.EthType; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.PortNumber; -import org.onosproject.net.behaviour.Pipeliner; -import org.onosproject.net.behaviour.PipelinerContext; -import org.onosproject.net.device.DefaultDeviceDescription; -import org.onosproject.net.device.DeviceDescription; -import org.onosproject.net.device.DeviceProvider; -import org.onosproject.net.device.DeviceProviderRegistry; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.driver.AbstractHandlerBehaviour; -import org.onosproject.net.flow.DefaultFlowRule; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.FlowRule; -import org.onosproject.net.flow.FlowRuleOperations; -import org.onosproject.net.flow.FlowRuleOperationsContext; -import org.onosproject.net.flow.FlowRuleService; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.instructions.Instructions; -import org.onosproject.net.flowobjective.FilteringObjective; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.NextObjective; -import org.onosproject.net.flowobjective.ObjectiveError; -import org.onosproject.net.packet.PacketPriority; -import org.onosproject.net.provider.AbstractProvider; -import org.onosproject.net.provider.ProviderId; -import org.slf4j.Logger; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Pipeliner for OLT device. - */ -public class OLTPipeline extends AbstractHandlerBehaviour implements Pipeliner { - - private final Logger log = getLogger(getClass()); - - static final ProviderId PID = new ProviderId("olt", "org.onosproject.olt", true); - - static final String DEVICE = "isAccess"; - static final String OLT = "true"; - - private ServiceDirectory serviceDirectory; - private FlowRuleService flowRuleService; - private DeviceId deviceId; - private CoreService coreService; - - private ApplicationId appId; - - private DeviceProvider provider = new AnnotationProvider(); - - - @Override - public void init(DeviceId deviceId, PipelinerContext context) { - this.serviceDirectory = context.directory(); - this.deviceId = deviceId; - DeviceProviderRegistry registry = - serviceDirectory.get(DeviceProviderRegistry.class); - flowRuleService = serviceDirectory.get(FlowRuleService.class); - coreService = serviceDirectory.get(CoreService.class); - - /*try { - DeviceProviderService providerService = registry.register(provider); - providerService.deviceConnected(deviceId, - description(deviceId, DEVICE, OLT)); - } finally { - registry.unregister(provider); - }*/ - - appId = coreService.registerApplication( - "org.onosproject.driver.OLTPipeline"); - - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(EthType.EtherType.EAPOL.ethType().toShort()) - .build(); - - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .punt() - .build(); - - FlowRule flowRule = new DefaultFlowRule(deviceId, selector, treatment, - PacketPriority.CONTROL.priorityValue(), - appId, 0, true, null); - - //flowRuleService.applyFlowRules(flowRule); - } - - @Override - public void filter(FilteringObjective filter) { - throw new UnsupportedOperationException("OLT does not filter."); - } - - @Override - public void forward(ForwardingObjective fwd) { - FlowRuleOperations.Builder flowBuilder = FlowRuleOperations.builder(); - - if (fwd.flag() != ForwardingObjective.Flag.VERSATILE) { - throw new UnsupportedOperationException( - "Only VERSATILE is supported."); - } - - boolean isPunt = fwd.treatment().immediate().stream().anyMatch(i -> { - if (i instanceof Instructions.OutputInstruction) { - Instructions.OutputInstruction out = (Instructions.OutputInstruction) i; - return out.port().equals(PortNumber.CONTROLLER); - } - return false; - }); - - if (isPunt) { - return; - } - - TrafficSelector selector = fwd.selector(); - TrafficTreatment treatment = fwd.treatment(); - - FlowRule.Builder ruleBuilder = DefaultFlowRule.builder() - .forDevice(deviceId) - .withSelector(selector) - .withTreatment(treatment) - .fromApp(fwd.appId()) - .withPriority(fwd.priority()); - - if (fwd.permanent()) { - ruleBuilder.makePermanent(); - } else { - ruleBuilder.makeTemporary(fwd.timeout()); - } - - switch (fwd.op()) { - case ADD: - flowBuilder.add(ruleBuilder.build()); - break; - case REMOVE: - flowBuilder.remove(ruleBuilder.build()); - break; - default: - log.warn("Unknown operation {}", fwd.op()); - } - - flowRuleService.apply(flowBuilder.build(new FlowRuleOperationsContext() { - @Override - public void onSuccess(FlowRuleOperations ops) { - if (fwd.context().isPresent()) { - fwd.context().get().onSuccess(fwd); - } - } - - @Override - public void onError(FlowRuleOperations ops) { - if (fwd.context().isPresent()) { - fwd.context().get().onError(fwd, ObjectiveError.FLOWINSTALLATIONFAILED); - } - } - })); - } - - @Override - public void next(NextObjective nextObjective) { - throw new UnsupportedOperationException("OLT does not next hop."); - } - - /** - * Build a device description. - * - * @param deviceId a deviceId - * @param key the key of the annotation - * @param value the value for the annotation - * @return a device description - */ - private DeviceDescription description(DeviceId deviceId, String key, String value) { - DeviceService deviceService = serviceDirectory.get(DeviceService.class); - Device device = deviceService.getDevice(deviceId); - - checkNotNull(device, "Device not found in device service."); - - DefaultAnnotations.Builder builder = DefaultAnnotations.builder(); - if (value != null) { - builder.set(key, value); - } else { - builder.remove(key); - } - return new DefaultDeviceDescription(device.id().uri(), device.type(), - device.manufacturer(), device.hwVersion(), - device.swVersion(), device.serialNumber(), - device.chassisId(), builder.build()); - } - - /** - * Simple ancillary provider used to annotate device. - */ - private static final class AnnotationProvider - extends AbstractProvider implements DeviceProvider { - private AnnotationProvider() { - super(PID); - } - - @Override - public void triggerProbe(DeviceId deviceId) { - } - - @Override - public void roleChanged(DeviceId deviceId, MastershipRole newRole) { - } - - @Override - public boolean isReachable(DeviceId deviceId) { - return false; - } - } - -} diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java index 32d6b103..69d20835 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/PicaPipeline.java @@ -462,10 +462,10 @@ public class PicaPipeline extends AbstractHandlerBehaviour implements Pipeliner private void initializePipeline() { //processIpUnicastTable(true); - processACLTable(true); + processAclTable(true); } - private void processACLTable(boolean install) { + private void processAclTable(boolean install) { TrafficSelector.Builder selector; TrafficTreatment.Builder treatment; FlowRuleOperations.Builder ops = FlowRuleOperations.builder(); diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java index 23ef5f2b..bd49e688 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java @@ -15,13 +15,6 @@ */ package org.onosproject.driver.pipeline; -import static org.slf4j.LoggerFactory.getLogger; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.concurrent.ConcurrentHashMap; - import org.onlab.osgi.ServiceDirectory; import org.onlab.packet.Ethernet; import org.onlab.packet.MacAddress; @@ -57,8 +50,15 @@ import org.onosproject.net.flowobjective.ForwardingObjective; import org.onosproject.net.flowobjective.NextObjective; import org.onosproject.net.flowobjective.Objective; import org.onosproject.net.flowobjective.ObjectiveError; -import org.slf4j.Logger; import org.onosproject.store.serializers.KryoNamespaces; +import org.slf4j.Logger; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.concurrent.ConcurrentHashMap; + +import static org.slf4j.LoggerFactory.getLogger; /** * Simple 2-Table Pipeline for Software/NPU based routers. This pipeline @@ -100,7 +100,7 @@ public class SoftRouterPipeline extends AbstractHandlerBehaviour implements Pipe flowRuleService = serviceDirectory.get(FlowRuleService.class); flowObjectiveStore = context.store(); driverId = coreService.registerApplication( - "org.onosproject.driver.OVSCorsaPipeline"); + "org.onosproject.driver.SoftRouterPipeline"); filters = Collections.newSetFromMap(new ConcurrentHashMap<Filter, Boolean>()); pendingVersatiles = Collections.newSetFromMap( new ConcurrentHashMap<ForwardingObjective, Boolean>()); diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java index 31297ff4..b5541065 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTP.java @@ -25,6 +25,7 @@ import com.google.common.cache.RemovalNotification; import org.onlab.osgi.ServiceDirectory; import org.onlab.packet.Ethernet; +import org.onlab.packet.MacAddress; import org.onlab.packet.VlanId; import org.onlab.util.KryoNamespace; import org.onosproject.core.ApplicationId; @@ -54,6 +55,7 @@ import org.onosproject.net.flow.criteria.PortCriterion; import org.onosproject.net.flow.criteria.VlanIdCriterion; import org.onosproject.net.flow.instructions.Instruction; import org.onosproject.net.flow.instructions.Instructions.OutputInstruction; +import org.onosproject.net.flow.instructions.L2ModificationInstruction.ModVlanIdInstruction; import org.onosproject.net.flowobjective.FilteringObjective; import org.onosproject.net.flowobjective.FlowObjectiveStore; import org.onosproject.net.flowobjective.ForwardingObjective; @@ -94,7 +96,9 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour private static final int TABLE_TMAC = 1; private static final int TABLE_IPV4_UNICAST = 2; private static final int TABLE_MPLS = 3; + private static final int TABLE_DMAC = 4; private static final int TABLE_ACL = 5; + private static final int TABLE_SMAC = 6; /** * Set the default values. These variables will get overwritten based on the @@ -104,7 +108,9 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour protected int tmacTableId = TABLE_TMAC; protected int ipv4UnicastTableId = TABLE_IPV4_UNICAST; protected int mplsTableId = TABLE_MPLS; + protected int dstMacTableId = TABLE_DMAC; protected int aclTableId = TABLE_ACL; + protected int srcMacTableId = TABLE_SMAC; protected final Logger log = getLogger(getClass()); @@ -448,12 +454,14 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour fwd.treatment().allInstructions().get(0).type() == Instruction.Type.OUTPUT) { OutputInstruction o = (OutputInstruction) fwd.treatment().allInstructions().get(0); if (o.port() == PortNumber.CONTROLLER) { - log.warn("Punts to the controller are handled by misses in" - + " the TMAC, IP and MPLS tables."); - return Collections.emptySet(); + treatmentBuilder.punt(); + treatment = treatmentBuilder.build(); + } else { + treatment = fwd.treatment(); } + } else { + treatment = fwd.treatment(); } - treatment = fwd.treatment(); } else { log.warn("VERSATILE forwarding objective needs next objective ID " + "or treatment."); @@ -475,19 +483,52 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour return Collections.singletonList(ruleBuilder.build()); } - protected Collection<FlowRule> processSpecific(ForwardingObjective fwd) { - log.debug("Processing specific"); + private boolean isSupportedEthTypeObjective(ForwardingObjective fwd) { TrafficSelector selector = fwd.selector(); EthTypeCriterion ethType = (EthTypeCriterion) selector .getCriterion(Criterion.Type.ETH_TYPE); if ((ethType == null) || - (ethType.ethType().toShort() != Ethernet.TYPE_IPV4) && - (ethType.ethType().toShort() != Ethernet.MPLS_UNICAST)) { + ((ethType.ethType().toShort() != Ethernet.TYPE_IPV4) && + (ethType.ethType().toShort() != Ethernet.MPLS_UNICAST))) { + return false; + } + return true; + } + + private boolean isSupportedEthDstObjective(ForwardingObjective fwd) { + TrafficSelector selector = fwd.selector(); + EthCriterion ethDst = (EthCriterion) selector + .getCriterion(Criterion.Type.ETH_DST); + VlanIdCriterion vlanId = (VlanIdCriterion) selector + .getCriterion(Criterion.Type.VLAN_VID); + if (ethDst == null && vlanId == null) { + return false; + } + return true; + } + + protected Collection<FlowRule> processSpecific(ForwardingObjective fwd) { + log.debug("Processing specific"); + boolean isEthTypeObj = isSupportedEthTypeObjective(fwd); + boolean isEthDstObj = isSupportedEthDstObjective(fwd); + + if (isEthTypeObj) { + return processEthTypeSpecificObjective(fwd); + } else if (isEthDstObj) { + return processEthDstSpecificObjective(fwd); + } else { log.warn("processSpecific: Unsupported " + "forwarding objective criteraia"); fail(fwd, ObjectiveError.UNSUPPORTED); return Collections.emptySet(); } + } + + protected Collection<FlowRule> + processEthTypeSpecificObjective(ForwardingObjective fwd) { + TrafficSelector selector = fwd.selector(); + EthTypeCriterion ethType = (EthTypeCriterion) selector + .getCriterion(Criterion.Type.ETH_TYPE); TrafficSelector.Builder filteredSelectorBuilder = DefaultTrafficSelector.builder(); @@ -565,59 +606,167 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour } - protected List<FlowRule> processEthDstFilter(Criterion c, + protected Collection<FlowRule> + processEthDstSpecificObjective(ForwardingObjective fwd) { + List<FlowRule> rules = new ArrayList<>(); + + // Build filtered selector + TrafficSelector selector = fwd.selector(); + EthCriterion ethCriterion = (EthCriterion) selector + .getCriterion(Criterion.Type.ETH_DST); + VlanIdCriterion vlanIdCriterion = (VlanIdCriterion) selector + .getCriterion(Criterion.Type.VLAN_VID); + TrafficSelector.Builder filteredSelectorBuilder = + DefaultTrafficSelector.builder(); + // Do not match MacAddress for subnet broadcast entry + if (!ethCriterion.mac().equals(MacAddress.NONE)) { + filteredSelectorBuilder.matchEthDst(ethCriterion.mac()); + } + filteredSelectorBuilder.matchVlanId(vlanIdCriterion.vlanId()); + TrafficSelector filteredSelector = filteredSelectorBuilder.build(); + + // Build filtered treatment + TrafficTreatment.Builder treatmentBuilder = + DefaultTrafficTreatment.builder(); + if (fwd.treatment() != null) { + treatmentBuilder.deferred(); + fwd.treatment().allInstructions().forEach(treatmentBuilder::add); + } + if (fwd.nextId() != null) { + NextGroup next = flowObjectiveStore.getNextGroup(fwd.nextId()); + if (next != null) { + GroupKey key = appKryo.deserialize(next.data()); + Group group = groupService.getGroup(deviceId, key); + if (group != null) { + treatmentBuilder.deferred().group(group.id()); + } else { + log.warn("Group Missing"); + fail(fwd, ObjectiveError.GROUPMISSING); + return Collections.emptySet(); + } + } + } + treatmentBuilder.immediate().transition(aclTableId); + TrafficTreatment filteredTreatment = treatmentBuilder.build(); + + // Build bridging table entries + FlowRule.Builder flowRuleBuilder = DefaultFlowRule.builder(); + flowRuleBuilder.fromApp(fwd.appId()) + .withPriority(fwd.priority()) + .forDevice(deviceId) + .withSelector(filteredSelector) + .withTreatment(filteredTreatment) + .forTable(dstMacTableId); + if (fwd.permanent()) { + flowRuleBuilder.makePermanent(); + } else { + flowRuleBuilder.makeTemporary(fwd.timeout()); + } + rules.add(flowRuleBuilder.build()); + + /* + // TODO Emulate source MAC table behavior + // Do not install source MAC table entry for subnet broadcast + if (!ethCriterion.mac().equals(MacAddress.NONE)) { + // Build filtered selector + selector = fwd.selector(); + ethCriterion = (EthCriterion) selector.getCriterion(Criterion.Type.ETH_DST); + filteredSelectorBuilder = DefaultTrafficSelector.builder(); + filteredSelectorBuilder.matchEthSrc(ethCriterion.mac()); + filteredSelector = filteredSelectorBuilder.build(); + + // Build empty treatment. Apply existing instruction if match. + treatmentBuilder = DefaultTrafficTreatment.builder(); + filteredTreatment = treatmentBuilder.build(); + + // Build bridging table entries + flowRuleBuilder = DefaultFlowRule.builder(); + flowRuleBuilder.fromApp(fwd.appId()) + .withPriority(fwd.priority()) + .forDevice(deviceId) + .withSelector(filteredSelector) + .withTreatment(filteredTreatment) + .forTable(srcMacTableId) + .makePermanent(); + rules.add(flowRuleBuilder.build()); + } + */ + + return rules; + } + + protected List<FlowRule> processEthDstFilter(EthCriterion ethCriterion, + VlanIdCriterion vlanIdCriterion, FilteringObjective filt, + VlanId assignedVlan, ApplicationId applicationId) { + //handling untagged packets via assigned VLAN + if (vlanIdCriterion.vlanId() == VlanId.NONE) { + vlanIdCriterion = (VlanIdCriterion) Criteria.matchVlanId(assignedVlan); + } + + /* + * Note: CpqD switches do not handle MPLS-related operation properly + * for a packet with VLAN tag. We pop VLAN here as a workaround. + * Side effect: HostService learns redundant hosts with same MAC but + * different VLAN. No known side effect on the network reachability. + */ List<FlowRule> rules = new ArrayList<>(); - EthCriterion e = (EthCriterion) c; TrafficSelector.Builder selectorIp = DefaultTrafficSelector .builder(); TrafficTreatment.Builder treatmentIp = DefaultTrafficTreatment .builder(); - selectorIp.matchEthDst(e.mac()); + selectorIp.matchEthDst(ethCriterion.mac()); selectorIp.matchEthType(Ethernet.TYPE_IPV4); + selectorIp.matchVlanId(vlanIdCriterion.vlanId()); + treatmentIp.popVlan(); treatmentIp.transition(ipv4UnicastTableId); FlowRule ruleIp = DefaultFlowRule.builder().forDevice(deviceId) .withSelector(selectorIp.build()) .withTreatment(treatmentIp.build()) .withPriority(filt.priority()).fromApp(applicationId) .makePermanent().forTable(tmacTableId).build(); - log.debug("adding IP ETH rule for MAC: {}", e.mac()); + log.debug("adding IP ETH rule for MAC: {}", ethCriterion.mac()); rules.add(ruleIp); TrafficSelector.Builder selectorMpls = DefaultTrafficSelector .builder(); TrafficTreatment.Builder treatmentMpls = DefaultTrafficTreatment .builder(); - selectorMpls.matchEthDst(e.mac()); + selectorMpls.matchEthDst(ethCriterion.mac()); selectorMpls.matchEthType(Ethernet.MPLS_UNICAST); + selectorMpls.matchVlanId(vlanIdCriterion.vlanId()); + treatmentMpls.popVlan(); treatmentMpls.transition(mplsTableId); FlowRule ruleMpls = DefaultFlowRule.builder() .forDevice(deviceId).withSelector(selectorMpls.build()) .withTreatment(treatmentMpls.build()) .withPriority(filt.priority()).fromApp(applicationId) .makePermanent().forTable(tmacTableId).build(); - log.debug("adding MPLS ETH rule for MAC: {}", e.mac()); + log.debug("adding MPLS ETH rule for MAC: {}", ethCriterion.mac()); rules.add(ruleMpls); return rules; } - protected List<FlowRule> processVlanIdFilter(Criterion c, + protected List<FlowRule> processVlanIdFilter(VlanIdCriterion vlanIdCriterion, FilteringObjective filt, + VlanId assignedVlan, ApplicationId applicationId) { List<FlowRule> rules = new ArrayList<>(); - VlanIdCriterion v = (VlanIdCriterion) c; - log.debug("adding rule for VLAN: {}", v.vlanId()); + log.debug("adding rule for VLAN: {}", vlanIdCriterion.vlanId()); TrafficSelector.Builder selector = DefaultTrafficSelector .builder(); TrafficTreatment.Builder treatment = DefaultTrafficTreatment .builder(); PortCriterion p = (PortCriterion) filt.key(); - if (v.vlanId() != VlanId.NONE) { - selector.matchVlanId(v.vlanId()); + if (vlanIdCriterion.vlanId() != VlanId.NONE) { + selector.matchVlanId(vlanIdCriterion.vlanId()); selector.matchInPort(p.port()); treatment.deferred().popVlan(); + } else { + selector.matchInPort(p.port()); + treatment.immediate().pushVlan().setVlanId(assignedVlan); } treatment.transition(tmacTableId); FlowRule rule = DefaultFlowRule.builder().forDevice(deviceId) @@ -641,30 +790,79 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour fail(filt, ObjectiveError.UNKNOWN); return; } + + EthCriterion ethCriterion = null; + VlanIdCriterion vlanIdCriterion = null; + // convert filtering conditions for switch-intfs into flowrules FlowRuleOperations.Builder ops = FlowRuleOperations.builder(); - for (Criterion c : filt.conditions()) { - if (c.type() == Criterion.Type.ETH_DST) { - for (FlowRule rule : processEthDstFilter(c, - filt, - applicationId)) { - ops = install ? ops.add(rule) : ops.remove(rule); - } - } else if (c.type() == Criterion.Type.VLAN_VID) { - for (FlowRule rule : processVlanIdFilter(c, - filt, - applicationId)) { - ops = install ? ops.add(rule) : ops.remove(rule); - } - } else if (c.type() == Criterion.Type.IPV4_DST) { + + for (Criterion criterion : filt.conditions()) { + if (criterion.type() == Criterion.Type.ETH_DST) { + ethCriterion = (EthCriterion) criterion; + } else if (criterion.type() == Criterion.Type.VLAN_VID) { + vlanIdCriterion = (VlanIdCriterion) criterion; + } else if (criterion.type() == Criterion.Type.IPV4_DST) { log.debug("driver does not process IP filtering rules as it " + "sends all misses in the IP table to the controller"); } else { log.warn("Driver does not currently process filtering condition" - + " of type: {}", c.type()); + + " of type: {}", criterion.type()); fail(filt, ObjectiveError.UNSUPPORTED); } } + + VlanId assignedVlan = null; + if (vlanIdCriterion != null && vlanIdCriterion.vlanId() == VlanId.NONE) { + // Assign a VLAN ID to untagged packets + if (filt.meta() == null) { + log.error("Missing metadata in filtering objective required " + + "for vlan assignment in dev {}", deviceId); + fail(filt, ObjectiveError.BADPARAMS); + return; + } + for (Instruction i : filt.meta().allInstructions()) { + if (i instanceof ModVlanIdInstruction) { + assignedVlan = ((ModVlanIdInstruction) i).vlanId(); + } + } + if (assignedVlan == null) { + log.error("Driver requires an assigned vlan-id to tag incoming " + + "untagged packets. Not processing vlan filters on " + + "device {}", deviceId); + fail(filt, ObjectiveError.BADPARAMS); + return; + } + } + + if (ethCriterion == null) { + log.debug("filtering objective missing dstMac, cannot program TMAC table"); + } else { + for (FlowRule tmacRule : processEthDstFilter(ethCriterion, + vlanIdCriterion, + filt, + assignedVlan, + applicationId)) { + log.debug("adding MAC filtering rules in TMAC table: {} for dev: {}", + tmacRule, deviceId); + ops = install ? ops.add(tmacRule) : ops.remove(tmacRule); + } + } + + if (ethCriterion == null || vlanIdCriterion == null) { + log.debug("filtering objective missing dstMac or vlan, cannot program" + + "Vlan Table"); + } else { + for (FlowRule vlanRule : processVlanIdFilter(vlanIdCriterion, + filt, + assignedVlan, + applicationId)) { + log.debug("adding VLAN filtering rule in VLAN table: {} for dev: {}", + vlanRule, deviceId); + ops = install ? ops.add(vlanRule) : ops.remove(vlanRule); + } + } + // apply filtering flow rules flowRuleService.apply(ops.build(new FlowRuleOperationsContext() { @Override @@ -686,10 +884,10 @@ public class SpringOpenTTP extends AbstractHandlerBehaviour protected void setTableMissEntries() { // set all table-miss-entries populateTableMissEntry(vlanTableId, true, false, false, -1); - populateTableMissEntry(tmacTableId, true, false, false, -1); - populateTableMissEntry(ipv4UnicastTableId, false, true, true, - aclTableId); + populateTableMissEntry(tmacTableId, false, false, true, dstMacTableId); + populateTableMissEntry(ipv4UnicastTableId, false, true, true, aclTableId); populateTableMissEntry(mplsTableId, false, true, true, aclTableId); + populateTableMissEntry(dstMacTableId, false, false, true, aclTableId); populateTableMissEntry(aclTableId, false, false, false, -1); } diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java index 3267d550..91f2679c 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/pipeline/SpringOpenTTPDell.java @@ -21,6 +21,7 @@ import java.util.List; import org.onlab.packet.Ethernet; import org.onlab.packet.MacAddress; +import org.onlab.packet.VlanId; import org.onosproject.core.ApplicationId; import org.onosproject.net.behaviour.NextGroup; import org.onosproject.net.flow.DefaultFlowRule; @@ -34,6 +35,7 @@ import org.onosproject.net.flow.criteria.EthCriterion; import org.onosproject.net.flow.criteria.EthTypeCriterion; import org.onosproject.net.flow.criteria.IPCriterion; import org.onosproject.net.flow.criteria.MplsCriterion; +import org.onosproject.net.flow.criteria.VlanIdCriterion; import org.onosproject.net.flow.instructions.Instruction; import org.onosproject.net.flowobjective.FilteringObjective; import org.onosproject.net.flowobjective.ForwardingObjective; @@ -175,12 +177,13 @@ public class SpringOpenTTPDell extends SpringOpenTTP { //Dell switches need ETH_DST based match condition in all IP table entries. //So while processing the ETH_DST based filtering objective, store //the device MAC to be used locally to use it while pushing the IP rules. - protected List<FlowRule> processEthDstFilter(Criterion c, + protected List<FlowRule> processEthDstFilter(EthCriterion ethCriterion, + VlanIdCriterion vlanIdCriterion, FilteringObjective filt, + VlanId assignedVlan, ApplicationId applicationId) { // Store device termination Mac to be used in IP flow entries - EthCriterion e = (EthCriterion) c; - deviceTMac = e.mac(); + deviceTMac = ethCriterion.mac(); log.debug("For now not adding any TMAC rules " + "into Dell switches as it is ignoring"); @@ -189,8 +192,9 @@ public class SpringOpenTTPDell extends SpringOpenTTP { } @Override - protected List<FlowRule> processVlanIdFilter(Criterion c, + protected List<FlowRule> processVlanIdFilter(VlanIdCriterion vlanIdCriterion, FilteringObjective filt, + VlanId assignedVlan, ApplicationId applicationId) { log.debug("For now not adding any VLAN rules " + "into Dell switches as it is ignoring"); diff --git a/framework/src/onos/drivers/src/main/resources/onos-drivers.xml b/framework/src/onos/drivers/src/main/resources/onos-drivers.xml index ff5db296..0349e1c2 100644 --- a/framework/src/onos/drivers/src/main/resources/onos-drivers.xml +++ b/framework/src/onos/drivers/src/main/resources/onos-drivers.xml @@ -37,6 +37,13 @@ <behaviour api="org.onosproject.net.behaviour.ExtensionResolver" impl="org.onosproject.driver.extensions.NiciraExtensionInterpreter" /> </driver> + <driver name="ovs-netconf" extends="default" + manufacturer="Nicira, Inc\." hwVersion="Open vSwitch" swVersion="2\..*"> + <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver" + impl="org.onosproject.driver.handshaker.NiciraSwitchHandshaker"/> + <behaviour api="org.onosproject.net.behaviour.ControllerConfig" + impl="org.onosproject.driver.netconf.NetconfControllerConfig"/> + </driver> <driver name="ovs-corsa" extends="ovs" manufacturer="Corsa" hwVersion="emulation" swVersion="0.0.0"> <behaviour api="org.onosproject.net.behaviour.Pipeliner" @@ -78,12 +85,12 @@ <driver name="pmc-olt" extends="default" manufacturer="Big Switch Networks" hwVersion="ivs 0.5" swVersion="ivs 0.5"> <behaviour api="org.onosproject.net.behaviour.Pipeliner" - impl="org.onosproject.driver.pipeline.OLTPipeline"/> + impl="org.onosproject.driver.pipeline.OltPipeline"/> </driver> <driver name="g.fast" extends="default" manufacturer="TEST1" hwVersion="TEST2" swVersion="TEST3"> <behaviour api="org.onosproject.net.behaviour.Pipeliner" - impl="org.onosproject.driver.pipeline.OLTPipeline"/> + impl="org.onosproject.driver.pipeline.OltPipeline"/> </driver> <!-- The SoftRouter driver is meant to be used by any software/NPU based ~ switch that wishes to implement a simple 2-table router. To use this @@ -124,7 +131,7 @@ <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver" impl="org.onosproject.driver.handshaker.CalientFiberSwitchHandshaker"/> </driver> - <driver name="onosfw" extends="default" + <driver name="onosfw" extends="ovs" manufacturer="" hwVersion="" swVersion=""> <behaviour api="org.onosproject.net.behaviour.Pipeliner" impl="org.onosproject.driver.pipeline.OpenVSwitchPipeline"/> @@ -134,5 +141,8 @@ <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver" impl="org.onosproject.driver.handshaker.OFOpticalSwitch13"/> </driver> + <driver name="aos" extends="ofdpa" + manufacturer="Accton" hwVersion=".*" swVersion="1.*"> + </driver> </drivers> diff --git a/framework/src/onos/features/features.xml b/framework/src/onos/features/features.xml index 1aae0f33..7d12d7b8 100644 --- a/framework/src/onos/features/features.xml +++ b/framework/src/onos/features/features.xml @@ -106,6 +106,7 @@ <feature>onos-core</feature> <bundle>mvn:org.onosproject/onos-incubator-net/@ONOS-VERSION</bundle> <bundle>mvn:org.onosproject/onos-incubator-store/@ONOS-VERSION</bundle> + <bundle>mvn:org.onosproject/onos-incubator-rpc/@ONOS-VERSION</bundle> </feature> <feature name="onos-rest" version="@FEATURE-VERSION" diff --git a/framework/src/onos/incubator/pom.xml b/framework/src/onos/incubator/pom.xml index c94243d2..5222fe98 100644 --- a/framework/src/onos/incubator/pom.xml +++ b/framework/src/onos/incubator/pom.xml @@ -35,6 +35,7 @@ <module>api</module> <module>net</module> <module>store</module> + <module>rpc</module> </modules> <dependencies> diff --git a/framework/src/onos/netconf/api/pom.xml b/framework/src/onos/netconf/api/pom.xml deleted file mode 100644 index d93b3be3..00000000 --- a/framework/src/onos/netconf/api/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ -<?xml version="1.0"?> -<!-- - ~ Copyright 2015 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" - xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos-netconf</artifactId> - <version>1.4.0-SNAPSHOT</version> - </parent> - <artifactId>onos-netconf-api</artifactId> - <packaging>bundle</packaging> - - <description>ONOS NETCONF plugin API</description> - <dependencies> - <dependency> - <groupId>commons-pool</groupId> - <artifactId>commons-pool</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-transport</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-transport-native-epoll</artifactId> - <version>${netty4.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-netconf-rfc</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - -</project> diff --git a/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/Foo.java b/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/Foo.java deleted file mode 100644 index ff688f45..00000000 --- a/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/Foo.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.onosproject.netconf; - -/** - * Created by tom on 10/19/15. - */ -public class Foo { -} diff --git a/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/package-info.java b/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/package-info.java deleted file mode 100644 index 5562bd33..00000000 --- a/framework/src/onos/netconf/api/src/main/java/org/onosproject/netconf/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Created by ray on 10/30/15. - */ -package org.onosproject.netconf; diff --git a/framework/src/onos/netconf/ctl/pom.xml b/framework/src/onos/netconf/ctl/pom.xml deleted file mode 100644 index 56f17c90..00000000 --- a/framework/src/onos/netconf/ctl/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Copyright 2015 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos-netconf</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-netconf-ctl</artifactId> - <packaging>bundle</packaging> - - <dependencies> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-netconf-api</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-netconf-rfc</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> -</project> diff --git a/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/Foo.java b/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/Foo.java deleted file mode 100644 index e0f6b3df..00000000 --- a/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/Foo.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.onosproject.netconf.ctl; - -/** - * Created by tom on 10/19/15. - */ -public class Foo { -} diff --git a/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/package-info.java b/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/package-info.java deleted file mode 100644 index 84992bf2..00000000 --- a/framework/src/onos/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Created by ray on 10/30/15. - */ -package org.onosproject.netconf.ctl; diff --git a/framework/src/onos/netconf/pom.xml b/framework/src/onos/netconf/pom.xml deleted file mode 100644 index 7a36c227..00000000 --- a/framework/src/onos/netconf/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Copyright 2015 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos</artifactId> - <version>1.4.0-SNAPSHOT</version> - </parent> - - <artifactId>onos-netconf</artifactId> - <packaging>pom</packaging> - - <description>ONOS NETCONF southbound libraries</description> - <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-misc</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-junit</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-buffer</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-handler</artifactId> - </dependency> - <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.scr.annotations</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-scr-plugin</artifactId> - </plugin> - </plugins> - </build> - - <modules> - <module>api</module> - <module>rfc</module> - <module>ctl</module> - </modules> -</project> diff --git a/framework/src/onos/netconf/rfc/pom.xml b/framework/src/onos/netconf/rfc/pom.xml deleted file mode 100644 index fa1e06e2..00000000 --- a/framework/src/onos/netconf/rfc/pom.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Copyright 2015 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos-netconf</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-netconf-rfc</artifactId> - <packaging>bundle</packaging> - -</project> diff --git a/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/Foo.java b/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/Foo.java deleted file mode 100644 index 06963b0c..00000000 --- a/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/Foo.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.onosproject.netconf.rfc; - -/** - * Created by tom on 10/19/15. - */ -public class Foo { -} diff --git a/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/package-info.java b/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/package-info.java deleted file mode 100644 index 616a7ce5..00000000 --- a/framework/src/onos/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Created by ray on 10/30/15. - */ -package org.onosproject.netconf.rfc; diff --git a/framework/src/onos/openflow/api/pom.xml b/framework/src/onos/openflow/api/pom.xml deleted file mode 100644 index e535ac64..00000000 --- a/framework/src/onos/openflow/api/pom.xml +++ /dev/null @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Copyright 2014 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos-of</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-of-api</artifactId> - <packaging>bundle</packaging> - - <description>ONOS OpenFlow controller subsystem API</description> - - <dependencies> - <dependency> - <!-- FIXME once experimenter gets merged to upstream --> - <groupId>org.onosproject</groupId> - <artifactId>openflowj</artifactId> - <version>${openflowj.version}</version> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-api</artifactId> - </dependency> - - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <version>2.3</version> - <configuration> - <artifactSet> - <excludes> - <exclude>io.netty:netty</exclude> - <exclude>com.google.guava:guava</exclude> - <exclude>org.slf4j:slfj-api</exclude> - <exclude>ch.qos.logback:logback-core</exclude> - <exclude>ch.qos.logback:logback-classic</exclude> - <exclude>com.google.code.findbugs:annotations</exclude> - </excludes> - </artifactSet> - </configuration> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <configuration> - <instructions> - <Export-Package> - org.onosproject.openflow.*,org.projectfloodlight.openflow.* - </Export-Package> - </instructions> - </configuration> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java deleted file mode 100644 index af92a1d0..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.onlab.packet.DeserializationException; -import org.onlab.packet.Ethernet; -import org.projectfloodlight.openflow.protocol.OFPacketIn; -import org.projectfloodlight.openflow.protocol.OFPacketOut; -import org.projectfloodlight.openflow.protocol.OFVersion; -import org.projectfloodlight.openflow.protocol.action.OFAction; -import org.projectfloodlight.openflow.protocol.action.OFActionOutput; -import org.projectfloodlight.openflow.protocol.match.MatchField; -import org.projectfloodlight.openflow.types.OFBufferId; -import org.projectfloodlight.openflow.types.OFPort; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.nio.BufferUnderflowException; -import java.util.Collections; -import java.util.concurrent.atomic.AtomicBoolean; - -import static org.onosproject.security.AppGuard.checkPermission; -import static org.onosproject.security.AppPermission.Type.*; - - -/** - * Default implementation of an OpenFlowPacketContext. - */ -public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext { - - private final AtomicBoolean free = new AtomicBoolean(true); - private final AtomicBoolean isBuilt = new AtomicBoolean(false); - private final OpenFlowSwitch sw; - private final OFPacketIn pktin; - private OFPacketOut pktout = null; - - private final boolean isBuffered; - - private DefaultOpenFlowPacketContext(OpenFlowSwitch s, OFPacketIn pkt) { - this.sw = s; - this.pktin = pkt; - this.isBuffered = pktin.getBufferId() != OFBufferId.NO_BUFFER; - } - - @Override - public void send() { - checkPermission(PACKET_WRITE); - - if (block() && isBuilt.get()) { - sw.sendMsg(pktout); - } - } - - @Override - public void build(OFPort outPort) { - if (isBuilt.getAndSet(true)) { - return; - } - OFPacketOut.Builder builder = sw.factory().buildPacketOut(); - OFAction act = buildOutput(outPort.getPortNumber()); - pktout = builder.setXid(pktin.getXid()) - .setInPort(pktinInPort()) - .setBufferId(OFBufferId.NO_BUFFER) - .setData(pktin.getData()) -// .setBufferId(pktin.getBufferId()) - .setActions(Collections.singletonList(act)) - .build(); - } - - @Override - public void build(Ethernet ethFrame, OFPort outPort) { - if (isBuilt.getAndSet(true)) { - return; - } - OFPacketOut.Builder builder = sw.factory().buildPacketOut(); - OFAction act = buildOutput(outPort.getPortNumber()); - pktout = builder.setXid(pktin.getXid()) - .setBufferId(OFBufferId.NO_BUFFER) - .setInPort(pktinInPort()) - .setActions(Collections.singletonList(act)) - .setData(ethFrame.serialize()) - .build(); - } - - @Override - public Ethernet parsed() { - checkPermission(PACKET_READ); - - try { - return Ethernet.deserializer().deserialize(pktin.getData(), 0, pktin.getData().length); - } catch (BufferUnderflowException | NullPointerException | - DeserializationException e) { - Logger log = LoggerFactory.getLogger(getClass()); - log.error("packet deserialization problem : {}", e.getMessage()); - return null; - } - } - - @Override - public Dpid dpid() { - checkPermission(PACKET_READ); - - return new Dpid(sw.getId()); - } - - /** - * Creates an OpenFlow packet context based on a packet-in. - * - * @param s OpenFlow switch - * @param pkt OpenFlow packet-in - * @return the OpenFlow packet context - */ - public static OpenFlowPacketContext packetContextFromPacketIn(OpenFlowSwitch s, - OFPacketIn pkt) { - return new DefaultOpenFlowPacketContext(s, pkt); - } - - @Override - public Integer inPort() { - checkPermission(PACKET_READ); - - return pktinInPort().getPortNumber(); - } - - private OFPort pktinInPort() { - if (pktin.getVersion() == OFVersion.OF_10) { - return pktin.getInPort(); - } - return pktin.getMatch().get(MatchField.IN_PORT); - } - - @Override - public byte[] unparsed() { - checkPermission(PACKET_READ); - - return pktin.getData().clone(); - - } - - private OFActionOutput buildOutput(Integer port) { - OFActionOutput act = sw.factory().actions() - .buildOutput() - .setPort(OFPort.of(port)) - .build(); - return act; - } - - @Override - public boolean block() { - checkPermission(PACKET_WRITE); - - return free.getAndSet(false); - } - - @Override - public boolean isHandled() { - checkPermission(PACKET_READ); - - return !free.get(); - } - - @Override - public boolean isBuffered() { - checkPermission(PACKET_READ); - - return isBuffered; - } - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/Dpid.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/Dpid.java deleted file mode 100644 index 6e0f65be..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/Dpid.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.projectfloodlight.openflow.util.HexString; - -import java.net.URI; -import java.net.URISyntaxException; - -import static com.google.common.base.Preconditions.checkArgument; -import static org.onlab.util.Tools.fromHex; -import static org.onlab.util.Tools.toHex; - -/** - * The class representing a network switch DPID. - * This class is immutable. - */ -public final class Dpid { - - private static final String SCHEME = "of"; - private static final long UNKNOWN = 0; - private final long value; - - /** - * Default constructor. - */ - public Dpid() { - this.value = Dpid.UNKNOWN; - } - - /** - * Constructor from a long value. - * - * @param value the value to use. - */ - public Dpid(long value) { - this.value = value; - } - - /** - * Constructor from a string. - * - * @param value the value to use. - */ - public Dpid(String value) { - this.value = HexString.toLong(value); - } - - /** - * Get the value of the DPID. - * - * @return the value of the DPID. - */ - public long value() { - return value; - } - - /** - * Convert the DPID value to a ':' separated hexadecimal string. - * - * @return the DPID value as a ':' separated hexadecimal string. - */ - @Override - public String toString() { - return HexString.toHexString(this.value); - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof Dpid)) { - return false; - } - - Dpid otherDpid = (Dpid) other; - - return value == otherDpid.value; - } - - @Override - public int hashCode() { - return Long.hashCode(value); - } - - /** - * Returns DPID created from the given device URI. - * - * @param uri device URI - * @return dpid - */ - public static Dpid dpid(URI uri) { - checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme"); - return new Dpid(fromHex(uri.getSchemeSpecificPart())); - } - - /** - * Produces device URI from the given DPID. - * - * @param dpid device dpid - * @return device URI - */ - public static URI uri(Dpid dpid) { - return uri(dpid.value); - } - - /** - * Produces device URI from the given DPID long. - * - * @param value device dpid as long - * @return device URI - */ - public static URI uri(long value) { - try { - return new URI(SCHEME, toHex(value), null); - } catch (URISyntaxException e) { - return null; - } - } - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionInterpreter.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionInterpreter.java deleted file mode 100644 index 44b121ac..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionInterpreter.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.openflow.controller; - -import com.google.common.annotations.Beta; -import org.onosproject.net.driver.HandlerBehaviour; -import org.onosproject.net.flow.instructions.ExtensionInstruction; -import org.onosproject.net.flow.instructions.ExtensionType; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.action.OFAction; - -/** - * Interprets extension instructions and converts them to/from OpenFlow objects. - */ -@Beta -public interface ExtensionInterpreter extends HandlerBehaviour { - - /** - * Returns true if the given extension instruction is supported by this - * driver. - * - * @param extensionType extension instruction type - * @return true if the instruction is supported, otherwise false - */ - boolean supported(ExtensionType extensionType); - - /** - * Maps an extension instruction to an OpenFlow action. - * - * @param factory OpenFlow factory - * @param extensionInstruction extension instruction - * @return OpenFlow action - */ - OFAction mapInstruction(OFFactory factory, ExtensionInstruction extensionInstruction); - - /** - * Maps an OpenFlow action to an extension instruction. - * - * @param action OpenFlow action - * @return extension instruction - */ - ExtensionInstruction mapAction(OFAction action); - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java deleted file mode 100644 index 2c68fa0b..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.projectfloodlight.openflow.protocol.OFMessage; - -/** - * Abstraction of an OpenFlow controller. Serves as a one stop - * shop for obtaining OpenFlow devices and (un)register listeners - * on OpenFlow events - */ -public interface OpenFlowController { - - /** - * Returns all switches known to this OF controller. - * @return Iterable of dpid elements - */ - Iterable<OpenFlowSwitch> getSwitches(); - - /** - * Returns all master switches known to this OF controller. - * @return Iterable of dpid elements - */ - Iterable<OpenFlowSwitch> getMasterSwitches(); - - /** - * Returns all equal switches known to this OF controller. - * @return Iterable of dpid elements - */ - Iterable<OpenFlowSwitch> getEqualSwitches(); - - - /** - * Returns the actual switch for the given Dpid. - * @param dpid the switch to fetch - * @return the interface to this switch - */ - OpenFlowSwitch getSwitch(Dpid dpid); - - /** - * Returns the actual master switch for the given Dpid, if one exists. - * @param dpid the switch to fetch - * @return the interface to this switch - */ - OpenFlowSwitch getMasterSwitch(Dpid dpid); - - /** - * Returns the actual equal switch for the given Dpid, if one exists. - * @param dpid the switch to fetch - * @return the interface to this switch - */ - OpenFlowSwitch getEqualSwitch(Dpid dpid); - - /** - * Register a listener for meta events that occur to OF - * devices. - * @param listener the listener to notify - */ - void addListener(OpenFlowSwitchListener listener); - - /** - * Unregister a listener. - * - * @param listener the listener to unregister - */ - void removeListener(OpenFlowSwitchListener listener); - - /** - * Register a listener for packet events. - * @param priority the importance of this listener, lower values are more important - * @param listener the listener to notify - */ - void addPacketListener(int priority, PacketListener listener); - - /** - * Unregister a listener. - * - * @param listener the listener to unregister - */ - void removePacketListener(PacketListener listener); - - /** - * Register a listener for OF msg events. - * - * @param listener the listener to notify - */ - void addEventListener(OpenFlowEventListener listener); - - /** - * Unregister a listener. - * - * @param listener the listener to unregister - */ - void removeEventListener(OpenFlowEventListener listener); - - /** - * Send a message to a particular switch. - * @param dpid the switch to send to. - * @param msg the message to send - */ - void write(Dpid dpid, OFMessage msg); - - /** - * Process a message and notify the appropriate listeners. - * - * @param dpid the dpid the message arrived on - * @param msg the message to process. - */ - void processPacket(Dpid dpid, OFMessage msg); - - /** - * Sets the role for a given switch. - * @param role the desired role - * @param dpid the switch to set the role for. - */ - void setRole(Dpid dpid, RoleState role); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java deleted file mode 100644 index 5deccf5e..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.projectfloodlight.openflow.protocol.OFMessage; - - -/** - * Notifies providers about openflow msg events. - */ -public interface OpenFlowEventListener { - - /** - * Handles the message event. - * - * @param dpid switch data path identifier - * @param msg the message - */ - void handleMessage(Dpid dpid, OFMessage msg); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowOpticalSwitch.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowOpticalSwitch.java deleted file mode 100644 index af678d63..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowOpticalSwitch.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -/** - * A marker interface for optical switches, which require the ability to pass - * port information to a Device provider. - */ -public interface OpenFlowOpticalSwitch extends OpenFlowSwitch, WithTypedPorts { -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java deleted file mode 100644 index 740d89d0..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.onlab.packet.Ethernet; -import org.projectfloodlight.openflow.types.OFPort; - -/** - * A representation of a packet context which allows any provider - * to view a packet in event, but may block the response to the - * event if blocked has been called. This packet context can be used - * to react to the packet in event with a packet out. - */ -public interface OpenFlowPacketContext { - - /** - * Blocks further responses (ie. send() calls) on this - * packet in event. - * @return true if blocks - */ - boolean block(); - - /** - * Checks whether the packet has been handled. - * @return true if handled, false otherwise. - */ - boolean isHandled(); - - /** - * Provided build has been called send the packet - * out the switch it came in on. - */ - void send(); - - /** - * Build the packet out in response to this packet in event. - * @param outPort the out port to send to packet out of. - */ - void build(OFPort outPort); - - /** - * Build the packet out in response to this packet in event. - * @param ethFrame the actual packet to send out. - * @param outPort the out port to send to packet out of. - */ - void build(Ethernet ethFrame, OFPort outPort); - - /** - * Provided a handle onto the parsed payload. - * @return the parsed form of the payload. - */ - Ethernet parsed(); - - /** - * Provide an unparsed copy of the data. - * @return the unparsed form of the payload. - */ - byte[] unparsed(); - - /** - * Provide the dpid of the switch where the packet in arrived. - * @return the dpid of the switch. - */ - Dpid dpid(); - - /** - * Provide the port on which the packet arrived. - * @return the port - */ - Integer inPort(); - - /** - * Indicates that this packet is buffered at the switch. - * @return buffer indication - */ - boolean isBuffered(); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java deleted file mode 100644 index 51a2ce42..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.onosproject.net.Device; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFPortDesc; - -import java.util.List; - -/** - * Represents to provider facing side of a switch. - */ -public interface OpenFlowSwitch { - - /** - * Writes the message to the driver. - * - * Note: - * Calling {@link #sendMsg(OFMessage)} does NOT guarantee the messages to be - * transmitted on the wire in order, especially during role transition. - * The messages may be reordered at the switch side. - * - * Calling {@link #sendMsg(List)} guarantee the messages inside the list - * to be transmitted on the wire in order. - * - * @param msg the message to write - */ - void sendMsg(OFMessage msg); - - /** - * Writes the OFMessage list to the driver. - * - * @param msgs the messages to be written - */ - void sendMsg(List<OFMessage> msgs); - - /** - * Handle a message from the switch. - * @param fromSwitch the message to handle - */ - void handleMessage(OFMessage fromSwitch); - - /** - * Sets the role for this switch. - * @param role the role to set. - */ - void setRole(RoleState role); - - /** - * Fetch the role for this switch. - * @return the role. - */ - RoleState getRole(); - - /** - * Fetches the ports of this switch. - * @return unmodifiable list of the ports. - */ - List<OFPortDesc> getPorts(); - - /** - * Provides the factory for this OF version. - * @return OF version specific factory. - */ - OFFactory factory(); - - /** - * Gets a string version of the ID for this switch. - * - * @return string version of the ID - */ - String getStringId(); - - /** - * Gets the datapathId of the switch. - * - * @return the switch dpid in long format - */ - long getId(); - - /** - * fetch the manufacturer description. - * @return the description - */ - String manufacturerDescription(); - - /** - * fetch the datapath description. - * @return the description - */ - String datapathDescription(); - - /** - * fetch the hardware description. - * @return the description - */ - String hardwareDescription(); - - /** - * fetch the software description. - * @return the description - */ - String softwareDescription(); - - /** - * fetch the serial number. - * @return the serial - */ - String serialNumber(); - - /** - * Checks if the switch is still connected. - * - * @return whether the switch is still connected - */ - boolean isConnected(); - - /** - * Disconnects the switch by closing the TCP connection. Results in a call - * to the channel handler's channelDisconnected method for cleanup - */ - void disconnectSwitch(); - - /** - * Notifies the controller that the device has responded to a set-role request. - * - * @param requested the role requested by the controller - * @param response the role set at the device - */ - void returnRoleReply(RoleState requested, RoleState response); - - /** - * Returns the switch device type. - * - * @return device type - */ - Device.Type deviceType(); - - /** - * Identifies the channel used to communicate with the switch. - * - * @return string representation of the connection to the device - */ - String channelId(); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java deleted file mode 100644 index 2da41335..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.projectfloodlight.openflow.protocol.OFPortStatus; - -/** - * Allows for providers interested in Switch events to be notified. - */ -public interface OpenFlowSwitchListener { - - /** - * Notify that the switch was added. - * @param dpid the switch where the event occurred - */ - void switchAdded(Dpid dpid); - - /** - * Notify that the switch was removed. - * @param dpid the switch where the event occurred. - */ - void switchRemoved(Dpid dpid); - - /** - * Notify that the switch has changed in some way. - * @param dpid the switch that changed - */ - void switchChanged(Dpid dpid); - - /** - * Notify that a port has changed. - * @param dpid the switch on which the change happened. - * @param status the new state of the port. - */ - void portChanged(Dpid dpid, OFPortStatus status); - - /** - * Notify that a role imposed on a switch failed to take hold. - * - * @param dpid the switch that failed role assertion - * @param requested the role controller requested - * @param response role reply from the switch - */ - void receivedRoleReply(Dpid dpid, RoleState requested, RoleState response); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java deleted file mode 100644 index 817a6cdf..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -/** - * Notifies providers about Packet in events. - */ -public interface PacketListener { - - /** - * Handles the packet. - * - * @param pktCtx the packet context - */ - void handlePacket(OpenFlowPacketContext pktCtx); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PortDescPropertyType.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PortDescPropertyType.java deleted file mode 100644 index 3a0f1a0d..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/PortDescPropertyType.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -/** - * Port description property types (OFPPDPT enums) in OF 1.3 <. - */ -public enum PortDescPropertyType { - ETHERNET(0), /* Ethernet port */ - OPTICAL(1), /* Optical port */ - OPTICAL_TRANSPORT(2), /* OF1.3 Optical transport extension */ - PIPELINE_INPUT(2), /* Ingress pipeline */ - PIPELINE_OUTPUT(3), /* Egress pipeline */ - RECIRCULATE(4), /* Recirculation */ - EXPERIMENTER(0xffff); /* Experimenter-implemented */ - - private final int value; - - PortDescPropertyType(int v) { - value = v; - } - - public int valueOf() { - return value; - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/RoleState.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/RoleState.java deleted file mode 100644 index b8304f39..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/RoleState.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.projectfloodlight.openflow.protocol.OFControllerRole; - -/** - * The role of the controller as it pertains to a particular switch. - * Note that this definition of the role enum is different from the - * OF1.3 definition. It is maintained here to be backward compatible to - * earlier versions of the controller code. This enum is translated - * to the OF1.3 enum, before role messages are sent to the switch. - * See sendRoleRequestMessage method in OFSwitchImpl - */ -public enum RoleState { - EQUAL(OFControllerRole.ROLE_EQUAL), - MASTER(OFControllerRole.ROLE_MASTER), - SLAVE(OFControllerRole.ROLE_SLAVE); - - private RoleState(OFControllerRole nxRole) { - nxRole.ordinal(); - } - -} - - - diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ThirdPartyMessage.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ThirdPartyMessage.java deleted file mode 100644 index 59ef33cf..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/ThirdPartyMessage.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFType; -import org.projectfloodlight.openflow.protocol.OFVersion; - -import com.google.common.hash.PrimitiveSink; -/** - * Used to support for the third party privacy flow rule. - * it implements OFMessage interface to use exist adapter API. - */ -public class ThirdPartyMessage implements OFMessage { - - private final byte[] payLoad; //privacy flow rule - - public ThirdPartyMessage(byte[] payLoad) { - this.payLoad = payLoad; - } - - public byte[] payLoad() { - return payLoad; - } - - @Override - public void putTo(PrimitiveSink sink) { - // Do nothing here for now. - } - - @Override - public OFVersion getVersion() { - // Do nothing here for now. - return null; - } - - @Override - public OFType getType() { - // Do nothing here for now. - return null; - } - - @Override - public long getXid() { - // Do nothing here for now. - return 0; - } - - @Override - public void writeTo(ChannelBuffer channelBuffer) { - // Do nothing here for now. - } - - @Override - public Builder createBuilder() { - // Do nothing here for now. - return null; - } - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/WithTypedPorts.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/WithTypedPorts.java deleted file mode 100644 index 8b82b4a7..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/WithTypedPorts.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import java.util.List; -import java.util.Set; - -import org.projectfloodlight.openflow.protocol.OFObject; - -/** - * An interface implemented by OpenFlow devices that enables providers to - * retrieve ports based on port property. - */ -public interface WithTypedPorts { - - /** - * Return a list of interfaces (ports) of the type associated with this - * OpenFlow switch. - * - * @param type The port description property type of requested ports - * @return A potentially empty list of ports. - */ - List<? extends OFObject> getPortsOf(PortDescPropertyType type); - - /** - * Returns the port property types supported by the driver implementing this - * interface. - * - * @return A set of port property types - */ - Set<PortDescPropertyType> getPortTypes(); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java deleted file mode 100644 index 2c19837e..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.openflow.controller.driver; - -import org.jboss.netty.channel.Channel; -import org.onlab.packet.IpAddress; -import org.onosproject.net.Device; -import org.onosproject.net.driver.AbstractHandlerBehaviour; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.RoleState; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFExperimenter; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.OFFeaturesReply; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFNiciraControllerRoleRequest; -import org.projectfloodlight.openflow.protocol.OFPortDesc; -import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFPortStatus; -import org.projectfloodlight.openflow.protocol.OFRoleReply; -import org.projectfloodlight.openflow.protocol.OFRoleRequest; -import org.projectfloodlight.openflow.protocol.OFVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; - -/** - * An abstract representation of an OpenFlow switch. Can be extended by others - * to serve as a base for their vendor specific representation of a switch. - */ -public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour - implements OpenFlowSwitchDriver { - - protected final Logger log = LoggerFactory.getLogger(getClass()); - - private Channel channel; - protected String channelId; - - private boolean connected; - protected boolean startDriverHandshakeCalled = false; - private Dpid dpid; - private OpenFlowAgent agent; - private final AtomicInteger xidCounter = new AtomicInteger(0); - - private OFVersion ofVersion; - - protected List<OFPortDescStatsReply> ports = new ArrayList<>(); - - protected boolean tableFull; - - private RoleHandler roleMan; - - protected RoleState role; - - protected OFFeaturesReply features; - protected OFDescStatsReply desc; - - List<OFMessage> messagesPendingMastership; - - @Override - public void init(Dpid dpid, OFDescStatsReply desc, OFVersion ofv) { - this.dpid = dpid; - this.desc = desc; - this.ofVersion = ofv; - } - - //************************ - // Channel related - //************************ - - @Override - public final void disconnectSwitch() { - this.channel.close(); - } - - @Override - public void sendMsg(OFMessage msg) { - this.sendMsg(Collections.singletonList(msg)); - } - - @Override - public final void sendMsg(List<OFMessage> msgs) { - if (role == RoleState.MASTER && channel.isConnected()) { - channel.write(msgs); - } else if (messagesPendingMastership != null) { - messagesPendingMastership.addAll(msgs); - log.debug("Enqueue message for switch {}. queue size after is {}", - dpid, messagesPendingMastership.size()); - } else { - log.warn("Dropping message for switch {} (role: {}, connected: {}): {}", - dpid, role, channel.isConnected(), msgs); - } - } - - @Override - public final void sendRoleRequest(OFMessage msg) { - if (msg instanceof OFRoleRequest || - msg instanceof OFNiciraControllerRoleRequest) { - channel.write(Collections.singletonList(msg)); - return; - } - throw new IllegalArgumentException("Someone is trying to send " + - "a non role request message"); - } - - @Override - public final void sendHandshakeMessage(OFMessage message) { - if (!this.isDriverHandshakeComplete()) { - channel.write(Collections.singletonList(message)); - } - } - - @Override - public final boolean isConnected() { - return this.connected; - } - - @Override - public final void setConnected(boolean connected) { - this.connected = connected; - } - - @Override - public final void setChannel(Channel channel) { - this.channel = channel; - final SocketAddress address = channel.getRemoteAddress(); - if (address instanceof InetSocketAddress) { - final InetSocketAddress inetAddress = (InetSocketAddress) address; - final IpAddress ipAddress = IpAddress.valueOf(inetAddress.getAddress()); - if (ipAddress.isIp4()) { - channelId = ipAddress.toString() + ':' + inetAddress.getPort(); - } else { - channelId = '[' + ipAddress.toString() + "]:" + inetAddress.getPort(); - } - } - } - - @Override - public String channelId() { - return channelId; - } - - //************************ - // Switch features related - //************************ - - @Override - public final long getId() { - return this.dpid.value(); - } - - @Override - public final String getStringId() { - return this.dpid.toString(); - } - - @Override - public final void setOFVersion(OFVersion ofV) { - this.ofVersion = ofV; - } - - @Override - public void setTableFull(boolean full) { - this.tableFull = full; - } - - @Override - public void setFeaturesReply(OFFeaturesReply featuresReply) { - this.features = featuresReply; - } - - @Override - public abstract Boolean supportNxRole(); - - //************************ - // Message handling - //************************ - /** - * Handle the message coming from the dataplane. - * - * @param m the actual message - */ - @Override - public final void handleMessage(OFMessage m) { - if (this.role == RoleState.MASTER || m instanceof OFPortStatus) { - this.agent.processMessage(dpid, m); - } - } - - @Override - public RoleState getRole() { - return role; - } - - @Override - public final boolean connectSwitch() { - return this.agent.addConnectedSwitch(dpid, this); - } - - @Override - public final boolean activateMasterSwitch() { - return this.agent.addActivatedMasterSwitch(dpid, this); - } - - @Override - public final boolean activateEqualSwitch() { - return this.agent.addActivatedEqualSwitch(dpid, this); - } - - @Override - public final void transitionToEqualSwitch() { - this.agent.transitionToEqualSwitch(dpid); - } - - @Override - public final void transitionToMasterSwitch() { - this.agent.transitionToMasterSwitch(dpid); - if (messagesPendingMastership != null) { - this.sendMsg(messagesPendingMastership); - log.debug("Sending {} pending messages to switch {}", - messagesPendingMastership.size(), dpid); - messagesPendingMastership = null; - } - } - - @Override - public final void removeConnectedSwitch() { - this.agent.removeConnectedSwitch(dpid); - } - - @Override - public OFFactory factory() { - return OFFactories.getFactory(ofVersion); - } - - @Override - public void setPortDescReply(OFPortDescStatsReply portDescReply) { - this.ports.add(portDescReply); - } - - @Override - public void setPortDescReplies(List<OFPortDescStatsReply> portDescReplies) { - this.ports.addAll(portDescReplies); - } - - @Override - public void returnRoleReply(RoleState requested, RoleState response) { - this.agent.returnRoleReply(dpid, requested, response); - } - - @Override - public abstract void startDriverHandshake(); - - @Override - public abstract boolean isDriverHandshakeComplete(); - - @Override - public abstract void processDriverHandshakeMessage(OFMessage m); - - - // Role Handling - - @Override - public void setRole(RoleState role) { - try { - if (this.roleMan.sendRoleRequest(role, RoleRecvStatus.MATCHED_SET_ROLE)) { - log.debug("Sending role {} to switch {}", role, getStringId()); - if (role == RoleState.SLAVE || role == RoleState.EQUAL) { - this.role = role; - } else { - if (messagesPendingMastership == null) { - log.debug("Initializing new queue for switch {}", dpid); - messagesPendingMastership = new ArrayList<>(); - } - } - } else { - this.role = role; - } - } catch (IOException e) { - log.error("Unable to write to switch {}.", this.dpid); - } - } - - @Override - public void reassertRole() { - if (this.getRole() == RoleState.MASTER) { - log.warn("Received permission error from switch {} while " + - "being master. Reasserting master role.", - this.getStringId()); - this.setRole(RoleState.MASTER); - } - } - - - - @Override - public void handleRole(OFMessage m) throws SwitchStateException { - RoleReplyInfo rri = roleMan.extractOFRoleReply((OFRoleReply) m); - RoleRecvStatus rrs = roleMan.deliverRoleReply(rri); - if (rrs == RoleRecvStatus.MATCHED_SET_ROLE) { - if (rri.getRole() == RoleState.MASTER) { - this.role = rri.getRole(); - this.transitionToMasterSwitch(); - } else if (rri.getRole() == RoleState.EQUAL || - rri.getRole() == RoleState.SLAVE) { - this.transitionToEqualSwitch(); - } - } else { - log.warn("Failed to set role for {}", this.getStringId()); - } - } - - @Override - public void handleNiciraRole(OFMessage m) throws SwitchStateException { - RoleState r = this.roleMan.extractNiciraRoleReply((OFExperimenter) m); - if (r == null) { - // The message wasn't really a Nicira role reply. We just - // dispatch it to the OFMessage listeners in this case. - this.handleMessage(m); - return; - } - - RoleRecvStatus rrs = this.roleMan.deliverRoleReply( - new RoleReplyInfo(r, null, m.getXid())); - if (rrs == RoleRecvStatus.MATCHED_SET_ROLE) { - if (r == RoleState.MASTER) { - this.role = r; - this.transitionToMasterSwitch(); - } else if (r == RoleState.EQUAL || - r == RoleState.SLAVE) { - this.transitionToEqualSwitch(); - } - } else { - this.disconnectSwitch(); - } - } - - @Override - public boolean handleRoleError(OFErrorMsg error) { - try { - return RoleRecvStatus.OTHER_EXPECTATION != this.roleMan.deliverError(error); - } catch (SwitchStateException e) { - this.disconnectSwitch(); - } - return true; - } - - - - @Override - public final void setAgent(OpenFlowAgent ag) { - if (this.agent == null) { - this.agent = ag; - } - } - - @Override - public final void setRoleHandler(RoleHandler roleHandler) { - if (this.roleMan == null) { - this.roleMan = roleHandler; - } - } - - @Override - public void setSwitchDescription(OFDescStatsReply d) { - this.desc = d; - } - - @Override - public int getNextTransactionId() { - return this.xidCounter.getAndIncrement(); - } - - @Override - public List<OFPortDesc> getPorts() { - return this.ports.stream() - .flatMap((portReply) -> (portReply.getEntries().stream())) - .collect(Collectors.toList()); - //return Collections.unmodifiableList(ports.getEntries()); - } - - @Override - public String manufacturerDescription() { - return this.desc.getMfrDesc(); - } - - - @Override - public String datapathDescription() { - return this.desc.getDpDesc(); - } - - - @Override - public String hardwareDescription() { - return this.desc.getHwDesc(); - } - - @Override - public String softwareDescription() { - return this.desc.getSwDesc(); - } - - @Override - public String serialNumber() { - return this.desc.getSerialNum(); - } - - - @Override - public Device.Type deviceType() { - return Device.Type.SWITCH; - } - - - @Override - public String toString() { - return this.getClass().getName() + " [" + ((channel != null) - ? channel.getRemoteAddress() : "?") - + " DPID[" + ((getStringId() != null) ? getStringId() : "?") + "]]"; - } - - - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowAgent.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowAgent.java deleted file mode 100644 index ad6dede1..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowAgent.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.driver; - -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.OpenFlowSwitch; -import org.onosproject.openflow.controller.RoleState; -import org.projectfloodlight.openflow.protocol.OFMessage; - -/** - * Responsible for keeping track of the current set of switches - * connected to the system. As well as whether they are in Master - * role or not. - * - */ -public interface OpenFlowAgent { - - /** - * Add a switch that has just connected to the system. - * @param dpid the dpid to add - * @param sw the actual switch object. - * @return true if added, false otherwise. - */ - boolean addConnectedSwitch(Dpid dpid, OpenFlowSwitch sw); - - /** - * Checks if the activation for this switch is valid. - * @param dpid the dpid to check - * @return true if valid, false otherwise - */ - boolean validActivation(Dpid dpid); - - /** - * Called when a switch is activated, with this controller's role as MASTER. - * @param dpid the dpid to add. - * @param sw the actual switch - * @return true if added, false otherwise. - */ - boolean addActivatedMasterSwitch(Dpid dpid, OpenFlowSwitch sw); - - /** - * Called when a switch is activated, with this controller's role as EQUAL. - * @param dpid the dpid to add. - * @param sw the actual switch - * @return true if added, false otherwise. - */ - boolean addActivatedEqualSwitch(Dpid dpid, OpenFlowSwitch sw); - - /** - * Called when this controller's role for a switch transitions from equal - * to master. For 1.0 switches, we internally refer to the role 'slave' as - * 'equal' - so this transition is equivalent to 'addActivatedMasterSwitch'. - * @param dpid the dpid to transistion. - */ - void transitionToMasterSwitch(Dpid dpid); - - /** - * Called when this controller's role for a switch transitions to equal. - * For 1.0 switches, we internally refer to the role 'slave' as - * 'equal'. - * @param dpid the dpid to transistion. - */ - void transitionToEqualSwitch(Dpid dpid); - - /** - * Clear all state in controller switch maps for a switch that has - * disconnected from the local controller. Also release control for - * that switch from the global repository. Notify switch listeners. - * @param dpid the dpid to remove. - */ - void removeConnectedSwitch(Dpid dpid); - - /** - * Process a message coming from a switch. - * - * @param dpid the dpid the message came on. - * @param m the message to process - */ - void processMessage(Dpid dpid, OFMessage m); - - /** - * Notifies the controller that role assertion has failed. - * - * @param dpid the switch that failed role assertion - * @param requested the role controller requested - * @param response role reply from the switch - */ - void returnRoleReply(Dpid dpid, RoleState requested, RoleState response); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriver.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriver.java deleted file mode 100644 index b259388c..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriver.java +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.driver; - -import org.jboss.netty.channel.Channel; -import org.onosproject.net.driver.HandlerBehaviour; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.OpenFlowSwitch; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFFeaturesReply; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFVersion; - -import java.util.List; - -/** - * Represents the driver side of an OpenFlow switch. - * This interface should never be exposed to consumers. - * - */ -public interface OpenFlowSwitchDriver extends OpenFlowSwitch, HandlerBehaviour { - - /** - * Sets the OpenFlow agent to be used. This method - * can only be called once. - * @param agent the agent to set. - */ - void setAgent(OpenFlowAgent agent); - - /** - * Sets the Role handler object. - * This method can only be called once. - * @param roleHandler the roleHandler class - */ - void setRoleHandler(RoleHandler roleHandler); - - /** - * Reasserts this controllers role to the switch. - * Useful in cases where the switch no longer agrees - * that this controller has the role it claims. - */ - void reassertRole(); - - /** - * Handle the situation where the role request triggers an error. - * @param error the error to handle. - * @return true if handled, false if not. - */ - boolean handleRoleError(OFErrorMsg error); - - /** - * If this driver know of Nicira style role messages, these should - * be handled here. - * @param m the role message to handle. - * @throws SwitchStateException if the message received was - * not a nicira role or was malformed. - */ - void handleNiciraRole(OFMessage m) throws SwitchStateException; - - /** - * Handle OF 1.x (where x > 0) role messages. - * @param m the role message to handle - * @throws SwitchStateException if the message received was - * not a nicira role or was malformed. - */ - void handleRole(OFMessage m) throws SwitchStateException; - - /** - * Announce to the OpenFlow agent that this switch has connected. - * @return true if successful, false if duplicate switch. - */ - boolean connectSwitch(); - - /** - * Activate this MASTER switch-controller relationship in the OF agent. - * @return true is successful, false is switch has not - * connected or is unknown to the system. - */ - boolean activateMasterSwitch(); - - /** - * Activate this EQUAL switch-controller relationship in the OF agent. - * @return true is successful, false is switch has not - * connected or is unknown to the system. - */ - boolean activateEqualSwitch(); - - /** - * Transition this switch-controller relationship to an EQUAL state. - */ - void transitionToEqualSwitch(); - - /** - * Transition this switch-controller relationship to an Master state. - */ - void transitionToMasterSwitch(); - - /** - * Remove this switch from the openflow agent. - */ - void removeConnectedSwitch(); - - /** - * Sets the ports on this switch. - * @param portDescReply the port set and descriptions - */ - void setPortDescReply(OFPortDescStatsReply portDescReply); - - /** - * Sets the ports on this switch. - * @param portDescReplies list of port set and descriptions - */ - void setPortDescReplies(List<OFPortDescStatsReply> portDescReplies); - - /** - * Sets the features reply for this switch. - * @param featuresReply the features to set. - */ - void setFeaturesReply(OFFeaturesReply featuresReply); - - /** - * Sets the switch description. - * @param desc the descriptions - */ - void setSwitchDescription(OFDescStatsReply desc); - - /** - * Gets the next transaction id to use. - * @return the xid - */ - int getNextTransactionId(); - - - /** - * Sets the OF version for this switch. - * @param ofV the version to set. - */ - void setOFVersion(OFVersion ofV); - - /** - * Sets this switch has having a full flowtable. - * @param full true if full, false otherswise. - */ - void setTableFull(boolean full); - - /** - * Sets the associated Netty channel for this switch. - * @param channel the Netty channel - */ - void setChannel(Channel channel); - - /** - * Sets whether the switch is connected. - * - * @param connected whether the switch is connected - */ - void setConnected(boolean connected); - - /** - * Initialises the behaviour. - * @param dpid a dpid - * @param desc a switch description - * @param ofv OpenFlow version - */ - void init(Dpid dpid, OFDescStatsReply desc, OFVersion ofv); - - /** - * Does this switch support Nicira Role messages. - * @return true if supports, false otherwise. - */ - Boolean supportNxRole(); - - - /** - * Starts the driver specific handshake process. - */ - void startDriverHandshake(); - - /** - * Checks whether the driver specific handshake is complete. - * @return true is finished, false if not. - */ - boolean isDriverHandshakeComplete(); - - /** - * Process a message during the driver specific handshake. - * @param m the message to process. - */ - void processDriverHandshakeMessage(OFMessage m); - - /** - * Sends only role request messages. - * - * @param message a role request message. - */ - void sendRoleRequest(OFMessage message); - - /** - * Allows the handshaker behaviour to send messages during the - * handshake phase only. - * - * @param message an OpenFlow message - */ - void sendHandshakeMessage(OFMessage message); - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriverFactory.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriverFactory.java deleted file mode 100644 index a0d8f18f..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriverFactory.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.driver; - -import org.onosproject.openflow.controller.Dpid; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFVersion; - -/** - * Switch factory which returns concrete switch objects for the - * physical openflow switch in use. - * - */ -public interface OpenFlowSwitchDriverFactory { - - - /** - * Constructs the real openflow switch representation. - * @param dpid the dpid for this switch. - * @param desc its description. - * @param ofv the OF version in use - * @return the openflow switch representation. - */ - OpenFlowSwitchDriver getOFSwitchImpl(Dpid dpid, - OFDescStatsReply desc, OFVersion ofv); -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleHandler.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleHandler.java deleted file mode 100644 index b4068886..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleHandler.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.driver; - -import java.io.IOException; - -import org.onosproject.openflow.controller.RoleState; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFExperimenter; -import org.projectfloodlight.openflow.protocol.OFRoleReply; - -/** - * Role handling. - * - */ -public interface RoleHandler { - - /** - * Extract the role from an OFVendor message. - * - * Extract the role from an OFVendor message if the message is a - * Nicira role reply. Otherwise return null. - * - * @param experimenterMsg The vendor message to parse. - * @return The role in the message if the message is a Nicira role - * reply, null otherwise. - * @throws SwitchStateException If the message is a Nicira role reply - * but the numeric role value is unknown. - */ - RoleState extractNiciraRoleReply(OFExperimenter experimenterMsg) - throws SwitchStateException; - - /** - * Send a role request with the given role to the switch and update - * the pending request and timestamp. - * Sends an OFPT_ROLE_REQUEST to an OF1.3 switch, OR - * Sends an NX_ROLE_REQUEST to an OF1.0 switch if configured to support it - * in the IOFSwitch driver. If not supported, this method sends nothing - * and returns 'false'. The caller should take appropriate action. - * - * One other optimization we do here is that for OF1.0 switches with - * Nicira role message support, we force the Role.EQUAL to become - * Role.SLAVE, as there is no defined behavior for the Nicira role OTHER. - * We cannot expect it to behave like SLAVE. We don't have this problem with - * OF1.3 switches, because Role.EQUAL is well defined and we can simulate - * SLAVE behavior by using ASYNC messages. - * - * @param role role to request - * @param exp expectation - * @throws IOException when I/O exception of some sort has occurred - * @return false if and only if the switch does not support role-request - * messages, according to the switch driver; true otherwise. - */ - boolean sendRoleRequest(RoleState role, RoleRecvStatus exp) - throws IOException; - - /** - * Extract the role information from an OF1.3 Role Reply Message. - * @param rrmsg role reply message - * @return RoleReplyInfo object - * @throws SwitchStateException If unknown role encountered - */ - RoleReplyInfo extractOFRoleReply(OFRoleReply rrmsg) - throws SwitchStateException; - - /** - * Deliver a received role reply. - * - * Check if a request is pending and if the received reply matches the - * the expected pending reply (we check both role and xid) we set - * the role for the switch/channel. - * - * If a request is pending but doesn't match the reply we ignore it, and - * return - * - * If no request is pending we disconnect with a SwitchStateException - * - * @param rri information about role-reply in format that - * controller can understand. - * @return result comparing expected and received reply - * @throws SwitchStateException if no request is pending - */ - RoleRecvStatus deliverRoleReply(RoleReplyInfo rri) - throws SwitchStateException; - - - /** - * Called if we receive an error message. If the xid matches the - * pending request we handle it otherwise we ignore it. - * - * Note: since we only keep the last pending request we might get - * error messages for earlier role requests that we won't be able - * to handle - * @param error error message - * @return result comparing expected and received reply - * @throws SwitchStateException if switch did not support requested role - */ - RoleRecvStatus deliverError(OFErrorMsg error) - throws SwitchStateException; - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleRecvStatus.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleRecvStatus.java deleted file mode 100644 index 88c4cc70..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleRecvStatus.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.driver; - -/** - * When we remove a pending role request we use this enum to indicate how we - * arrived at the decision. When we send a role request to the switch, we - * also use this enum to indicate what we expect back from the switch, so the - * role changer can match the reply to our expectation. - */ -public enum RoleRecvStatus { - /** The switch returned an error indicating that roles are not. - * supported*/ - UNSUPPORTED, - /** The request timed out. */ - NO_REPLY, - /** The reply was old, there is a newer request pending. */ - OLD_REPLY, - /** - * The reply's role matched the role that this controller set in the - * request message - invoked either initially at startup or to reassert - * current role. - */ - MATCHED_CURRENT_ROLE, - /** - * The reply's role matched the role that this controller set in the - * request message - this is the result of a callback from the - * global registry, followed by a role request sent to the switch. - */ - MATCHED_SET_ROLE, - /** - * The reply's role was a response to the query made by this controller. - */ - REPLY_QUERY, - /** We received a role reply message from the switch - * but the expectation was unclear, or there was no expectation. - */ - OTHER_EXPECTATION, -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleReplyInfo.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleReplyInfo.java deleted file mode 100644 index dc9b6bad..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleReplyInfo.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.driver; - -import org.onosproject.openflow.controller.RoleState; -import org.projectfloodlight.openflow.types.U64; - -/** - * Helper class returns role reply information in the format understood - * by the controller. - */ -public class RoleReplyInfo { - private final RoleState role; - private final U64 genId; - private final long xid; - - public RoleReplyInfo(RoleState role, U64 genId, long xid) { - this.role = role; - this.genId = genId; - this.xid = xid; - } - public RoleState getRole() { - return role; - } - public U64 getGenId() { - return genId; - } - public long getXid() { - return xid; - } - @Override - public String toString() { - return "[Role:" + role + " GenId:" + genId + " Xid:" + xid + "]"; - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeAlreadyStarted.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeAlreadyStarted.java deleted file mode 100644 index 96b4bd73..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeAlreadyStarted.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.driver; - -/** - * Thrown when IOFSwitch.startDriverHandshake() is called more than once. - * - */ -public class SwitchDriverSubHandshakeAlreadyStarted extends - SwitchDriverSubHandshakeException { - private static final long serialVersionUID = -5491845708752443501L; - - public SwitchDriverSubHandshakeAlreadyStarted() { - super(); - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeCompleted.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeCompleted.java deleted file mode 100644 index b0f59fe5..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeCompleted.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.driver; - -import org.projectfloodlight.openflow.protocol.OFMessage; - - -/** - * Indicates that a message was passed to a switch driver's subhandshake - * handling code but the driver has already completed the sub-handshake. - * - */ -public class SwitchDriverSubHandshakeCompleted - extends SwitchDriverSubHandshakeException { - private static final long serialVersionUID = -8817822245846375995L; - - public SwitchDriverSubHandshakeCompleted(OFMessage m) { - super("Sub-Handshake is already complete but received message " - + m.getType()); - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeException.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeException.java deleted file mode 100644 index 1bc750ab..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeException.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.driver; - -/** - * Base class for exception thrown by switch driver sub-handshake processing. - * - */ -public class SwitchDriverSubHandshakeException extends RuntimeException { - private static final long serialVersionUID = -6257836781419604438L; - - protected SwitchDriverSubHandshakeException() { - super(); - } - - protected SwitchDriverSubHandshakeException(String arg0, Throwable arg1) { - super(arg0, arg1); - } - - protected SwitchDriverSubHandshakeException(String arg0) { - super(arg0); - } - - protected SwitchDriverSubHandshakeException(Throwable arg0) { - super(arg0); - } - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeNotStarted.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeNotStarted.java deleted file mode 100644 index a073683c..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeNotStarted.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.driver; - -/** - * Thrown when a switch driver's sub-handshake has not been started but an - * operation requiring the sub-handshake has been attempted. - * - */ -public class SwitchDriverSubHandshakeNotStarted extends - SwitchDriverSubHandshakeException { - private static final long serialVersionUID = -5491845708752443501L; - - public SwitchDriverSubHandshakeNotStarted() { - super(); - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeStateException.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeStateException.java deleted file mode 100644 index 3f4be813..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeStateException.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.driver; - -/** - * Thrown when a switch driver's sub-handshake state-machine receives an - * unexpected OFMessage and/or is in an invald state. - * - */ -public class SwitchDriverSubHandshakeStateException extends - SwitchDriverSubHandshakeException { - private static final long serialVersionUID = -8249926069195147051L; - - public SwitchDriverSubHandshakeStateException(String msg) { - super(msg); - } -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchStateException.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchStateException.java deleted file mode 100644 index 30c4e917..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchStateException.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.openflow.controller.driver; - -/** - * This exception indicates an error or unexpected message during - * message handling. E.g., if an OFMessage is received that is illegal or - * unexpected given the current handshake state. - * - * We don't allow wrapping other exception in a switch state exception. We - * only log the SwitchStateExceptions message so the causing exceptions - * stack trace is generally not available. - * - */ -public class SwitchStateException extends Exception { - - private static final long serialVersionUID = 9153954512470002631L; - - public SwitchStateException() { - super(); - } - - public SwitchStateException(String arg0, Throwable arg1) { - super(arg0, arg1); - } - - public SwitchStateException(String arg0) { - super(arg0); - } - - public SwitchStateException(Throwable arg0) { - super(arg0); - } - -} diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/package-info.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/package-info.java deleted file mode 100644 index c03a5840..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * OpenFlow controller switch driver API. - */ -package org.onosproject.openflow.controller.driver; diff --git a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/package-info.java b/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/package-info.java deleted file mode 100644 index 54778426..00000000 --- a/framework/src/onos/openflow/api/src/main/java/org/onosproject/openflow/controller/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * OpenFlow controller API. - */ -package org.onosproject.openflow.controller; diff --git a/framework/src/onos/openflow/api/src/test/java/org/onosproject/openflow/controller/OpenflowControllerAdapter.java b/framework/src/onos/openflow/api/src/test/java/org/onosproject/openflow/controller/OpenflowControllerAdapter.java deleted file mode 100644 index f4fe490f..00000000 --- a/framework/src/onos/openflow/api/src/test/java/org/onosproject/openflow/controller/OpenflowControllerAdapter.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller; - -import org.projectfloodlight.openflow.protocol.OFMessage; - -/** - * Test adapter for the OpenFlow controller interface. - */ -public class OpenflowControllerAdapter implements OpenFlowController { - @Override - public Iterable<OpenFlowSwitch> getSwitches() { - return null; - } - - @Override - public Iterable<OpenFlowSwitch> getMasterSwitches() { - return null; - } - - @Override - public Iterable<OpenFlowSwitch> getEqualSwitches() { - return null; - } - - @Override - public OpenFlowSwitch getSwitch(Dpid dpid) { - return null; - } - - @Override - public OpenFlowSwitch getMasterSwitch(Dpid dpid) { - return null; - } - - @Override - public OpenFlowSwitch getEqualSwitch(Dpid dpid) { - return null; - } - - @Override - public void addListener(OpenFlowSwitchListener listener) { - } - - @Override - public void removeListener(OpenFlowSwitchListener listener) { - } - - @Override - public void addPacketListener(int priority, PacketListener listener) { - } - - @Override - public void removePacketListener(PacketListener listener) { - } - - @Override - public void write(Dpid dpid, OFMessage msg) { - } - - @Override - public void processPacket(Dpid dpid, OFMessage msg) { - } - - @Override - public void setRole(Dpid dpid, RoleState role) { - } - - @Override - public void addEventListener(OpenFlowEventListener listener) { - } - - @Override - public void removeEventListener(OpenFlowEventListener listener) { - } -} diff --git a/framework/src/onos/openflow/ctl/pom.xml b/framework/src/onos/openflow/ctl/pom.xml deleted file mode 100644 index 56d48550..00000000 --- a/framework/src/onos/openflow/ctl/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ -<!-- - ~ Copyright 2014 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos-of</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-of-ctl</artifactId> - <packaging>bundle</packaging> - - <description>ONOS OpenFlow controller subsystem API</description> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-api</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty</artifactId> - </dependency> - <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.scr.annotations</artifactId> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-scr-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.onosproject</groupId> - <artifactId>onos-maven-plugin</artifactId> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java deleted file mode 100644 index d9848be5..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.openflow.controller.impl; - -import com.google.common.base.Strings; -import com.google.common.collect.ImmutableList; -import org.jboss.netty.bootstrap.ServerBootstrap; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.group.ChannelGroup; -import org.jboss.netty.channel.group.DefaultChannelGroup; -import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; -import org.onlab.util.ItemNotFoundException; -import org.onosproject.net.DeviceId; -import org.onosproject.net.driver.DefaultDriverData; -import org.onosproject.net.driver.DefaultDriverHandler; -import org.onosproject.net.driver.Driver; -import org.onosproject.net.driver.DriverService; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.driver.OpenFlowAgent; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.OFVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLEngine; -import javax.net.ssl.TrustManagerFactory; -import java.io.FileInputStream; -import java.lang.management.ManagementFactory; -import java.lang.management.RuntimeMXBean; -import java.net.InetSocketAddress; -import java.security.KeyStore; -import java.util.Dictionary; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.Executors; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.onlab.util.Tools.get; -import static org.onlab.util.Tools.groupedThreads; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.openflow.controller.Dpid.uri; - - -/** - * The main controller class. Handles all setup and network listeners - * - Distributed ownership control of switch through IControllerRegistryService - */ -public class Controller { - - protected static final Logger log = LoggerFactory.getLogger(Controller.class); - - protected static final OFFactory FACTORY13 = OFFactories.getFactory(OFVersion.OF_13); - protected static final OFFactory FACTORY10 = OFFactories.getFactory(OFVersion.OF_10); - private static final boolean TLS_DISABLED = false; - private static final short MIN_KS_LENGTH = 6; - - protected HashMap<String, String> controllerNodeIPsCache; - - private ChannelGroup cg; - - // Configuration options - protected List<Integer> openFlowPorts = ImmutableList.of(6633, 6653); - protected int workerThreads = 16; - - // Start time of the controller - protected long systemStartTime; - - private OpenFlowAgent agent; - - private NioServerSocketChannelFactory execFactory; - - protected String ksLocation; - protected String tsLocation; - protected char[] ksPwd; - protected char[] tsPwd; - protected SSLEngine serverSSLEngine; - - // Perf. related configuration - protected static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024; - private DriverService driverService; - private boolean enableOFTLS = TLS_DISABLED; - - // *************** - // Getters/Setters - // *************** - - public OFFactory getOFMessageFactory10() { - return FACTORY10; - } - - - public OFFactory getOFMessageFactory13() { - return FACTORY13; - } - - // ************** - // Initialization - // ************** - - /** - * Tell controller that we're ready to accept switches loop. - */ - public void run() { - - try { - final ServerBootstrap bootstrap = createServerBootStrap(); - - bootstrap.setOption("reuseAddr", true); - bootstrap.setOption("child.keepAlive", true); - bootstrap.setOption("child.tcpNoDelay", true); - bootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE); - - ChannelPipelineFactory pfact = - new OpenflowPipelineFactory(this, null, serverSSLEngine); - bootstrap.setPipelineFactory(pfact); - cg = new DefaultChannelGroup(); - openFlowPorts.forEach(port -> { - InetSocketAddress sa = new InetSocketAddress(port); - cg.add(bootstrap.bind(sa)); - log.info("Listening for switch connections on {}", sa); - }); - - } catch (Exception e) { - throw new RuntimeException(e); - } - - } - - private ServerBootstrap createServerBootStrap() { - - if (workerThreads == 0) { - execFactory = new NioServerSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/of", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/of", "worker-%d"))); - return new ServerBootstrap(execFactory); - } else { - execFactory = new NioServerSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/of", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/of", "worker-%d")), workerThreads); - return new ServerBootstrap(execFactory); - } - } - - public void setConfigParams(Dictionary<?, ?> properties) { - String ports = get(properties, "openflowPorts"); - if (!Strings.isNullOrEmpty(ports)) { - this.openFlowPorts = Stream.of(ports.split(",")) - .map(s -> Integer.parseInt(s)) - .collect(Collectors.toList()); - } - log.debug("OpenFlow ports set to {}", this.openFlowPorts); - - String threads = get(properties, "workerThreads"); - if (!Strings.isNullOrEmpty(threads)) { - this.workerThreads = Integer.parseInt(threads); - } - log.debug("Number of worker threads set to {}", this.workerThreads); - } - - /** - * Initialize internal data structures. - */ - public void init() { - // These data structures are initialized here because other - // module's startUp() might be called before ours - this.controllerNodeIPsCache = new HashMap<>(); - - this.systemStartTime = System.currentTimeMillis(); - - try { - getTLSParameters(); - if (enableOFTLS) { - initSSL(); - } - } catch (Exception ex) { - log.error("SSL init failed: {}", ex.getMessage()); - } - - } - - private void getTLSParameters() { - String tempString = System.getProperty("enableOFTLS"); - enableOFTLS = Strings.isNullOrEmpty(tempString) ? TLS_DISABLED : Boolean.parseBoolean(tempString); - log.info("OpenFlow Security is {}", enableOFTLS ? "enabled" : "disabled"); - if (enableOFTLS) { - ksLocation = System.getProperty("javax.net.ssl.keyStore"); - if (Strings.isNullOrEmpty(ksLocation)) { - enableOFTLS = TLS_DISABLED; - return; - } - tsLocation = System.getProperty("javax.net.ssl.trustStore"); - if (Strings.isNullOrEmpty(tsLocation)) { - enableOFTLS = TLS_DISABLED; - return; - } - ksPwd = System.getProperty("javax.net.ssl.keyStorePassword").toCharArray(); - if (MIN_KS_LENGTH > ksPwd.length) { - enableOFTLS = TLS_DISABLED; - return; - } - tsPwd = System.getProperty("javax.net.ssl.trustStorePassword").toCharArray(); - if (MIN_KS_LENGTH > tsPwd.length) { - enableOFTLS = TLS_DISABLED; - return; - } - } - } - - private void initSSL() throws Exception { - - TrustManagerFactory tmFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - KeyStore ts = KeyStore.getInstance("JKS"); - ts.load(new FileInputStream(tsLocation), tsPwd); - tmFactory.init(ts); - - KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - KeyStore ks = KeyStore.getInstance("JKS"); - ks.load(new FileInputStream(ksLocation), ksPwd); - kmf.init(ks, ksPwd); - - SSLContext serverContext = SSLContext.getInstance("TLS"); - serverContext.init(kmf.getKeyManagers(), tmFactory.getTrustManagers(), null); - - serverSSLEngine = serverContext.createSSLEngine(); - - serverSSLEngine.setNeedClientAuth(true); - serverSSLEngine.setUseClientMode(false); - serverSSLEngine.setEnabledProtocols(serverSSLEngine.getSupportedProtocols()); - serverSSLEngine.setEnabledCipherSuites(serverSSLEngine.getSupportedCipherSuites()); - serverSSLEngine.setEnableSessionCreation(true); - } - - // ************** - // Utility methods - // ************** - - public Map<String, Long> getMemory() { - Map<String, Long> m = new HashMap<>(); - Runtime runtime = Runtime.getRuntime(); - m.put("total", runtime.totalMemory()); - m.put("free", runtime.freeMemory()); - return m; - } - - - public Long getSystemUptime() { - RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean(); - return rb.getUptime(); - } - - public long getSystemStartTime() { - return (this.systemStartTime); - } - - /** - * Forward to the driver-manager to get an IOFSwitch instance. - * - * @param dpid data path id - * @param desc switch description - * @param ofv OpenFlow version - * @return switch instance - */ - protected OpenFlowSwitchDriver getOFSwitchInstance(long dpid, - OFDescStatsReply desc, - OFVersion ofv) { - Dpid dpidObj = new Dpid(dpid); - - Driver driver; - try { - driver = driverService.getDriver(DeviceId.deviceId(Dpid.uri(dpidObj))); - } catch (ItemNotFoundException e) { - driver = driverService.getDriver(desc.getMfrDesc(), desc.getHwDesc(), desc.getSwDesc()); - } - - if (driver != null && driver.hasBehaviour(OpenFlowSwitchDriver.class)) { - Dpid did = new Dpid(dpid); - DefaultDriverHandler handler = - new DefaultDriverHandler(new DefaultDriverData(driver, deviceId(uri(did)))); - OpenFlowSwitchDriver ofSwitchDriver = - driver.createBehaviour(handler, OpenFlowSwitchDriver.class); - ofSwitchDriver.init(did, desc, ofv); - ofSwitchDriver.setAgent(agent); - ofSwitchDriver.setRoleHandler(new RoleManager(ofSwitchDriver)); - log.info("OpenFlow handshaker found for device {}: {}", dpid, ofSwitchDriver); - return ofSwitchDriver; - } - log.error("No OpenFlow driver for {} : {}", dpid, desc); - return null; - - } - - public void start(OpenFlowAgent ag, DriverService driverService) { - log.info("Starting OpenFlow IO"); - this.agent = ag; - this.driverService = driverService; - this.init(); - this.run(); - } - - - public void stop() { - log.info("Stopping OpenFlow IO"); - cg.close(); - execFactory.shutdown(); - } - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutException.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutException.java deleted file mode 100644 index bbe307be..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutException.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.openflow.controller.impl; - -/** - * Exception is thrown when the handshake fails to complete. - * before a specified time - * - */ -public class HandshakeTimeoutException extends Exception { - - private static final long serialVersionUID = 6859880268940337312L; - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutHandler.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutHandler.java deleted file mode 100644 index fbbe3428..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutHandler.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.openflow.controller.impl; - -import java.util.concurrent.TimeUnit; - -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.jboss.netty.channel.Channels; -import org.jboss.netty.channel.SimpleChannelUpstreamHandler; -import org.jboss.netty.util.Timeout; -import org.jboss.netty.util.Timer; -import org.jboss.netty.util.TimerTask; - -/** - * Trigger a timeout if a switch fails to complete handshake soon enough. - */ -public class HandshakeTimeoutHandler - extends SimpleChannelUpstreamHandler { - static final HandshakeTimeoutException EXCEPTION = - new HandshakeTimeoutException(); - - final OFChannelHandler channelHandler; - final Timer timer; - final long timeoutNanos; - volatile Timeout timeout; - - public HandshakeTimeoutHandler(OFChannelHandler channelHandler, - Timer timer, - long timeoutSeconds) { - super(); - this.channelHandler = channelHandler; - this.timer = timer; - this.timeoutNanos = TimeUnit.SECONDS.toNanos(timeoutSeconds); - - } - - @Override - public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) - throws Exception { - if (timeoutNanos > 0) { - timeout = timer.newTimeout(new HandshakeTimeoutTask(ctx), - timeoutNanos, TimeUnit.NANOSECONDS); - } - ctx.sendUpstream(e); - } - - @Override - public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) - throws Exception { - if (timeout != null) { - timeout.cancel(); - timeout = null; - } - } - - private final class HandshakeTimeoutTask implements TimerTask { - - private final ChannelHandlerContext ctx; - - HandshakeTimeoutTask(ChannelHandlerContext ctx) { - this.ctx = ctx; - } - - @Override - public void run(Timeout t) throws Exception { - if (t.isCancelled()) { - return; - } - - if (!ctx.getChannel().isOpen()) { - return; - } - if (!channelHandler.isHandshakeComplete()) { - Channels.fireExceptionCaught(ctx, EXCEPTION); - } - } - } -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java deleted file mode 100644 index ff92b77e..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java +++ /dev/null @@ -1,1320 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -//CHECKSTYLE:OFF -package org.onosproject.openflow.controller.impl; - -import java.io.IOException; -import java.nio.channels.ClosedChannelException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.RejectedExecutionException; - -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.jboss.netty.channel.ExceptionEvent; -import org.jboss.netty.channel.MessageEvent; -import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler; -import org.jboss.netty.handler.timeout.IdleStateEvent; -import org.jboss.netty.handler.timeout.ReadTimeoutException; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.onosproject.openflow.controller.driver.SwitchStateException; -import org.projectfloodlight.openflow.exceptions.OFParseError; -import org.projectfloodlight.openflow.protocol.OFAsyncGetReply; -import org.projectfloodlight.openflow.protocol.OFBadRequestCode; -import org.projectfloodlight.openflow.protocol.OFBarrierReply; -import org.projectfloodlight.openflow.protocol.OFBarrierRequest; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFDescStatsRequest; -import org.projectfloodlight.openflow.protocol.OFEchoReply; -import org.projectfloodlight.openflow.protocol.OFEchoRequest; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFErrorType; -import org.projectfloodlight.openflow.protocol.OFExperimenter; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.OFFeaturesReply; -import org.projectfloodlight.openflow.protocol.OFFlowModFailedCode; -import org.projectfloodlight.openflow.protocol.OFFlowRemoved; -import org.projectfloodlight.openflow.protocol.OFGetConfigReply; -import org.projectfloodlight.openflow.protocol.OFGetConfigRequest; -import org.projectfloodlight.openflow.protocol.OFHello; -import org.projectfloodlight.openflow.protocol.OFHelloElem; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFPacketIn; -import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFPortDescStatsRequest; -import org.projectfloodlight.openflow.protocol.OFPortStatus; -import org.projectfloodlight.openflow.protocol.OFQueueGetConfigReply; -import org.projectfloodlight.openflow.protocol.OFRoleReply; -import org.projectfloodlight.openflow.protocol.OFSetConfig; -import org.projectfloodlight.openflow.protocol.OFStatsReply; -import org.projectfloodlight.openflow.protocol.OFStatsReplyFlags; -import org.projectfloodlight.openflow.protocol.OFStatsType; -import org.projectfloodlight.openflow.protocol.OFType; -import org.projectfloodlight.openflow.protocol.OFVersion; -import org.projectfloodlight.openflow.protocol.errormsg.OFBadRequestErrorMsg; -import org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg; -import org.projectfloodlight.openflow.types.U32; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Channel handler deals with the switch connection and dispatches - * switch messages to the appropriate locations. - */ -class OFChannelHandler extends IdleStateAwareChannelHandler { - private static final Logger log = LoggerFactory.getLogger(OFChannelHandler.class); - - private static final String RESET_BY_PEER = "Connection reset by peer"; - private static final String BROKEN_PIPE = "Broken pipe"; - - private final Controller controller; - private OpenFlowSwitchDriver sw; - private long thisdpid; // channelHandler cached value of connected switch id - private Channel channel; - // State needs to be volatile because the HandshakeTimeoutHandler - // needs to check if the handshake is complete - private volatile ChannelState state; - - // When a switch with a duplicate dpid is found (i.e we already have a - // connected switch with the same dpid), the new switch is immediately - // disconnected. At that point netty callsback channelDisconnected() which - // proceeds to cleaup switch state - we need to ensure that it does not cleanup - // switch state for the older (still connected) switch - private volatile Boolean duplicateDpidFound; - - // Temporary storage for switch-features and port-description - private OFFeaturesReply featuresReply; - private List<OFPortDescStatsReply> portDescReplies; - //private OFPortDescStatsReply portDescReply; - // a concurrent ArrayList to temporarily store port status messages - // before we are ready to deal with them - private final CopyOnWriteArrayList<OFPortStatus> pendingPortStatusMsg; - - //Indicates the openflow version used by this switch - protected OFVersion ofVersion; - protected OFFactory factory13; - protected OFFactory factory10; - - /** transaction Ids to use during handshake. Since only one thread - * calls into an OFChannelHandler instance, we don't need atomic. - * We will count down - */ - private int handshakeTransactionIds = -1; - - /** - * Create a new unconnected OFChannelHandler. - * @param controller parent controller - */ - OFChannelHandler(Controller controller) { - this.controller = controller; - this.state = ChannelState.INIT; - this.pendingPortStatusMsg = new CopyOnWriteArrayList<OFPortStatus>(); - this.portDescReplies = new ArrayList<OFPortDescStatsReply>(); - factory13 = controller.getOFMessageFactory13(); - factory10 = controller.getOFMessageFactory10(); - duplicateDpidFound = Boolean.FALSE; - } - - - - // XXX S consider if necessary - public void disconnectSwitch() { - sw.disconnectSwitch(); - } - - - - //************************* - // Channel State Machine - //************************* - - /** - * The state machine for handling the switch/channel state. All state - * transitions should happen from within the state machine (and not from other - * parts of the code) - */ - enum ChannelState { - /** - * Initial state before channel is connected. - */ - INIT(false) { - @Override - void processOFMessage(OFChannelHandler h, OFMessage m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) - throws IOException { - // need to implement since its abstract but it will never - // be called - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException { - unhandledMessageReceived(h, m); - } - }, - - /** - * We send a OF 1.3 HELLO to the switch and wait for a Hello from the switch. - * Once we receive the reply, we decide on OF 1.3 or 1.0 switch - no other - * protocol version is accepted. - * We send an OFFeaturesRequest depending on the protocol version selected - * Next state is WAIT_FEATURES_REPLY - */ - WAIT_HELLO(false) { - @Override - void processOFHello(OFChannelHandler h, OFHello m) - throws IOException { - // TODO We could check for the optional bitmap, but for now - // we are just checking the version number. - if (m.getVersion().getWireVersion() >= OFVersion.OF_13.getWireVersion()) { - log.debug("Received {} Hello from {} - switching to OF " - + "version 1.3", m.getVersion(), - h.channel.getRemoteAddress()); - h.sendHandshakeHelloMessage(); - h.ofVersion = OFVersion.OF_13; - } else if (m.getVersion().getWireVersion() >= OFVersion.OF_10.getWireVersion()) { - log.debug("Received {} Hello from {} - switching to OF " - + "version 1.0", m.getVersion(), - h.channel.getRemoteAddress()); - OFHello hi = - h.factory10.buildHello() - .setXid(h.handshakeTransactionIds--) - .build(); - h.channel.write(Collections.singletonList(hi)); - h.ofVersion = OFVersion.OF_10; - } else { - log.error("Received Hello of version {} from switch at {}. " - + "This controller works with OF1.0 and OF1.3 " - + "switches. Disconnecting switch ...", - m.getVersion(), h.channel.getRemoteAddress()); - h.channel.disconnect(); - return; - } - h.sendHandshakeFeaturesRequestMessage(); - h.setState(WAIT_FEATURES_REPLY); - } - @Override - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - @Override - void processOFStatisticsReply(OFChannelHandler h, - OFStatsReply m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) { - logErrorDisconnect(h, m); - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException { - unhandledMessageReceived(h, m); - } - }, - - - /** - * We are waiting for a features reply message. Once we receive it, the - * behavior depends on whether this is a 1.0 or 1.3 switch. For 1.0, - * we send a SetConfig request, barrier, and GetConfig request and the - * next state is WAIT_CONFIG_REPLY. For 1.3, we send a Port description - * request and the next state is WAIT_PORT_DESC_REPLY. - */ - WAIT_FEATURES_REPLY(false) { - @Override - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) - throws IOException { - h.thisdpid = m.getDatapathId().getLong(); - log.debug("Received features reply for switch at {} with dpid {}", - h.getSwitchInfoString(), h.thisdpid); - - h.featuresReply = m; //temp store - if (h.ofVersion == OFVersion.OF_10) { - h.sendHandshakeSetConfig(); - h.setState(WAIT_CONFIG_REPLY); - } else { - //version is 1.3, must get switchport information - h.sendHandshakeOFPortDescRequest(); - h.setState(WAIT_PORT_DESC_REPLY); - } - } - @Override - void processOFStatisticsReply(OFChannelHandler h, - OFStatsReply m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) { - logErrorDisconnect(h, m); - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException { - h.pendingPortStatusMsg.add(m); - } - }, - - /** - * We are waiting for a description of the 1.3 switch ports. - * Once received, we send a SetConfig request - * Next State is WAIT_CONFIG_REPLY - */ - WAIT_PORT_DESC_REPLY(false) { - - @Override - void processOFStatisticsReply(OFChannelHandler h, OFStatsReply m) - throws SwitchStateException { - // Read port description - if (m.getStatsType() != OFStatsType.PORT_DESC) { - log.warn("Expecting port description stats but received stats " - + "type {} from {}. Ignoring ...", m.getStatsType(), - h.channel.getRemoteAddress()); - return; - } - if (m.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - log.debug("Stats reply indicates more stats from sw {} for " - + "port description", - h.getSwitchInfoString()); - h.portDescReplies.add((OFPortDescStatsReply)m); - return; - } - else { - h.portDescReplies.add((OFPortDescStatsReply)m); - } - //h.portDescReply = (OFPortDescStatsReply) m; // temp store - log.info("Received port desc reply for switch at {}", - h.getSwitchInfoString()); - try { - h.sendHandshakeSetConfig(); - } catch (IOException e) { - log.error("Unable to send setConfig after PortDescReply. " - + "Error: {}", e.getMessage()); - } - h.setState(WAIT_CONFIG_REPLY); - } - - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) - throws IOException, SwitchStateException { - logErrorDisconnect(h, m); - - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException, SwitchStateException { - h.pendingPortStatusMsg.add(m); - - } - }, - - /** - * We are waiting for a config reply message. Once we receive it - * we send a DescriptionStatsRequest to the switch. - * Next state: WAIT_DESCRIPTION_STAT_REPLY - */ - WAIT_CONFIG_REPLY(false) { - @Override - void processOFGetConfigReply(OFChannelHandler h, OFGetConfigReply m) - throws IOException { - if (m.getMissSendLen() == 0xffff) { - log.trace("Config Reply from switch {} confirms " - + "miss length set to 0xffff", - h.getSwitchInfoString()); - } else { - // FIXME: we can't really deal with switches that don't send - // full packets. Shouldn't we drop the connection here? - log.warn("Config Reply from switch {} has" - + "miss length set to {}", - h.getSwitchInfoString(), - m.getMissSendLen()); - } - h.sendHandshakeDescriptionStatsRequest(); - h.setState(WAIT_DESCRIPTION_STAT_REPLY); - } - - @Override - void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m) { - // do nothing; - } - - @Override - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - @Override - void processOFStatisticsReply(OFChannelHandler h, - OFStatsReply m) - throws IOException, SwitchStateException { - log.error("Received multipart(stats) message sub-type {}", - m.getStatsType()); - illegalMessageReceived(h, m); - } - - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) { - logErrorDisconnect(h, m); - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException { - h.pendingPortStatusMsg.add(m); - } - }, - - - /** - * We are waiting for a OFDescriptionStat message from the switch. - * Once we receive any stat message we try to parse it. If it's not - * a description stats message we disconnect. If its the expected - * description stats message, we: - * - use the switch driver to bind the switch and get an IOFSwitch instance - * - setup the IOFSwitch instance - * - add switch controller and send the initial role - * request to the switch. - * Next state: WAIT_INITIAL_ROLE - * In the typical case, where switches support role request messages - * the next state is where we expect the role reply message. - * In the special case that where the switch does not support any kind - * of role request messages, we don't send a role message, but we do - * request mastership from the registry service. This controller - * should become master once we hear back from the registry service. - * All following states will have a h.sw instance! - */ - WAIT_DESCRIPTION_STAT_REPLY(false) { - @Override - void processOFStatisticsReply(OFChannelHandler h, OFStatsReply m) - throws SwitchStateException { - // Read description, if it has been updated - if (m.getStatsType() != OFStatsType.DESC) { - log.warn("Expecting Description stats but received stats " - + "type {} from {}. Ignoring ...", m.getStatsType(), - h.channel.getRemoteAddress()); - return; - } - OFDescStatsReply drep = (OFDescStatsReply) m; - log.info("Received switch description reply {} from switch at {}", - drep, h.channel.getRemoteAddress()); - // Here is where we differentiate between different kinds of switches - h.sw = h.controller.getOFSwitchInstance(h.thisdpid, drep, h.ofVersion); - - h.sw.setOFVersion(h.ofVersion); - h.sw.setFeaturesReply(h.featuresReply); - //h.sw.setPortDescReply(h.portDescReply); - h.sw.setPortDescReplies(h.portDescReplies); - h.sw.setConnected(true); - h.sw.setChannel(h.channel); -// boolean success = h.sw.connectSwitch(); -// -// if (!success) { -// disconnectDuplicate(h); -// return; -// } - // set switch information - - - - log.debug("Switch {} bound to class {}, description {}", - h.sw, h.sw.getClass(), drep); - //Put switch in EQUAL mode until we hear back from the global registry - //log.debug("Setting new switch {} to EQUAL and sending Role request", - // h.sw.getStringId()); - //h.sw.activateEqualSwitch(); - //h.setSwitchRole(RoleState.EQUAL); - - h.sw.startDriverHandshake(); - if (h.sw.isDriverHandshakeComplete()) { - if (!h.sw.connectSwitch()) { - disconnectDuplicate(h); - } - handlePendingPortStatusMessages(h); - h.setState(ACTIVE); - } else { - h.setState(WAIT_SWITCH_DRIVER_SUB_HANDSHAKE); - } - - } - - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) { - logErrorDisconnect(h, m); - } - - @Override - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) - throws IOException, SwitchStateException { - illegalMessageReceived(h, m); - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException { - h.pendingPortStatusMsg.add(m); - } - }, - - - /** - * We are waiting for the respective switch driver to complete its - * configuration. Notice that we do not consider this to be part of the main - * switch-controller handshake. But we do consider it as a step that comes - * before we declare the switch as available to the controller. - * Next State: depends on the role of this controller for this switch - either - * MASTER or EQUAL. - */ - WAIT_SWITCH_DRIVER_SUB_HANDSHAKE(true) { - - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) - throws IOException { - // will never be called. We override processOFMessage - } - - - - @Override - void processOFMessage(OFChannelHandler h, OFMessage m) - throws IOException, SwitchStateException { - - if (h.sw.isDriverHandshakeComplete()) { - moveToActive(h); - h.state.processOFMessage(h, m); - return; - - } - - if (m.getType() == OFType.ECHO_REQUEST) { - processOFEchoRequest(h, (OFEchoRequest) m); - } else if (m.getType() == OFType.ECHO_REPLY) { - processOFEchoReply(h, (OFEchoReply) m); - } else if (m.getType() == OFType.ROLE_REPLY) { - h.sw.handleRole(m); - } else if (m.getType() == OFType.ERROR) { - if (!h.sw.handleRoleError((OFErrorMsg)m)) { - h.sw.processDriverHandshakeMessage(m); - if (h.sw.isDriverHandshakeComplete()) { - moveToActive(h); - } - } - } else { - if (m.getType() == OFType.EXPERIMENTER && - ((OFExperimenter) m).getExperimenter() == - RoleManager.NICIRA_EXPERIMENTER) { - h.sw.handleNiciraRole(m); - } else { - h.sw.processDriverHandshakeMessage(m); - if (h.sw.isDriverHandshakeComplete()) { - moveToActive(h); - } - } - } - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException, SwitchStateException { - h.pendingPortStatusMsg.add(m); - } - - private void moveToActive(OFChannelHandler h) { - boolean success = h.sw.connectSwitch(); - handlePendingPortStatusMessages(h); - h.setState(ACTIVE); - if (!success) { - disconnectDuplicate(h); - } - } - - }, - - - /** - * This controller is in MASTER role for this switch. We enter this state - * after requesting and winning control from the global registry. - * The main handshake as well as the switch-driver sub-handshake - * is complete at this point. - * // XXX S reconsider below - * In the (near) future we may deterministically assign controllers to - * switches at startup. - * We only leave this state if the switch disconnects or - * if we send a role request for SLAVE /and/ receive the role reply for - * SLAVE. - */ - ACTIVE(true) { - @Override - void processOFError(OFChannelHandler h, OFErrorMsg m) - throws IOException, SwitchStateException { - // if we get here, then the error message is for something else - if (m.getErrType() == OFErrorType.BAD_REQUEST && - ((OFBadRequestErrorMsg) m).getCode() == - OFBadRequestCode.EPERM) { - // We are the master controller and the switch returned - // a permission error. This is a likely indicator that - // the switch thinks we are slave. Reassert our - // role - // FIXME: this could be really bad during role transitions - // if two controllers are master (even if its only for - // a brief period). We might need to see if these errors - // persist before we reassert - - h.sw.reassertRole(); - } else if (m.getErrType() == OFErrorType.FLOW_MOD_FAILED && - ((OFFlowModFailedErrorMsg) m).getCode() == - OFFlowModFailedCode.ALL_TABLES_FULL) { - h.sw.setTableFull(true); - } else { - logError(h, m); - } - h.dispatchMessage(m); - } - - @Override - void processOFStatisticsReply(OFChannelHandler h, - OFStatsReply m) { - if (m.getStatsType().equals(OFStatsType.PORT_DESC)) { - h.sw.setPortDescReply((OFPortDescStatsReply) m); - } - h.dispatchMessage(m); - } - - @Override - void processOFExperimenter(OFChannelHandler h, OFExperimenter m) - throws SwitchStateException { - h.sw.handleNiciraRole(m); - } - - @Override - void processOFRoleReply(OFChannelHandler h, OFRoleReply m) - throws SwitchStateException { - h.sw.handleRole(m); - } - - @Override - void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws SwitchStateException { - handlePortStatusMessage(h, m, true); - //h.dispatchMessage(m); - } - - @Override - void processOFPacketIn(OFChannelHandler h, OFPacketIn m) { -// OFPacketOut out = -// h.sw.factory().buildPacketOut() -// .setXid(m.getXid()) -// .setBufferId(m.getBufferId()).build(); -// h.sw.sendMsg(out); - h.dispatchMessage(m); - } - - @Override - void processOFFlowRemoved(OFChannelHandler h, - OFFlowRemoved m) { - h.dispatchMessage(m); - } - - @Override - void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m) { - h.dispatchMessage(m); - } - - @Override - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) { - h.sw.setFeaturesReply(m); - h.dispatchMessage(m); - } - - }; - - private final boolean handshakeComplete; - ChannelState(boolean handshakeComplete) { - this.handshakeComplete = handshakeComplete; - } - - /** - * Is this a state in which the handshake has completed? - * @return true if the handshake is complete - */ - public boolean isHandshakeComplete() { - return handshakeComplete; - } - - /** - * Get a string specifying the switch connection, state, and - * message received. To be used as message for SwitchStateException - * or log messages - * @param h The channel handler (to get switch information_ - * @param m The OFMessage that has just been received - * @param details A string giving more details about the exact nature - * of the problem. - * @return display string - */ - // needs to be protected because enum members are actually subclasses - protected String getSwitchStateMessage(OFChannelHandler h, - OFMessage m, - String details) { - return String.format("Switch: [%s], State: [%s], received: [%s]" - + ", details: %s", - h.getSwitchInfoString(), - this.toString(), - m.getType().toString(), - details); - } - - /** - * We have an OFMessage we didn't expect given the current state and - * we want to treat this as an error. - * We currently throw an exception that will terminate the connection - * However, we could be more forgiving - * @param h the channel handler that received the message - * @param m the message - * @throws SwitchStateException we always throw the exception - */ - // needs to be protected because enum members are actually subclasses - protected void illegalMessageReceived(OFChannelHandler h, OFMessage m) - throws SwitchStateException { - String msg = getSwitchStateMessage(h, m, - "Switch should never send this message in the current state"); - throw new SwitchStateException(msg); - - } - - /** - * We have an OFMessage we didn't expect given the current state and - * we want to ignore the message. - * @param h the channel handler the received the message - * @param m the message - */ - protected void unhandledMessageReceived(OFChannelHandler h, - OFMessage m) { - if (log.isDebugEnabled()) { - String msg = getSwitchStateMessage(h, m, - "Ignoring unexpected message"); - log.debug(msg); - } - } - - /** - * Log an OpenFlow error message from a switch. - * @param h The switch that sent the error - * @param error The error message - */ - protected void logError(OFChannelHandler h, OFErrorMsg error) { - log.error("{} from switch {} in state {}", - error, - h.getSwitchInfoString(), - this.toString()); - } - - /** - * Log an OpenFlow error message from a switch and disconnect the - * channel. - * - * @param h the IO channel for this switch. - * @param error The error message - */ - protected void logErrorDisconnect(OFChannelHandler h, OFErrorMsg error) { - logError(h, error); - h.channel.disconnect(); - } - - /** - * log an error message for a duplicate dpid and disconnect this channel. - * @param h the IO channel for this switch. - */ - protected void disconnectDuplicate(OFChannelHandler h) { - log.error("Duplicated dpid or incompleted cleanup - " - + "disconnecting channel {}", h.getSwitchInfoString()); - h.duplicateDpidFound = Boolean.TRUE; - h.channel.disconnect(); - } - - - - /** - * Handles all pending port status messages before a switch is declared - * activated in MASTER or EQUAL role. Note that since this handling - * precedes the activation (and therefore notification to IOFSwitchListerners) - * the changes to ports will already be visible once the switch is - * activated. As a result, no notifications are sent out for these - * pending portStatus messages. - * - * @param h the channel handler that received the message - */ - protected void handlePendingPortStatusMessages(OFChannelHandler h) { - try { - handlePendingPortStatusMessages(h, 0); - } catch (SwitchStateException e) { - log.error(e.getMessage()); - } - } - - private void handlePendingPortStatusMessages(OFChannelHandler h, int index) - throws SwitchStateException { - if (h.sw == null) { - String msg = "State machine error: switch is null. Should never " + - "happen"; - throw new SwitchStateException(msg); - } - log.info("Processing {} pending port status messages for {}", - h.pendingPortStatusMsg.size(), h.sw.getStringId()); - - ArrayList<OFPortStatus> temp = new ArrayList<OFPortStatus>(); - for (OFPortStatus ps: h.pendingPortStatusMsg) { - temp.add(ps); - handlePortStatusMessage(h, ps, false); - } - // expensive but ok - we don't expect too many port-status messages - // note that we cannot use clear(), because of the reasons below - h.pendingPortStatusMsg.removeAll(temp); - temp.clear(); - // the iterator above takes a snapshot of the list - so while we were - // dealing with the pending port-status messages, we could have received - // newer ones. Handle them recursively, but break the recursion after - // five steps to avoid an attack. - if (!h.pendingPortStatusMsg.isEmpty() && ++index < 5) { - handlePendingPortStatusMessages(h, index); - } - } - - /** - * Handle a port status message. - * - * Handle a port status message by updating the port maps in the - * IOFSwitch instance and notifying Controller about the change so - * it can dispatch a switch update. - * - * @param h The OFChannelHhandler that received the message - * @param m The PortStatus message we received - * @param doNotify if true switch port changed events will be - * dispatched - * @throws SwitchStateException if the switch is not bound to the channel - * - */ - protected void handlePortStatusMessage(OFChannelHandler h, OFPortStatus m, - boolean doNotify) throws SwitchStateException { - if (h.sw == null) { - String msg = getSwitchStateMessage(h, m, - "State machine error: switch is null. Should never " + - "happen"); - throw new SwitchStateException(msg); - } - - h.sw.handleMessage(m); - } - - - /** - * Process an OF message received on the channel and - * update state accordingly. - * - * The main "event" of the state machine. Process the received message, - * send follow up message if required and update state if required. - * - * Switches on the message type and calls more specific event handlers - * for each individual OF message type. If we receive a message that - * is supposed to be sent from a controller to a switch we throw - * a SwitchStateExeption. - * - * The more specific handlers can also throw SwitchStateExceptions - * - * @param h The OFChannelHandler that received the message - * @param m The message we received. - * @throws SwitchStateException if the switch is not bound to the channel - * @throws IOException if unable to send message back to the switch - */ - void processOFMessage(OFChannelHandler h, OFMessage m) - throws IOException, SwitchStateException { - switch(m.getType()) { - case HELLO: - processOFHello(h, (OFHello) m); - break; - case BARRIER_REPLY: - processOFBarrierReply(h, (OFBarrierReply) m); - break; - case ECHO_REPLY: - processOFEchoReply(h, (OFEchoReply) m); - break; - case ECHO_REQUEST: - processOFEchoRequest(h, (OFEchoRequest) m); - break; - case ERROR: - processOFError(h, (OFErrorMsg) m); - break; - case FEATURES_REPLY: - processOFFeaturesReply(h, (OFFeaturesReply) m); - break; - case FLOW_REMOVED: - processOFFlowRemoved(h, (OFFlowRemoved) m); - break; - case GET_CONFIG_REPLY: - processOFGetConfigReply(h, (OFGetConfigReply) m); - break; - case PACKET_IN: - processOFPacketIn(h, (OFPacketIn) m); - break; - case PORT_STATUS: - processOFPortStatus(h, (OFPortStatus) m); - break; - case QUEUE_GET_CONFIG_REPLY: - processOFQueueGetConfigReply(h, (OFQueueGetConfigReply) m); - break; - case STATS_REPLY: // multipart_reply in 1.3 - processOFStatisticsReply(h, (OFStatsReply) m); - break; - case EXPERIMENTER: - processOFExperimenter(h, (OFExperimenter) m); - break; - case ROLE_REPLY: - processOFRoleReply(h, (OFRoleReply) m); - break; - case GET_ASYNC_REPLY: - processOFGetAsyncReply(h, (OFAsyncGetReply) m); - break; - - // The following messages are sent to switches. The controller - // should never receive them - case SET_CONFIG: - case GET_CONFIG_REQUEST: - case PACKET_OUT: - case PORT_MOD: - case QUEUE_GET_CONFIG_REQUEST: - case BARRIER_REQUEST: - case STATS_REQUEST: // multipart request in 1.3 - case FEATURES_REQUEST: - case FLOW_MOD: - case GROUP_MOD: - case TABLE_MOD: - case GET_ASYNC_REQUEST: - case SET_ASYNC: - case METER_MOD: - default: - illegalMessageReceived(h, m); - break; - } - } - - /*----------------------------------------------------------------- - * Default implementation for message handlers in any state. - * - * Individual states must override these if they want a behavior - * that differs from the default. - * - * In general, these handlers simply ignore the message and do - * nothing. - * - * There are some exceptions though, since some messages really - * are handled the same way in every state (e.g., ECHO_REQUST) or - * that are only valid in a single state (e.g., HELLO, GET_CONFIG_REPLY - -----------------------------------------------------------------*/ - - void processOFHello(OFChannelHandler h, OFHello m) - throws IOException, SwitchStateException { - // we only expect hello in the WAIT_HELLO state - log.warn("Received Hello outside WAIT_HELLO state; switch {} is not complaint.", - h.channel.getRemoteAddress()); - } - - void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m) - throws IOException { - // Silently ignore. - } - - void processOFEchoRequest(OFChannelHandler h, OFEchoRequest m) - throws IOException { - if (h.ofVersion == null) { - log.error("No OF version set for {}. Not sending Echo REPLY", - h.channel.getRemoteAddress()); - return; - } - OFFactory factory = (h.ofVersion == OFVersion.OF_13) ? - h.controller.getOFMessageFactory13() : h.controller.getOFMessageFactory10(); - OFEchoReply reply = factory - .buildEchoReply() - .setXid(m.getXid()) - .setData(m.getData()) - .build(); - h.channel.write(Collections.singletonList(reply)); - } - - void processOFEchoReply(OFChannelHandler h, OFEchoReply m) - throws IOException { - // Do nothing with EchoReplies !! - } - - // no default implementation for OFError - // every state must override it - abstract void processOFError(OFChannelHandler h, OFErrorMsg m) - throws IOException, SwitchStateException; - - - void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply m) - throws IOException, SwitchStateException { - unhandledMessageReceived(h, m); - } - - void processOFFlowRemoved(OFChannelHandler h, OFFlowRemoved m) - throws IOException { - unhandledMessageReceived(h, m); - } - - void processOFGetConfigReply(OFChannelHandler h, OFGetConfigReply m) - throws IOException, SwitchStateException { - // we only expect config replies in the WAIT_CONFIG_REPLY state - illegalMessageReceived(h, m); - } - - void processOFPacketIn(OFChannelHandler h, OFPacketIn m) - throws IOException { - unhandledMessageReceived(h, m); - } - - // no default implementation. Every state needs to handle it. - abstract void processOFPortStatus(OFChannelHandler h, OFPortStatus m) - throws IOException, SwitchStateException; - - void processOFQueueGetConfigReply(OFChannelHandler h, - OFQueueGetConfigReply m) - throws IOException { - unhandledMessageReceived(h, m); - } - - void processOFStatisticsReply(OFChannelHandler h, OFStatsReply m) - throws IOException, SwitchStateException { - unhandledMessageReceived(h, m); - } - - void processOFExperimenter(OFChannelHandler h, OFExperimenter m) - throws IOException, SwitchStateException { - // TODO: it might make sense to parse the vendor message here - // into the known vendor messages we support and then call more - // specific event handlers - unhandledMessageReceived(h, m); - } - - void processOFRoleReply(OFChannelHandler h, OFRoleReply m) - throws SwitchStateException, IOException { - unhandledMessageReceived(h, m); - } - - void processOFGetAsyncReply(OFChannelHandler h, - OFAsyncGetReply m) { - unhandledMessageReceived(h, m); - } - - } - - - - //************************* - // Channel handler methods - //************************* - - @Override - public void channelConnected(ChannelHandlerContext ctx, - ChannelStateEvent e) throws Exception { - channel = e.getChannel(); - log.info("New switch connection from {}", - channel.getRemoteAddress()); - /* - hack to wait for the switch to tell us what it's - max version is. This is not spec compliant and should - be removed as soon as switches behave better. - */ - //sendHandshakeHelloMessage(); - setState(ChannelState.WAIT_HELLO); - } - - @Override - public void channelDisconnected(ChannelHandlerContext ctx, - ChannelStateEvent e) throws Exception { - log.info("Switch disconnected callback for sw:{}. Cleaning up ...", - getSwitchInfoString()); - if (thisdpid != 0) { - if (!duplicateDpidFound) { - // if the disconnected switch (on this ChannelHandler) - // was not one with a duplicate-dpid, it is safe to remove all - // state for it at the controller. Notice that if the disconnected - // switch was a duplicate-dpid, calling the method below would clear - // all state for the original switch (with the same dpid), - // which we obviously don't want. - log.info("{}:removal called", getSwitchInfoString()); - if (sw != null) { - sw.removeConnectedSwitch(); - } - } else { - // A duplicate was disconnected on this ChannelHandler, - // this is the same switch reconnecting, but the original state was - // not cleaned up - XXX check liveness of original ChannelHandler - log.info("{}:duplicate found", getSwitchInfoString()); - duplicateDpidFound = Boolean.FALSE; - } - } else { - log.warn("no dpid in channelHandler registered for " - + "disconnected switch {}", getSwitchInfoString()); - } - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) - throws Exception { - if (e.getCause() instanceof ReadTimeoutException) { - // switch timeout - log.error("Disconnecting switch {} due to read timeout", - getSwitchInfoString()); - ctx.getChannel().close(); - } else if (e.getCause() instanceof HandshakeTimeoutException) { - log.error("Disconnecting switch {}: failed to complete handshake", - getSwitchInfoString()); - ctx.getChannel().close(); - } else if (e.getCause() instanceof ClosedChannelException) { - log.debug("Channel for sw {} already closed", getSwitchInfoString()); - } else if (e.getCause() instanceof IOException) { - if (!e.getCause().getMessage().equals(RESET_BY_PEER) && - !e.getCause().getMessage().equals(BROKEN_PIPE)) { - log.error("Disconnecting switch {} due to IO Error: {}", - getSwitchInfoString(), e.getCause().getMessage()); - if (log.isDebugEnabled()) { - // still print stack trace if debug is enabled - log.debug("StackTrace for previous Exception: ", e.getCause()); - } - } - ctx.getChannel().close(); - } else if (e.getCause() instanceof SwitchStateException) { - log.error("Disconnecting switch {} due to switch state error: {}", - getSwitchInfoString(), e.getCause().getMessage()); - if (log.isDebugEnabled()) { - // still print stack trace if debug is enabled - log.debug("StackTrace for previous Exception: ", e.getCause()); - } - ctx.getChannel().close(); - } else if (e.getCause() instanceof OFParseError) { - log.error("Disconnecting switch " - + getSwitchInfoString() + - " due to message parse failure", - e.getCause()); - ctx.getChannel().close(); - } else if (e.getCause() instanceof RejectedExecutionException) { - log.warn("Could not process message: queue full"); - } else { - log.error("Error while processing message from switch " - + getSwitchInfoString() - + "state " + this.state, e.getCause()); - ctx.getChannel().close(); - } - } - - @Override - public String toString() { - return getSwitchInfoString(); - } - - @Override - public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e) - throws Exception { - OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10; - OFMessage m = factory.buildEchoRequest().build(); - log.debug("Sending Echo Request on idle channel: {}", - e.getChannel().getPipeline().getLast().toString()); - e.getChannel().write(Collections.singletonList(m)); - // XXX S some problems here -- echo request has no transaction id, and - // echo reply is not correlated to the echo request. - } - - @Override - public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) - throws Exception { - if (e.getMessage() instanceof List) { - @SuppressWarnings("unchecked") - List<OFMessage> msglist = (List<OFMessage>) e.getMessage(); - - - for (OFMessage ofm : msglist) { - // Do the actual packet processing - state.processOFMessage(this, ofm); - } - } else { - state.processOFMessage(this, (OFMessage) e.getMessage()); - } - } - - - - //************************* - // Channel utility methods - //************************* - - /** - * Is this a state in which the handshake has completed? - * @return true if the handshake is complete - */ - public boolean isHandshakeComplete() { - return this.state.isHandshakeComplete(); - } - - private void dispatchMessage(OFMessage m) { - sw.handleMessage(m); - } - - /** - * Return a string describing this switch based on the already available - * information (DPID and/or remote socket). - * @return display string - */ - private String getSwitchInfoString() { - if (sw != null) { - return sw.toString(); - } - String channelString; - if (channel == null || channel.getRemoteAddress() == null) { - channelString = "?"; - } else { - channelString = channel.getRemoteAddress().toString(); - } - String dpidString; - if (featuresReply == null) { - dpidString = "?"; - } else { - dpidString = featuresReply.getDatapathId().toString(); - } - return String.format("[%s DPID[%s]]", channelString, dpidString); - } - - /** - * Update the channels state. Only called from the state machine. - * TODO: enforce restricted state transitions - * @param state - */ - private void setState(ChannelState state) { - this.state = state; - } - - /** - * Send hello message to the switch using the handshake transactions ids. - * @throws IOException - */ - private void sendHandshakeHelloMessage() throws IOException { - // The OF protocol requires us to start things off by sending the highest - // version of the protocol supported. - - // bitmap represents OF1.0 (ofp_version=0x01) and OF1.3 (ofp_version=0x04) - // see Sec. 7.5.1 of the OF1.3.4 spec - U32 bitmap = U32.ofRaw(0x00000012); - OFHelloElem hem = factory13.buildHelloElemVersionbitmap() - .setBitmaps(Collections.singletonList(bitmap)) - .build(); - OFMessage.Builder mb = factory13.buildHello() - .setXid(this.handshakeTransactionIds--) - .setElements(Collections.singletonList(hem)); - log.info("Sending OF_13 Hello to {}", channel.getRemoteAddress()); - channel.write(Collections.singletonList(mb.build())); - } - - /** - * Send featuresRequest msg to the switch using the handshake transactions ids. - * @throws IOException - */ - private void sendHandshakeFeaturesRequestMessage() throws IOException { - OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10; - OFMessage m = factory.buildFeaturesRequest() - .setXid(this.handshakeTransactionIds--) - .build(); - channel.write(Collections.singletonList(m)); - } - - /** - * Send the configuration requests to tell the switch we want full - * packets. - * @throws IOException - */ - private void sendHandshakeSetConfig() throws IOException { - OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10; - //log.debug("Sending CONFIG_REQUEST to {}", channel.getRemoteAddress()); - List<OFMessage> msglist = new ArrayList<OFMessage>(3); - - // Ensure we receive the full packet via PacketIn - // FIXME: We don't set the reassembly flags. - // Only send config to switches to send full packets, if they have a buffer. - // Saves a packet & OFSetConfig can't be handled by certain switches. - if(this.featuresReply.getNBuffers() > 0) { - OFSetConfig sc = factory - .buildSetConfig() - .setMissSendLen((short) 0xffff) - .setXid(this.handshakeTransactionIds--) - .build(); - msglist.add(sc); - } - - // Barrier - OFBarrierRequest br = factory - .buildBarrierRequest() - .setXid(this.handshakeTransactionIds--) - .build(); - msglist.add(br); - - // Verify (need barrier?) - OFGetConfigRequest gcr = factory - .buildGetConfigRequest() - .setXid(this.handshakeTransactionIds--) - .build(); - msglist.add(gcr); - channel.write(msglist); - } - - /** - * send a description state request. - * @throws IOException - */ - private void sendHandshakeDescriptionStatsRequest() throws IOException { - // Get Description to set switch-specific flags - OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10; - OFDescStatsRequest dreq = factory - .buildDescStatsRequest() - .setXid(handshakeTransactionIds--) - .build(); - channel.write(Collections.singletonList(dreq)); - } - - private void sendHandshakeOFPortDescRequest() throws IOException { - // Get port description for 1.3 switch - OFPortDescStatsRequest preq = factory13 - .buildPortDescStatsRequest() - .setXid(handshakeTransactionIds--) - .build(); - channel.write(Collections.singletonList(preq)); - } - - ChannelState getStateForTesting() { - return state; - } - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageDecoder.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageDecoder.java deleted file mode 100644 index f52d27e5..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageDecoder.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.openflow.controller.impl; - - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.frame.FrameDecoder; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFMessageReader; - -/** - * Decode an openflow message from a Channel, for use in a netty pipeline. - */ -public class OFMessageDecoder extends FrameDecoder { - - @Override - protected Object decode(ChannelHandlerContext ctx, Channel channel, - ChannelBuffer buffer) throws Exception { - if (!channel.isConnected()) { - // In testing, I see decode being called AFTER decode last. - // This check avoids that from reading corrupted frames - return null; - } - - // Note that a single call to decode results in reading a single - // OFMessage from the channel buffer, which is passed on to, and processed - // by, the controller (in OFChannelHandler). - // This is different from earlier behavior (with the original openflowj), - // where we parsed all the messages in the buffer, before passing on - // a list of the parsed messages to the controller. - // The performance *may or may not* not be as good as before. - OFMessageReader<OFMessage> reader = OFFactories.getGenericReader(); - OFMessage message = reader.readFrom(buffer); - - return message; - } - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageEncoder.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageEncoder.java deleted file mode 100644 index 4c1b16fe..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageEncoder.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.openflow.controller.impl; - -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; -import org.projectfloodlight.openflow.protocol.OFMessage; - -/** - * Encode an openflow message for output into a ChannelBuffer, for use in a - * netty pipeline. - */ -public class OFMessageEncoder extends OneToOneEncoder { - - @Override - protected Object encode(ChannelHandlerContext ctx, Channel channel, - Object msg) throws Exception { - if (!(msg instanceof List)) { - return msg; - } - - @SuppressWarnings("unchecked") - List<OFMessage> msglist = (List<OFMessage>) msg; - /* XXX S can't get length of OFMessage in loxigen's openflowj?? - int size = 0; - for (OFMessage ofm : msglist) { - size += ofm.getLengthU(); - }*/ - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - for (OFMessage ofm : msglist) { - if (ofm != null) { - ofm.writeTo(buf); - } - } - return buf; - } - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java deleted file mode 100644 index fdcd2f00..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java +++ /dev/null @@ -1,633 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.impl; - -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Lists; -import com.google.common.collect.Multimap; -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Modified; -import org.apache.felix.scr.annotations.Property; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.apache.felix.scr.annotations.Service; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.net.driver.DefaultDriverProviderService; -import org.onosproject.net.driver.DriverService; -import org.onosproject.openflow.controller.DefaultOpenFlowPacketContext; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.OpenFlowController; -import org.onosproject.openflow.controller.OpenFlowEventListener; -import org.onosproject.openflow.controller.OpenFlowPacketContext; -import org.onosproject.openflow.controller.OpenFlowSwitch; -import org.onosproject.openflow.controller.OpenFlowSwitchListener; -import org.onosproject.openflow.controller.PacketListener; -import org.onosproject.openflow.controller.RoleState; -import org.onosproject.openflow.controller.driver.OpenFlowAgent; -import org.osgi.service.component.ComponentContext; -import org.projectfloodlight.openflow.protocol.OFCalientFlowStatsEntry; -import org.projectfloodlight.openflow.protocol.OFCalientFlowStatsReply; -import org.projectfloodlight.openflow.protocol.OFCircuitPortStatus; -import org.projectfloodlight.openflow.protocol.OFExperimenter; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFFlowStatsEntry; -import org.projectfloodlight.openflow.protocol.OFFlowStatsReply; -import org.projectfloodlight.openflow.protocol.OFTableStatsEntry; -import org.projectfloodlight.openflow.protocol.OFTableStatsReply; -import org.projectfloodlight.openflow.protocol.OFGroupDescStatsEntry; -import org.projectfloodlight.openflow.protocol.OFGroupDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFGroupStatsEntry; -import org.projectfloodlight.openflow.protocol.OFGroupStatsReply; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFPacketIn; -import org.projectfloodlight.openflow.protocol.OFPortDesc; -import org.projectfloodlight.openflow.protocol.OFPortStatsEntry; -import org.projectfloodlight.openflow.protocol.OFPortStatsReply; -import org.projectfloodlight.openflow.protocol.OFPortStatus; -import org.projectfloodlight.openflow.protocol.OFStatsReply; -import org.projectfloodlight.openflow.protocol.OFStatsReplyFlags; -import org.projectfloodlight.openflow.protocol.action.OFActionOutput; -import org.projectfloodlight.openflow.protocol.instruction.OFInstruction; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArraySet; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; - -import static org.onlab.util.Tools.groupedThreads; - -@Component(immediate = true) -@Service -public class OpenFlowControllerImpl implements OpenFlowController { - private static final String DEFAULT_OFPORT = "6633,6653"; - private static final int DEFAULT_WORKER_THREADS = 16; - - private static final Logger log = - LoggerFactory.getLogger(OpenFlowControllerImpl.class); - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DriverService driverService; - - // References exists merely for sequencing purpose to assure drivers are loaded - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DefaultDriverProviderService defaultDriverProviderService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ComponentConfigService cfgService; - - @Property(name = "openflowPorts", value = DEFAULT_OFPORT, - label = "Port numbers (comma separated) used by OpenFlow protocol; default is 6633,6653") - private String openflowPorts = DEFAULT_OFPORT; - - @Property(name = "workerThreads", intValue = DEFAULT_WORKER_THREADS, - label = "Number of controller worker threads; default is 16") - private int workerThreads = DEFAULT_WORKER_THREADS; - - private final ExecutorService executorMsgs = - Executors.newFixedThreadPool(32, groupedThreads("onos/of", "event-stats-%d")); - - private final ExecutorService executorBarrier = - Executors.newFixedThreadPool(4, groupedThreads("onos/of", "event-barrier-%d")); - - protected ConcurrentHashMap<Dpid, OpenFlowSwitch> connectedSwitches = - new ConcurrentHashMap<>(); - protected ConcurrentHashMap<Dpid, OpenFlowSwitch> activeMasterSwitches = - new ConcurrentHashMap<>(); - protected ConcurrentHashMap<Dpid, OpenFlowSwitch> activeEqualSwitches = - new ConcurrentHashMap<>(); - - protected OpenFlowSwitchAgent agent = new OpenFlowSwitchAgent(); - protected Set<OpenFlowSwitchListener> ofSwitchListener = new CopyOnWriteArraySet<>(); - - protected Multimap<Integer, PacketListener> ofPacketListener = - ArrayListMultimap.create(); - - protected Set<OpenFlowEventListener> ofEventListener = new CopyOnWriteArraySet<>(); - - protected Multimap<Dpid, OFFlowStatsEntry> fullFlowStats = - ArrayListMultimap.create(); - - protected Multimap<Dpid, OFTableStatsEntry> fullTableStats = - ArrayListMultimap.create(); - - protected Multimap<Dpid, OFGroupStatsEntry> fullGroupStats = - ArrayListMultimap.create(); - - protected Multimap<Dpid, OFGroupDescStatsEntry> fullGroupDescStats = - ArrayListMultimap.create(); - - protected Multimap<Dpid, OFPortStatsEntry> fullPortStats = - ArrayListMultimap.create(); - - private final Controller ctrl = new Controller(); - - @Activate - public void activate(ComponentContext context) { - cfgService.registerProperties(getClass()); - ctrl.setConfigParams(context.getProperties()); - ctrl.start(agent, driverService); - } - - @Deactivate - public void deactivate() { - cfgService.unregisterProperties(getClass(), false); - ctrl.stop(); - } - - @Modified - public void modified(ComponentContext context) { - ctrl.stop(); - ctrl.setConfigParams(context.getProperties()); - ctrl.start(agent, driverService); - } - - @Override - public Iterable<OpenFlowSwitch> getSwitches() { - return connectedSwitches.values(); - } - - @Override - public Iterable<OpenFlowSwitch> getMasterSwitches() { - return activeMasterSwitches.values(); - } - - @Override - public Iterable<OpenFlowSwitch> getEqualSwitches() { - return activeEqualSwitches.values(); - } - - @Override - public OpenFlowSwitch getSwitch(Dpid dpid) { - return connectedSwitches.get(dpid); - } - - @Override - public OpenFlowSwitch getMasterSwitch(Dpid dpid) { - return activeMasterSwitches.get(dpid); - } - - @Override - public OpenFlowSwitch getEqualSwitch(Dpid dpid) { - return activeEqualSwitches.get(dpid); - } - - @Override - public void addListener(OpenFlowSwitchListener listener) { - if (!ofSwitchListener.contains(listener)) { - this.ofSwitchListener.add(listener); - } - } - - @Override - public void removeListener(OpenFlowSwitchListener listener) { - this.ofSwitchListener.remove(listener); - } - - @Override - public void addPacketListener(int priority, PacketListener listener) { - ofPacketListener.put(priority, listener); - } - - @Override - public void removePacketListener(PacketListener listener) { - ofPacketListener.values().remove(listener); - } - - @Override - public void addEventListener(OpenFlowEventListener listener) { - ofEventListener.add(listener); - } - - @Override - public void removeEventListener(OpenFlowEventListener listener) { - ofEventListener.remove(listener); - } - - @Override - public void write(Dpid dpid, OFMessage msg) { - this.getSwitch(dpid).sendMsg(msg); - } - - @Override - public void processPacket(Dpid dpid, OFMessage msg) { - Collection<OFFlowStatsEntry> flowStats; - Collection<OFTableStatsEntry> tableStats; - Collection<OFGroupStatsEntry> groupStats; - Collection<OFGroupDescStatsEntry> groupDescStats; - Collection<OFPortStatsEntry> portStats; - - switch (msg.getType()) { - case PORT_STATUS: - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.portChanged(dpid, (OFPortStatus) msg); - } - break; - case FEATURES_REPLY: - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.switchChanged(dpid); - } - break; - case PACKET_IN: - OpenFlowPacketContext pktCtx = DefaultOpenFlowPacketContext - .packetContextFromPacketIn(this.getSwitch(dpid), - (OFPacketIn) msg); - for (PacketListener p : ofPacketListener.values()) { - p.handlePacket(pktCtx); - } - break; - // TODO: Consider using separate threadpool for sensitive messages. - // ie. Back to back error could cause us to starve. - case FLOW_REMOVED: - case ERROR: - executorMsgs.submit(new OFMessageHandler(dpid, msg)); - break; - case STATS_REPLY: - OFStatsReply reply = (OFStatsReply) msg; - switch (reply.getStatsType()) { - case PORT_DESC: - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.switchChanged(dpid); - } - break; - case FLOW: - flowStats = publishFlowStats(dpid, (OFFlowStatsReply) reply); - if (flowStats != null) { - OFFlowStatsReply.Builder rep = - OFFactories.getFactory(msg.getVersion()).buildFlowStatsReply(); - rep.setEntries(Lists.newLinkedList(flowStats)); - rep.setXid(reply.getXid()); - executorMsgs.submit(new OFMessageHandler(dpid, rep.build())); - } - break; - case TABLE: - tableStats = publishTableStats(dpid, (OFTableStatsReply) reply); - if (tableStats != null) { - OFTableStatsReply.Builder rep = - OFFactories.getFactory(msg.getVersion()).buildTableStatsReply(); - rep.setEntries(Lists.newLinkedList(tableStats)); - executorMsgs.submit(new OFMessageHandler(dpid, rep.build())); - } - break; - case GROUP: - groupStats = publishGroupStats(dpid, (OFGroupStatsReply) reply); - if (groupStats != null) { - OFGroupStatsReply.Builder rep = - OFFactories.getFactory(msg.getVersion()).buildGroupStatsReply(); - rep.setEntries(Lists.newLinkedList(groupStats)); - rep.setXid(reply.getXid()); - executorMsgs.submit(new OFMessageHandler(dpid, rep.build())); - } - break; - case GROUP_DESC: - groupDescStats = publishGroupDescStats(dpid, - (OFGroupDescStatsReply) reply); - if (groupDescStats != null) { - OFGroupDescStatsReply.Builder rep = - OFFactories.getFactory(msg.getVersion()).buildGroupDescStatsReply(); - rep.setEntries(Lists.newLinkedList(groupDescStats)); - rep.setXid(reply.getXid()); - executorMsgs.submit(new OFMessageHandler(dpid, rep.build())); - } - break; - case PORT: - executorMsgs.submit(new OFMessageHandler(dpid, reply)); - break; - case METER: - executorMsgs.submit(new OFMessageHandler(dpid, reply)); - break; - case EXPERIMENTER: - if (reply instanceof OFCalientFlowStatsReply) { - // Convert Calient flow statistics to regular flow stats - // TODO: parse remaining fields such as power levels etc. when we have proper monitoring API - OFFlowStatsReply.Builder fsr = getSwitch(dpid).factory().buildFlowStatsReply(); - List<OFFlowStatsEntry> entries = new LinkedList<>(); - for (OFCalientFlowStatsEntry entry : ((OFCalientFlowStatsReply) msg).getEntries()) { - - // Single instruction, i.e., output to port - OFActionOutput action = OFFactories - .getFactory(msg.getVersion()) - .actions() - .buildOutput() - .setPort(entry.getOutPort()) - .build(); - OFInstruction instruction = OFFactories - .getFactory(msg.getVersion()) - .instructions() - .applyActions(Collections.singletonList(action)); - OFFlowStatsEntry fs = getSwitch(dpid).factory().buildFlowStatsEntry() - .setMatch(entry.getMatch()) - .setTableId(entry.getTableId()) - .setDurationSec(entry.getDurationSec()) - .setDurationNsec(entry.getDurationNsec()) - .setPriority(entry.getPriority()) - .setIdleTimeout(entry.getIdleTimeout()) - .setHardTimeout(entry.getHardTimeout()) - .setFlags(entry.getFlags()) - .setCookie(entry.getCookie()) - .setInstructions(Collections.singletonList(instruction)) - .build(); - entries.add(fs); - } - fsr.setEntries(entries); - - flowStats = publishFlowStats(dpid, fsr.build()); - if (flowStats != null) { - OFFlowStatsReply.Builder rep = - OFFactories.getFactory(msg.getVersion()).buildFlowStatsReply(); - rep.setEntries(Lists.newLinkedList(flowStats)); - executorMsgs.submit(new OFMessageHandler(dpid, rep.build())); - } - } else { - executorMsgs.submit(new OFMessageHandler(dpid, reply)); - } - break; - default: - log.warn("Discarding unknown stats reply type {}", reply.getStatsType()); - break; - } - break; - case BARRIER_REPLY: - executorBarrier.submit(new OFMessageHandler(dpid, msg)); - break; - case EXPERIMENTER: - long experimenter = ((OFExperimenter) msg).getExperimenter(); - if (experimenter == 0x748771) { - // LINC-OE port stats - OFCircuitPortStatus circuitPortStatus = (OFCircuitPortStatus) msg; - OFPortStatus.Builder portStatus = this.getSwitch(dpid).factory().buildPortStatus(); - OFPortDesc.Builder portDesc = this.getSwitch(dpid).factory().buildPortDesc(); - portDesc.setPortNo(circuitPortStatus.getPortNo()) - .setHwAddr(circuitPortStatus.getHwAddr()) - .setName(circuitPortStatus.getName()) - .setConfig(circuitPortStatus.getConfig()) - .setState(circuitPortStatus.getState()); - portStatus.setReason(circuitPortStatus.getReason()).setDesc(portDesc.build()); - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.portChanged(dpid, portStatus.build()); - } - } else { - log.warn("Handling experimenter type {} not yet implemented", - ((OFExperimenter) msg).getExperimenter(), msg); - } - break; - default: - log.warn("Handling message type {} not yet implemented {}", - msg.getType(), msg); - } - } - - private synchronized Collection<OFFlowStatsEntry> publishFlowStats(Dpid dpid, - OFFlowStatsReply reply) { - //TODO: Get rid of synchronized - fullFlowStats.putAll(dpid, reply.getEntries()); - if (!reply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - return fullFlowStats.removeAll(dpid); - } - return null; - } - - private synchronized Collection<OFTableStatsEntry> publishTableStats(Dpid dpid, - OFTableStatsReply reply) { - //TODO: Get rid of synchronized - fullTableStats.putAll(dpid, reply.getEntries()); - if (!reply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - return fullTableStats.removeAll(dpid); - } - return null; - } - - private synchronized Collection<OFGroupStatsEntry> publishGroupStats(Dpid dpid, - OFGroupStatsReply reply) { - //TODO: Get rid of synchronized - fullGroupStats.putAll(dpid, reply.getEntries()); - if (!reply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - return fullGroupStats.removeAll(dpid); - } - return null; - } - - private synchronized Collection<OFGroupDescStatsEntry> publishGroupDescStats(Dpid dpid, - OFGroupDescStatsReply reply) { - //TODO: Get rid of synchronized - fullGroupDescStats.putAll(dpid, reply.getEntries()); - if (!reply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - return fullGroupDescStats.removeAll(dpid); - } - return null; - } - - private synchronized Collection<OFPortStatsEntry> publishPortStats(Dpid dpid, - OFPortStatsReply reply) { - fullPortStats.putAll(dpid, reply.getEntries()); - if (!reply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { - return fullPortStats.removeAll(dpid); - } - return null; - } - - @Override - public void setRole(Dpid dpid, RoleState role) { - final OpenFlowSwitch sw = getSwitch(dpid); - if (sw == null) { - log.debug("Switch not connected. Ignoring setRole({}, {})", dpid, role); - return; - } - sw.setRole(role); - } - - /** - * Implementation of an OpenFlow Agent which is responsible for - * keeping track of connected switches and the state in which - * they are. - */ - public class OpenFlowSwitchAgent implements OpenFlowAgent { - - private final Logger log = LoggerFactory.getLogger(OpenFlowSwitchAgent.class); - private final Lock switchLock = new ReentrantLock(); - - @Override - public boolean addConnectedSwitch(Dpid dpid, OpenFlowSwitch sw) { - - if (connectedSwitches.get(dpid) != null) { - log.error("Trying to add connectedSwitch but found a previous " - + "value for dpid: {}", dpid); - return false; - } else { - log.info("Added switch {}", dpid); - connectedSwitches.put(dpid, sw); - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.switchAdded(dpid); - } - return true; - } - } - - @Override - public boolean validActivation(Dpid dpid) { - if (connectedSwitches.get(dpid) == null) { - log.error("Trying to activate switch but is not in " - + "connected switches: dpid {}. Aborting ..", - dpid); - return false; - } - if (activeMasterSwitches.get(dpid) != null || - activeEqualSwitches.get(dpid) != null) { - log.error("Trying to activate switch but it is already " - + "activated: dpid {}. Found in activeMaster: {} " - + "Found in activeEqual: {}. Aborting ..", - dpid, - (activeMasterSwitches.get(dpid) == null) ? 'N' : 'Y', - (activeEqualSwitches.get(dpid) == null) ? 'N' : 'Y'); - return false; - } - return true; - } - - - @Override - public boolean addActivatedMasterSwitch(Dpid dpid, OpenFlowSwitch sw) { - switchLock.lock(); - try { - if (!validActivation(dpid)) { - return false; - } - activeMasterSwitches.put(dpid, sw); - return true; - } finally { - switchLock.unlock(); - } - } - - @Override - public boolean addActivatedEqualSwitch(Dpid dpid, OpenFlowSwitch sw) { - switchLock.lock(); - try { - if (!validActivation(dpid)) { - return false; - } - activeEqualSwitches.put(dpid, sw); - log.info("Added Activated EQUAL Switch {}", dpid); - return true; - } finally { - switchLock.unlock(); - } - } - - @Override - public void transitionToMasterSwitch(Dpid dpid) { - switchLock.lock(); - try { - if (activeMasterSwitches.containsKey(dpid)) { - return; - } - OpenFlowSwitch sw = activeEqualSwitches.remove(dpid); - if (sw == null) { - sw = getSwitch(dpid); - if (sw == null) { - log.error("Transition to master called on sw {}, but switch " - + "was not found in controller-cache", dpid); - return; - } - } - log.info("Transitioned switch {} to MASTER", dpid); - activeMasterSwitches.put(dpid, sw); - } finally { - switchLock.unlock(); - } - } - - - @Override - public void transitionToEqualSwitch(Dpid dpid) { - switchLock.lock(); - try { - if (activeEqualSwitches.containsKey(dpid)) { - return; - } - OpenFlowSwitch sw = activeMasterSwitches.remove(dpid); - if (sw == null) { - sw = getSwitch(dpid); - if (sw == null) { - log.error("Transition to equal called on sw {}, but switch " - + "was not found in controller-cache", dpid); - return; - } - } - log.info("Transitioned switch {} to EQUAL", dpid); - activeEqualSwitches.put(dpid, sw); - } finally { - switchLock.unlock(); - } - - } - - @Override - public void removeConnectedSwitch(Dpid dpid) { - connectedSwitches.remove(dpid); - OpenFlowSwitch sw = activeMasterSwitches.remove(dpid); - if (sw == null) { - log.debug("sw was null for {}", dpid); - sw = activeEqualSwitches.remove(dpid); - } - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.switchRemoved(dpid); - } - } - - @Override - public void processMessage(Dpid dpid, OFMessage m) { - processPacket(dpid, m); - } - - @Override - public void returnRoleReply(Dpid dpid, RoleState requested, RoleState response) { - for (OpenFlowSwitchListener l : ofSwitchListener) { - l.receivedRoleReply(dpid, requested, response); - } - } - } - - private final class OFMessageHandler implements Runnable { - - private final OFMessage msg; - private final Dpid dpid; - - public OFMessageHandler(Dpid dpid, OFMessage msg) { - this.msg = msg; - this.dpid = dpid; - } - - @Override - public void run() { - for (OpenFlowEventListener listener : ofEventListener) { - listener.handleMessage(dpid, msg); - } - } - - } - -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenflowPipelineFactory.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenflowPipelineFactory.java deleted file mode 100644 index 1467520d..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenflowPipelineFactory.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.openflow.controller.impl; - -import java.util.concurrent.ThreadPoolExecutor; - -import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.Channels; -import org.jboss.netty.handler.execution.ExecutionHandler; -import org.jboss.netty.handler.timeout.IdleStateHandler; -import org.jboss.netty.handler.timeout.ReadTimeoutHandler; -import org.jboss.netty.util.ExternalResourceReleasable; -import org.jboss.netty.util.HashedWheelTimer; -import org.jboss.netty.util.Timer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.net.ssl.SSLEngine; - -/** - * Creates a ChannelPipeline for a server-side openflow channel. - */ -public class OpenflowPipelineFactory - implements ChannelPipelineFactory, ExternalResourceReleasable { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - private final SSLEngine sslEngine; - protected Controller controller; - protected ThreadPoolExecutor pipelineExecutor; - protected Timer timer; - protected IdleStateHandler idleHandler; - protected ReadTimeoutHandler readTimeoutHandler; - - public OpenflowPipelineFactory(Controller controller, - ThreadPoolExecutor pipelineExecutor, - SSLEngine sslEngine) { - super(); - this.controller = controller; - this.pipelineExecutor = pipelineExecutor; - this.timer = new HashedWheelTimer(); - this.idleHandler = new IdleStateHandler(timer, 20, 25, 0); - this.readTimeoutHandler = new ReadTimeoutHandler(timer, 30); - this.sslEngine = sslEngine; - } - - @Override - public ChannelPipeline getPipeline() throws Exception { - OFChannelHandler handler = new OFChannelHandler(controller); - - ChannelPipeline pipeline = Channels.pipeline(); - if (sslEngine != null) { - log.info("OpenFlow SSL enabled."); - pipeline.addLast("ssl", - new org.jboss.netty.handler.ssl.SslHandler(sslEngine)); - } else { - log.info("OpenFlow SSL disabled"); - } - pipeline.addLast("ofmessagedecoder", new OFMessageDecoder()); - pipeline.addLast("ofmessageencoder", new OFMessageEncoder()); - pipeline.addLast("idle", idleHandler); - pipeline.addLast("timeout", readTimeoutHandler); - // XXX S ONOS: was 15 increased it to fix Issue #296 - pipeline.addLast("handshaketimeout", - new HandshakeTimeoutHandler(handler, timer, 60)); - if (pipelineExecutor != null) { - pipeline.addLast("pipelineExecutor", - new ExecutionHandler(pipelineExecutor)); - } - pipeline.addLast("handler", handler); - return pipeline; - } - - @Override - public void releaseExternalResources() { - timer.stop(); - } -} diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java deleted file mode 100644 index bd4875cf..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java +++ /dev/null @@ -1,406 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.impl; - -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import org.onosproject.openflow.controller.RoleState; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.onosproject.openflow.controller.driver.RoleHandler; -import org.onosproject.openflow.controller.driver.RoleRecvStatus; -import org.onosproject.openflow.controller.driver.RoleReplyInfo; -import org.onosproject.openflow.controller.driver.SwitchStateException; -import org.projectfloodlight.openflow.protocol.OFControllerRole; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFErrorType; -import org.projectfloodlight.openflow.protocol.OFExperimenter; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFNiciraControllerRole; -import org.projectfloodlight.openflow.protocol.OFNiciraControllerRoleReply; -import org.projectfloodlight.openflow.protocol.OFRoleReply; -import org.projectfloodlight.openflow.protocol.OFRoleRequest; -import org.projectfloodlight.openflow.protocol.OFVersion; -import org.projectfloodlight.openflow.protocol.errormsg.OFBadRequestErrorMsg; -import org.projectfloodlight.openflow.protocol.errormsg.OFRoleRequestFailedErrorMsg; -import org.projectfloodlight.openflow.types.U64; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.concurrent.TimeUnit; - - -/** - * A utility class to handle role requests and replies for this channel. - * After a role request is submitted the role changer keeps track of the - * pending request, collects the reply (if any) and times out the request - * if necessary. - */ -class RoleManager implements RoleHandler { - protected static final long NICIRA_EXPERIMENTER = 0x2320; - - private static Logger log = LoggerFactory.getLogger(RoleManager.class); - - // The time until cached XID is evicted. Arbitrary for now. - private final int pendingXidTimeoutSeconds = 60; - - // The cache for pending expected RoleReplies keyed on expected XID - private Cache<Integer, RoleState> pendingReplies = - CacheBuilder.newBuilder() - .expireAfterWrite(pendingXidTimeoutSeconds, TimeUnit.SECONDS) - .build(); - - // the expectation set by the caller for the returned role - private RoleRecvStatus expectation; - private final OpenFlowSwitchDriver sw; - - - public RoleManager(OpenFlowSwitchDriver sw) { - this.expectation = RoleRecvStatus.MATCHED_CURRENT_ROLE; - this.sw = sw; - } - - /** - * Send NX role request message to the switch requesting the specified - * role. - * - * @param role role to request - */ - private int sendNxRoleRequest(RoleState role) throws IOException { - // Convert the role enum to the appropriate role to send - OFNiciraControllerRole roleToSend = OFNiciraControllerRole.ROLE_OTHER; - switch (role) { - case MASTER: - roleToSend = OFNiciraControllerRole.ROLE_MASTER; - break; - case SLAVE: - case EQUAL: - default: - // ensuring that the only two roles sent to 1.0 switches with - // Nicira role support, are MASTER and SLAVE - roleToSend = OFNiciraControllerRole.ROLE_OTHER; - log.debug("Sending Nx Role.SLAVE to switch {}.", sw); - } - int xid = sw.getNextTransactionId(); - OFExperimenter roleRequest = OFFactories.getFactory(OFVersion.OF_10) - .buildNiciraControllerRoleRequest() - .setXid(xid) - .setRole(roleToSend) - .build(); - sw.sendRoleRequest(roleRequest); - return xid; - } - - private int sendOF13RoleRequest(RoleState role) throws IOException { - // Convert the role enum to the appropriate role to send - OFControllerRole roleToSend = OFControllerRole.ROLE_NOCHANGE; - switch (role) { - case EQUAL: - roleToSend = OFControllerRole.ROLE_EQUAL; - break; - case MASTER: - roleToSend = OFControllerRole.ROLE_MASTER; - break; - case SLAVE: - roleToSend = OFControllerRole.ROLE_SLAVE; - break; - default: - log.warn("Sending default role.noChange to switch {}." - + " Should only be used for queries.", sw); - } - - int xid = sw.getNextTransactionId(); - OFRoleRequest rrm = OFFactories.getFactory(OFVersion.OF_13) - .buildRoleRequest() - .setRole(roleToSend) - .setXid(xid) - //FIXME fix below when we actually use generation ids - .setGenerationId(U64.ZERO) - .build(); - - sw.sendRoleRequest(rrm); - return xid; - } - - @Override - public synchronized boolean sendRoleRequest(RoleState role, RoleRecvStatus exp) - throws IOException { - this.expectation = exp; - - if (sw.factory().getVersion() == OFVersion.OF_10) { - Boolean supportsNxRole = sw.supportNxRole(); - if (!supportsNxRole) { - log.debug("Switch driver indicates no support for Nicira " - + "role request messages. Not sending ..."); - handleUnsentRoleMessage(role, - expectation); - return false; - } - // OF1.0 switch with support for NX_ROLE_REQUEST vendor extn. - // make Role.EQUAL become Role.SLAVE - RoleState roleToSend = (role == RoleState.EQUAL) ? RoleState.SLAVE : role; - pendingReplies.put(sendNxRoleRequest(roleToSend), role); - } else { - // OF1.3 switch, use OFPT_ROLE_REQUEST message - pendingReplies.put(sendOF13RoleRequest(role), role); - } - return true; - } - - private void handleUnsentRoleMessage(RoleState role, - RoleRecvStatus exp) throws IOException { - // typically this is triggered for a switch where role messages - // are not supported - we confirm that the role being set is - // master - if (exp != RoleRecvStatus.MATCHED_SET_ROLE) { - - log.error("Expected MASTER role from registry for switch " - + "which has no support for role-messages." - + "Received {}. It is possible that this switch " - + "is connected to other controllers, in which " - + "case it should support role messages - not " - + "moving forward.", role); - - } - - } - - - @Override - public synchronized RoleRecvStatus deliverRoleReply(RoleReplyInfo rri) - throws SwitchStateException { - int xid = (int) rri.getXid(); - RoleState receivedRole = rri.getRole(); - RoleState expectedRole = pendingReplies.getIfPresent(xid); - - if (expectedRole == null) { - RoleState currentRole = (sw != null) ? sw.getRole() : null; - if (currentRole != null) { - if (currentRole == rri.getRole()) { - // Don't disconnect if the role reply we received is - // for the same role we are already in. - // FIXME: but we do from the caller anyways. - log.debug("Received unexpected RoleReply from " - + "Switch: {}. " - + "Role in reply is same as current role of this " - + "controller for this sw. Ignoring ...", - sw.getStringId()); - return RoleRecvStatus.OTHER_EXPECTATION; - } else { - String msg = String.format("Switch: [%s], " - + "received unexpected RoleReply[%s]. " - + "No roles are pending, and this controller's " - + "current role:[%s] does not match reply. " - + "Disconnecting switch ... ", - sw.getStringId(), - rri, currentRole); - throw new SwitchStateException(msg); - } - } - log.debug("Received unexpected RoleReply {} from " - + "Switch: {}. " - + "This controller has no current role for this sw. " - + "Ignoring ...", - rri, - sw == null ? "(null)" : sw.getStringId()); - return RoleRecvStatus.OTHER_EXPECTATION; - } - - // XXX Should check generation id meaningfully and other cases of expectations - //if (pendingXid != xid) { - // log.info("Received older role reply from " + - // "switch {} ({}). Ignoring. " + - // "Waiting for {}, xid={}", - // new Object[] {sw.getStringId(), rri, - // pendingRole, pendingXid }); - // return RoleRecvStatus.OLD_REPLY; - //} - sw.returnRoleReply(expectedRole, receivedRole); - - if (expectedRole == receivedRole) { - log.debug("Received role reply message from {} that matched " - + "expected role-reply {} with expectations {}", - sw.getStringId(), receivedRole, expectation); - - // Done with this RoleReply; Invalidate - pendingReplies.invalidate(xid); - if (expectation == RoleRecvStatus.MATCHED_CURRENT_ROLE || - expectation == RoleRecvStatus.MATCHED_SET_ROLE) { - return expectation; - } else { - return RoleRecvStatus.OTHER_EXPECTATION; - } - } - - pendingReplies.invalidate(xid); - // if xids match but role's don't, perhaps its a query (OF1.3) - if (expectation == RoleRecvStatus.REPLY_QUERY) { - return expectation; - } - - return RoleRecvStatus.OTHER_EXPECTATION; - } - - /** - * Called if we receive an error message. If the xid matches the - * pending request we handle it otherwise we ignore it. - * - * Note: since we only keep the last pending request we might get - * error messages for earlier role requests that we won't be able - * to handle - */ - @Override - public synchronized RoleRecvStatus deliverError(OFErrorMsg error) - throws SwitchStateException { - RoleState errorRole = pendingReplies.getIfPresent(error.getXid()); - if (errorRole == null) { - if (error.getErrType() == OFErrorType.ROLE_REQUEST_FAILED) { - log.debug("Received an error msg from sw {} for a role request," - + " but not for pending request in role-changer; " - + " ignoring error {} ...", - sw.getStringId(), error); - } else { - log.debug("Received an error msg from sw {}, but no pending " - + "requests in role-changer; not handling ...", - sw.getStringId()); - } - return RoleRecvStatus.OTHER_EXPECTATION; - } - // it is an error related to a currently pending role request message - if (error.getErrType() == OFErrorType.BAD_REQUEST) { - log.error("Received a error msg {} from sw {} for " - + "pending role request {}. Switch driver indicates " - + "role-messaging is supported. Possible issues in " - + "switch driver configuration?", - ((OFBadRequestErrorMsg) error).toString(), - sw.getStringId(), - errorRole); - return RoleRecvStatus.UNSUPPORTED; - } - - if (error.getErrType() == OFErrorType.ROLE_REQUEST_FAILED) { - OFRoleRequestFailedErrorMsg rrerr = - (OFRoleRequestFailedErrorMsg) error; - switch (rrerr.getCode()) { - case BAD_ROLE: - // switch says that current-role-req has bad role? - // for now we disconnect - // fall-thru - case STALE: - // switch says that current-role-req has stale gen-id? - // for now we disconnect - // fall-thru - case UNSUP: - // switch says that current-role-req has role that - // cannot be supported? for now we disconnect - String msgx = String.format("Switch: [%s], " - + "received Error to for pending role request [%s]. " - + "Error:[%s]. Disconnecting switch ... ", - sw.getStringId(), - errorRole, rrerr); - throw new SwitchStateException(msgx); - default: - break; - } - } - - // This error message was for a role request message but we dont know - // how to handle errors for nicira role request messages - return RoleRecvStatus.OTHER_EXPECTATION; - } - - /** - * Extract the role from an OFVendor message. - * - * Extract the role from an OFVendor message if the message is a - * Nicira role reply. Otherwise return null. - * - * @param experimenterMsg message - * @return The role in the message if the message is a Nicira role - * reply, null otherwise. - * @throws SwitchStateException If the message is a Nicira role reply - * but the numeric role value is unknown. - */ - @Override - public RoleState extractNiciraRoleReply(OFExperimenter experimenterMsg) - throws SwitchStateException { - int vendor = (int) experimenterMsg.getExperimenter(); - if (vendor != 0x2320) { - return null; - } - OFNiciraControllerRoleReply nrr = - (OFNiciraControllerRoleReply) experimenterMsg; - - RoleState role = null; - OFNiciraControllerRole ncr = nrr.getRole(); - switch (ncr) { - case ROLE_MASTER: - role = RoleState.MASTER; - break; - case ROLE_OTHER: - role = RoleState.EQUAL; - break; - case ROLE_SLAVE: - role = RoleState.SLAVE; - break; - default: //handled below - } - - if (role == null) { - String msg = String.format("Switch: [%s], " - + "received NX_ROLE_REPLY with invalid role " - + "value %s", - sw.getStringId(), - nrr.getRole()); - throw new SwitchStateException(msg); - } - return role; - } - - /** - * Extract the role information from an OF1.3 Role Reply Message. - * - * @param rrmsg the role message - * @return RoleReplyInfo object - * @throws SwitchStateException if the role information could not be extracted. - */ - @Override - public RoleReplyInfo extractOFRoleReply(OFRoleReply rrmsg) - throws SwitchStateException { - OFControllerRole cr = rrmsg.getRole(); - RoleState role = null; - switch (cr) { - case ROLE_EQUAL: - role = RoleState.EQUAL; - break; - case ROLE_MASTER: - role = RoleState.MASTER; - break; - case ROLE_SLAVE: - role = RoleState.SLAVE; - break; - case ROLE_NOCHANGE: // switch should send current role - default: - String msg = String.format("Unknown controller role %s " - + "received from switch %s", cr, sw); - throw new SwitchStateException(msg); - } - - return new RoleReplyInfo(role, rrmsg.getGenerationId(), rrmsg.getXid()); - } - -} - diff --git a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/package-info.java b/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/package-info.java deleted file mode 100644 index a5d9f274..00000000 --- a/framework/src/onos/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OpenFlow controller IO subsystem. - */ -package org.onosproject.openflow.controller.impl; diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelAdapter.java deleted file mode 100644 index 75260a1d..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelAdapter.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow; - -import java.net.SocketAddress; - -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelConfig; -import org.jboss.netty.channel.ChannelFactory; -import org.jboss.netty.channel.ChannelFuture; -import org.jboss.netty.channel.ChannelPipeline; - -/** - * Adapter for testing against a netty channel. - */ -public class ChannelAdapter implements Channel { - @Override - public Integer getId() { - return null; - } - - @Override - public ChannelFactory getFactory() { - return null; - } - - @Override - public Channel getParent() { - return null; - } - - @Override - public ChannelConfig getConfig() { - return null; - } - - @Override - public ChannelPipeline getPipeline() { - return null; - } - - @Override - public boolean isOpen() { - return false; - } - - @Override - public boolean isBound() { - return false; - } - - @Override - public boolean isConnected() { - return false; - } - - @Override - public SocketAddress getLocalAddress() { - return null; - } - - @Override - public SocketAddress getRemoteAddress() { - return null; - } - - @Override - public ChannelFuture write(Object o) { - return null; - } - - @Override - public ChannelFuture write(Object o, SocketAddress socketAddress) { - return null; - } - - @Override - public ChannelFuture bind(SocketAddress socketAddress) { - return null; - } - - @Override - public ChannelFuture connect(SocketAddress socketAddress) { - return null; - } - - @Override - public ChannelFuture disconnect() { - return null; - } - - @Override - public ChannelFuture unbind() { - return null; - } - - @Override - public ChannelFuture close() { - return null; - } - - @Override - public ChannelFuture getCloseFuture() { - return null; - } - - @Override - public int getInterestOps() { - return 0; - } - - @Override - public boolean isReadable() { - return false; - } - - @Override - public boolean isWritable() { - return false; - } - - @Override - public ChannelFuture setInterestOps(int i) { - return null; - } - - @Override - public ChannelFuture setReadable(boolean b) { - return null; - } - - @Override - public Object getAttachment() { - return null; - } - - @Override - public void setAttachment(Object o) { - - } - - @Override - public int compareTo(Channel o) { - return 0; - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelHandlerContextAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelHandlerContextAdapter.java deleted file mode 100644 index 5b6c2a36..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelHandlerContextAdapter.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow; - -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelEvent; -import org.jboss.netty.channel.ChannelHandler; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipeline; - -/** - * Adapter for testing against a netty channel handler context. - */ -public class ChannelHandlerContextAdapter implements ChannelHandlerContext { - @Override - public Channel getChannel() { - return null; - } - - @Override - public ChannelPipeline getPipeline() { - return null; - } - - @Override - public String getName() { - return null; - } - - @Override - public ChannelHandler getHandler() { - return null; - } - - @Override - public boolean canHandleUpstream() { - return false; - } - - @Override - public boolean canHandleDownstream() { - return false; - } - - @Override - public void sendUpstream(ChannelEvent channelEvent) { - - } - - @Override - public void sendDownstream(ChannelEvent channelEvent) { - - } - - @Override - public Object getAttachment() { - return null; - } - - @Override - public void setAttachment(Object o) { - - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverAdapter.java deleted file mode 100644 index 57becf94..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverAdapter.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.net.driver.Behaviour; -import org.onosproject.net.driver.Driver; -import org.onosproject.net.driver.DriverData; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; - -/** - * Created by ray on 11/4/15. - */ -public class DriverAdapter implements Driver { - @Override - public String name() { - return null; - } - - @Override - public Driver parent() { - return null; - } - - @Override - public String manufacturer() { - return null; - } - - @Override - public String hwVersion() { - return null; - } - - @Override - public String swVersion() { - return null; - } - - @Override - public Set<Class<? extends Behaviour>> behaviours() { - return null; - } - - @Override - public Class<? extends Behaviour> implementation(Class<? extends Behaviour> behaviour) { - return null; - } - - @Override - public boolean hasBehaviour(Class<? extends Behaviour> behaviourClass) { - return true; - } - - @Override - public <T extends Behaviour> T createBehaviour(DriverData data, Class<T> behaviourClass) { - return null; - } - - @SuppressWarnings("unchecked") - @Override - public <T extends Behaviour> T createBehaviour(DriverHandler handler, Class<T> behaviourClass) { - if (behaviourClass == OpenFlowSwitchDriver.class) { - return (T) new OpenflowSwitchDriverAdapter(); - } - return null; - } - - @Override - public Map<String, String> properties() { - return null; - } - - @Override - public Driver merge(Driver other) { - return null; - } - - @Override - public Set<String> keys() { - return null; - } - - @Override - public String value(String key) { - return null; - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverServiceAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverServiceAdapter.java deleted file mode 100644 index 25596ada..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/DriverServiceAdapter.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow; - -import java.util.Set; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.driver.Behaviour; -import org.onosproject.net.driver.Driver; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.driver.DriverService; - -/** - * Created by ray on 11/4/15. - */ -public class DriverServiceAdapter implements DriverService { - @Override - public Set<Driver> getDrivers() { - return null; - } - - @Override - public Set<Driver> getDrivers(Class<? extends Behaviour> withBehaviour) { - return null; - } - - @Override - public Driver getDriver(String mfr, String hw, String sw) { - return null; - } - - @Override - public Driver getDriver(DeviceId deviceId) { - return null; - } - - @Override - public DriverHandler createHandler(DeviceId deviceId, String... credentials) { - return null; - } - - @Override - public Driver getDriver(String driverName) { - return null; - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OFDescStatsReplyAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OFDescStatsReplyAdapter.java deleted file mode 100644 index 1e866413..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OFDescStatsReplyAdapter.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow; - -import java.util.Set; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFStatsReplyFlags; -import org.projectfloodlight.openflow.protocol.OFStatsType; -import org.projectfloodlight.openflow.protocol.OFType; -import org.projectfloodlight.openflow.protocol.OFVersion; - -import com.google.common.hash.PrimitiveSink; - -/** - * Created by ray on 11/4/15. - */ -public class OFDescStatsReplyAdapter implements OFDescStatsReply { - @Override - public OFVersion getVersion() { - return null; - } - - @Override - public OFType getType() { - return null; - } - - @Override - public long getXid() { - return 0; - } - - @Override - public OFStatsType getStatsType() { - return null; - } - - @Override - public Set<OFStatsReplyFlags> getFlags() { - return null; - } - - @Override - public String getMfrDesc() { - return null; - } - - @Override - public String getHwDesc() { - return null; - } - - @Override - public String getSwDesc() { - return null; - } - - @Override - public String getSerialNum() { - return null; - } - - @Override - public String getDpDesc() { - return null; - } - - @Override - public void writeTo(ChannelBuffer channelBuffer) { - - } - - @Override - public Builder createBuilder() { - return null; - } - - @Override - public void putTo(PrimitiveSink sink) { - - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OfMessageAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OfMessageAdapter.java deleted file mode 100644 index e9b38e3a..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OfMessageAdapter.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFType; -import org.projectfloodlight.openflow.protocol.OFVersion; - -import com.google.common.hash.PrimitiveSink; - -/** - * Adapter for testing against an OpenFlow message. - */ -public class OfMessageAdapter implements OFMessage { - @Override - public OFVersion getVersion() { - return null; - } - - @Override - public OFType getType() { - return null; - } - - @Override - public long getXid() { - return 0; - } - - @Override - public void writeTo(ChannelBuffer channelBuffer) { } - - @Override - public Builder createBuilder() { - return null; - } - - @Override - public void putTo(PrimitiveSink sink) { } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java deleted file mode 100644 index 9b899a67..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow; - -import java.util.List; - -import org.jboss.netty.channel.Channel; -import org.onosproject.net.Device; -import org.onosproject.net.driver.DriverData; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.RoleState; -import org.onosproject.openflow.controller.driver.OpenFlowAgent; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.onosproject.openflow.controller.driver.RoleHandler; -import org.onosproject.openflow.controller.driver.SwitchStateException; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFErrorMsg; -import org.projectfloodlight.openflow.protocol.OFFactories; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.OFFeaturesReply; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFPortDesc; -import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFVersion; - -/** - * Testing adapter for the OpenFlow switch driver class. - */ -public class OpenflowSwitchDriverAdapter implements OpenFlowSwitchDriver { - - RoleState role = RoleState.MASTER; - - @Override - public void setAgent(OpenFlowAgent agent) { - - } - - @Override - public void setRoleHandler(RoleHandler roleHandler) { - - } - - @Override - public void reassertRole() { - - } - - @Override - public boolean handleRoleError(OFErrorMsg error) { - return false; - } - - @Override - public void handleNiciraRole(OFMessage m) throws SwitchStateException { - - } - - @Override - public void handleRole(OFMessage m) throws SwitchStateException { - - } - - @Override - public boolean connectSwitch() { - return false; - } - - @Override - public boolean activateMasterSwitch() { - return false; - } - - @Override - public boolean activateEqualSwitch() { - return false; - } - - @Override - public void transitionToEqualSwitch() { - - } - - @Override - public void transitionToMasterSwitch() { - - } - - @Override - public void removeConnectedSwitch() { - - } - - @Override - public void setPortDescReply(OFPortDescStatsReply portDescReply) { - - } - - @Override - public void setPortDescReplies(List<OFPortDescStatsReply> portDescReplies) { - - } - - @Override - public void setFeaturesReply(OFFeaturesReply featuresReply) { - - } - - @Override - public void setSwitchDescription(OFDescStatsReply desc) { - - } - - @Override - public int getNextTransactionId() { - return 0; - } - - @Override - public void setOFVersion(OFVersion ofV) { - - } - - @Override - public void setTableFull(boolean full) { - - } - - @Override - public void setChannel(Channel channel) { - - } - - @Override - public void setConnected(boolean connected) { - - } - - @Override - public void init(Dpid dpid, OFDescStatsReply desc, OFVersion ofv) { - - } - - @Override - public Boolean supportNxRole() { - return true; - } - - @Override - public void startDriverHandshake() { - - } - - @Override - public boolean isDriverHandshakeComplete() { - return false; - } - - @Override - public void processDriverHandshakeMessage(OFMessage m) { - - } - - @Override - public void sendRoleRequest(OFMessage message) { - - } - - @Override - public void sendHandshakeMessage(OFMessage message) { - - } - - @Override - public DriverHandler handler() { - return null; - } - - @Override - public void setHandler(DriverHandler handler) { - - } - - @Override - public DriverData data() { - return null; - } - - @Override - public void setData(DriverData data) { - - } - - @Override - public void sendMsg(OFMessage msg) { - - } - - @Override - public void sendMsg(List<OFMessage> msgs) { - - } - - @Override - public void handleMessage(OFMessage fromSwitch) { - - } - - @Override - public void setRole(RoleState role) { - this.role = role; - } - - @Override - public RoleState getRole() { - return role; - } - - @Override - public List<OFPortDesc> getPorts() { - return null; - } - - @Override - public OFFactory factory() { - // return what-ever triggers requestPending = true - return OFFactories.getFactory(OFVersion.OF_10); - } - - @Override - public String getStringId() { - return "100"; - } - - @Override - public long getId() { - return 0; - } - - @Override - public String manufacturerDescription() { - return null; - } - - @Override - public String datapathDescription() { - return null; - } - - @Override - public String hardwareDescription() { - return null; - } - - @Override - public String softwareDescription() { - return null; - } - - @Override - public String serialNumber() { - return null; - } - - @Override - public boolean isConnected() { - return false; - } - - @Override - public void disconnectSwitch() { - - } - - @Override - public void returnRoleReply(RoleState requested, RoleState response) { - - } - - @Override - public Device.Type deviceType() { - return Device.Type.SWITCH; - } - - @Override - public String channelId() { - return null; - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/ControllerTest.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/ControllerTest.java deleted file mode 100644 index 3ff3bde5..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/ControllerTest.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.impl; - -import java.io.File; -import java.io.IOException; -import java.util.Dictionary; -import java.util.Hashtable; -import java.util.Map; -import java.util.stream.IntStream; - -import org.junit.Before; -import org.junit.Test; -import org.onlab.junit.TestTools; -import org.onlab.util.ItemNotFoundException; -import org.onosproject.net.DeviceId; -import org.onosproject.net.driver.Driver; -import org.onosproject.openflow.DriverAdapter; -import org.onosproject.openflow.DriverServiceAdapter; -import org.onosproject.openflow.OFDescStatsReplyAdapter; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.io.Files; - -import static com.google.common.io.ByteStreams.toByteArray; -import static com.google.common.io.Files.write; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasItem; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.lessThan; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.nullValue; - -/** - * Unit tests for the OpenFlow controller class. - */ -public class ControllerTest { - - Controller controller; - protected static final Logger log = LoggerFactory.getLogger(ControllerTest.class); - - static final File TEST_DIR = Files.createTempDir(); - - /* - * Writes the necessary file for the tests in the temporary directory - */ - static File stageTestResource(String name) throws IOException { - File file = new File(TEST_DIR, name); - byte[] bytes = toByteArray(ControllerTest.class.getResourceAsStream(name)); - write(bytes, file); - return file; - } - - class MockDriverService extends DriverServiceAdapter { - static final int NO_SUCH_DRIVER_ID = 1; - static final int ITEM_NOT_FOUND_DRIVER_ID = 2; - static final int DRIVER_EXISTS_ID = 3; - - static final String BASE_DRIVER_NAME = "of:000000000000000"; - - static final String NO_SUCH_DRIVER = BASE_DRIVER_NAME - + NO_SUCH_DRIVER_ID; - static final String ITEM_NOT_FOUND_DRIVER = BASE_DRIVER_NAME - + ITEM_NOT_FOUND_DRIVER_ID; - static final String DRIVER_EXISTS = BASE_DRIVER_NAME - + DRIVER_EXISTS_ID; - - @Override - public Driver getDriver(DeviceId deviceId) { - switch (deviceId.toString()) { - case NO_SUCH_DRIVER: - return null; - case ITEM_NOT_FOUND_DRIVER: - throw new ItemNotFoundException(); - case DRIVER_EXISTS: - return new DriverAdapter(); - default: - throw new AssertionError(); - } - } - } - - /** - * Creates and initializes a new controller. - */ - @Before - public void setUp() { - controller = new Controller(); - Dictionary<String, String> properties = new Hashtable<>(); - properties.put("openflowPorts", - Integer.toString(TestTools.findAvailablePort(0))); - controller.setConfigParams(properties); - } - - /** - * Tests fetching a driver that does not exist. - */ - @Test - public void switchInstanceNotFoundTest() { - controller.start(null, new MockDriverService()); - OpenFlowSwitchDriver driver = - controller.getOFSwitchInstance(MockDriverService.NO_SUCH_DRIVER_ID, - null, - null); - assertThat(driver, nullValue()); - controller.stop(); - } - - /** - * Tests fetching a driver that throws an ItemNotFoundException. - */ - @Test - public void switchItemNotFoundTest() { - controller.start(null, new MockDriverService()); - OFDescStatsReply stats = - new OFDescStatsReplyAdapter(); - OpenFlowSwitchDriver driver = - controller.getOFSwitchInstance(MockDriverService.ITEM_NOT_FOUND_DRIVER_ID, - stats, - null); - assertThat(driver, nullValue()); - controller.stop(); - } - - /** - * Tests fetching a driver that throws an ItemNotFoundException. - */ - @Test - public void driverExistsTest() { - controller.start(null, new MockDriverService()); - OFDescStatsReply stats = - new OFDescStatsReplyAdapter(); - OpenFlowSwitchDriver driver = - controller.getOFSwitchInstance(MockDriverService.DRIVER_EXISTS_ID, - stats, - null); - assertThat(driver, notNullValue()); - controller.stop(); - } - - /** - * Tests configuring the controller. - */ - @Test - public void testConfiguration() { - Dictionary<String, String> properties = new Hashtable<>(); - properties.put("openflowPorts", "1,2,3,4,5"); - properties.put("workerThreads", "5"); - - controller.setConfigParams(properties); - IntStream.rangeClosed(1, 5) - .forEach(i -> assertThat(controller.openFlowPorts, hasItem(i))); - assertThat(controller.workerThreads, is(5)); - } - - /** - * Tests the SSL/TLS methods in the controller. - */ - @Test - public void testSsl() throws IOException { - File keystore = stageTestResource("ControllerTestKeystore.jks"); - String keystoreName = keystore.getAbsolutePath(); - - System.setProperty("enableOFTLS", Boolean.toString(Boolean.TRUE)); - System.setProperty("javax.net.ssl.keyStore", keystoreName); - System.setProperty("javax.net.ssl.trustStore", keystoreName); - System.setProperty("javax.net.ssl.keyStorePassword", "password"); - System.setProperty("javax.net.ssl.trustStorePassword", "password"); - Dictionary<String, String> properties = new Hashtable<>(); - properties.put("openflowPorts", - Integer.toString(TestTools.findAvailablePort(0))); - properties.put("workerThreads", "0"); - - controller.setConfigParams(properties); - controller.start(null, new MockDriverService()); - - assertThat(controller.serverSSLEngine, notNullValue()); - - controller.stop(); - boolean removed = keystore.delete(); - if (!removed) { - log.warn("Could not remove temporary file"); - } - } - - /** - * Tests controll utility health methods. - */ - @Test - public void testHealth() { - Map<String, Long> memory = controller.getMemory(); - assertThat(memory.size(), is(2)); - assertThat(memory.get("total"), is(not(0))); - assertThat(memory.get("free"), is(not(0))); - - long startTime = controller.getSystemStartTime(); - assertThat(startTime, lessThan(System.currentTimeMillis())); - - long upTime = controller.getSystemUptime(); - assertThat(upTime, lessThan(30L * 1000)); - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageDecoderTest.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageDecoderTest.java deleted file mode 100644 index ed1db238..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageDecoderTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.impl; - - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.openflow.ChannelAdapter; -import org.onosproject.openflow.ChannelHandlerContextAdapter; -import org.projectfloodlight.openflow.protocol.OFHello; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.nullValue; - -/** - * Tests for the OpenFlow message decoder. - */ -public class OFMessageDecoderTest { - - static class ConnectedChannel extends ChannelAdapter { - @Override - public boolean isConnected() { - return true; - } - } - - private ChannelBuffer getHelloMessageBuffer() { - // OFHello, OF version 1, xid of 0, total of 8 bytes - byte[] messageData = {0x1, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0}; - ChannelBuffer channelBuffer = ChannelBuffers.dynamicBuffer(); - channelBuffer.writeBytes(messageData); - return channelBuffer; - } - - /** - * Tests decoding a message on a closed channel. - * - * @throws Exception when an exception is thrown from the decoder - */ - @Test - public void testDecodeNoChannel() throws Exception { - OFMessageDecoder decoder = new OFMessageDecoder(); - ChannelBuffer channelBuffer = getHelloMessageBuffer(); - Object message = - decoder.decode(new ChannelHandlerContextAdapter(), - new ChannelAdapter(), - channelBuffer); - assertThat(message, nullValue()); - } - - /** - * Tests decoding a message. - * - * @throws Exception when an exception is thrown from the decoder - */ - @Test - public void testDecode() throws Exception { - OFMessageDecoder decoder = new OFMessageDecoder(); - ChannelBuffer channelBuffer = getHelloMessageBuffer(); - Object message = - decoder.decode(new ChannelHandlerContextAdapter(), - new ConnectedChannel(), - channelBuffer); - assertThat(message, notNullValue()); - assertThat(message, instanceOf(OFHello.class)); - } - -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageEncoderTest.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageEncoderTest.java deleted file mode 100644 index 59685f16..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageEncoderTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.impl; - -import java.nio.charset.StandardCharsets; -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.junit.Test; -import org.onosproject.openflow.OfMessageAdapter; -import org.projectfloodlight.openflow.protocol.OFMessage; - -import com.google.common.collect.ImmutableList; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Tests for the OpenFlow message encoder. - */ -public class OFMessageEncoderTest { - - static class MockOfMessage extends OfMessageAdapter { - static int nextId = 1; - final int id; - - MockOfMessage() { - id = nextId++; - } - - @Override - public void writeTo(ChannelBuffer channelBuffer) { - String message = "message" + Integer.toString(id) + " "; - channelBuffer.writeBytes(message.getBytes(StandardCharsets.UTF_8)); - } - } - - /** - * Tests that encoding a non-list returns the object specified. - * - * @throws Exception on exception in the encoder - */ - @Test - public void testNoList() throws Exception { - OFMessageEncoder encoder = new OFMessageEncoder(); - MockOfMessage message = new MockOfMessage(); - OFMessage returnedMessage = - (OFMessage) encoder.encode(null, null, message); - assertThat(message, is(returnedMessage)); - } - - /** - * Tests that encoding a list returns the proper encoded payload. - * - * @throws Exception on exception in the encoder - */ - @Test - public void testList() throws Exception { - OFMessageEncoder encoder = new OFMessageEncoder(); - MockOfMessage message1 = new MockOfMessage(); - MockOfMessage message2 = new MockOfMessage(); - MockOfMessage message3 = new MockOfMessage(); - List<MockOfMessage> messages = ImmutableList.of(message1, message2, message3); - ChannelBuffer returnedChannel = - (ChannelBuffer) encoder.encode(null, null, messages); - assertThat(returnedChannel, notNullValue()); - byte[] channelBytes = returnedChannel.array(); - String expectedListMessage = "message1 message2 message3 "; - String listMessage = - (new String(channelBytes, StandardCharsets.UTF_8)) - .substring(0, expectedListMessage.length()); - assertThat(listMessage, is(expectedListMessage)); - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java deleted file mode 100644 index e079c590..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java +++ /dev/null @@ -1,283 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.impl; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Dictionary; -import java.util.Hashtable; -import java.util.List; -import java.util.Spliterator; -import java.util.Spliterators; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; - -import org.easymock.EasyMock; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.junit.TestTools; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.openflow.OpenflowSwitchDriverAdapter; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.OpenFlowSwitch; -import org.onosproject.openflow.controller.OpenFlowSwitchListener; -import org.onosproject.openflow.controller.RoleState; -import org.osgi.service.component.ComponentContext; -import org.projectfloodlight.openflow.protocol.OFPortStatus; - -import com.google.common.collect.ImmutableSet; - -import static junit.framework.TestCase.fail; -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasItems; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; - -/** - * Unit tests for the open flow controller implementation test. - */ -public class OpenFlowControllerImplTest { - - OpenFlowSwitch switch1; - Dpid dpid1; - OpenFlowSwitch switch2; - Dpid dpid2; - OpenFlowSwitch switch3; - Dpid dpid3; - - OpenFlowControllerImpl controller; - OpenFlowControllerImpl.OpenFlowSwitchAgent agent; - TestSwitchListener switchListener; - - /** - * Test harness for a switch listener. - */ - static class TestSwitchListener implements OpenFlowSwitchListener { - final List<Dpid> removedDpids = new ArrayList<>(); - final List<Dpid> addedDpids = new ArrayList<>(); - final List<Dpid> changedDpids = new ArrayList<>(); - - @Override - public void switchAdded(Dpid dpid) { - addedDpids.add(dpid); - } - - @Override - public void switchRemoved(Dpid dpid) { - removedDpids.add(dpid); - } - - @Override - public void switchChanged(Dpid dpid) { - changedDpids.add(dpid); - } - - @Override - public void portChanged(Dpid dpid, OFPortStatus status) { - // Stub - } - - @Override - public void receivedRoleReply(Dpid dpid, RoleState requested, RoleState response) { - // Stub - } - } - - - /** - * Sets up switches to use as data, mocks and launches a controller instance. - */ - @Before - public void setUp() { - try { - switch1 = new OpenflowSwitchDriverAdapter(); - dpid1 = Dpid.dpid(new URI("of:0000000000000111")); - switch2 = new OpenflowSwitchDriverAdapter(); - dpid2 = Dpid.dpid(new URI("of:0000000000000222")); - switch3 = new OpenflowSwitchDriverAdapter(); - dpid3 = Dpid.dpid(new URI("of:0000000000000333")); - } catch (URISyntaxException ex) { - // Does not happen - fail(); - } - - controller = new OpenFlowControllerImpl(); - agent = controller.agent; - - switchListener = new TestSwitchListener(); - controller.addListener(switchListener); - - ComponentConfigService mockConfigService = - EasyMock.createMock(ComponentConfigService.class); - expect(mockConfigService.getProperties(anyObject())).andReturn(ImmutableSet.of()); - mockConfigService.registerProperties(controller.getClass()); - expectLastCall(); - mockConfigService.unregisterProperties(controller.getClass(), false); - expectLastCall(); - expect(mockConfigService.getProperties(anyObject())).andReturn(ImmutableSet.of()); - controller.cfgService = mockConfigService; - replay(mockConfigService); - - ComponentContext mockContext = EasyMock.createMock(ComponentContext.class); - Dictionary<String, String> properties = new Hashtable<>(); - properties.put("openflowPorts", - Integer.toString(TestTools.findAvailablePort(0))); - expect(mockContext.getProperties()).andReturn(properties); - replay(mockContext); - controller.activate(mockContext); - } - - @After - public void tearDown() { - controller.removeListener(switchListener); - controller.deactivate(); - } - - /** - * Converts an Iterable of some type into a stream of that type. - * - * @param items Iterable of objects - * @param <T> type of the items in the iterable - * @return stream of objects of type T - */ - private <T> Stream<T> makeIntoStream(Iterable<T> items) { - return StreamSupport.stream( - Spliterators.spliteratorUnknownSize( - items.iterator(), Spliterator.ORDERED), false); - } - - - /** - * Tests adding and removing connected switches. - */ - @Test - public void testAddRemoveConnectedSwitch() { - - // test adding connected switches - boolean addSwitch1 = agent.addConnectedSwitch(dpid1, switch1); - assertThat(addSwitch1, is(true)); - boolean addSwitch2 = agent.addConnectedSwitch(dpid2, switch2); - assertThat(addSwitch2, is(true)); - boolean addSwitch3 = agent.addConnectedSwitch(dpid3, switch3); - assertThat(addSwitch3, is(true)); - - // Make sure the listener add callbacks fired - assertThat(switchListener.addedDpids, hasSize(3)); - assertThat(switchListener.addedDpids, hasItems(dpid1, dpid2, dpid3)); - - // Test adding a switch twice - it should fail - boolean addBadSwitch1 = agent.addConnectedSwitch(dpid1, switch1); - assertThat(addBadSwitch1, is(false)); - - assertThat(controller.connectedSwitches.size(), is(3)); - - // test querying the switch list - Stream<OpenFlowSwitch> fetchedSwitches = - makeIntoStream(controller.getSwitches()); - long switchCount = fetchedSwitches.count(); - assertThat(switchCount, is(3L)); - - // test querying the individual switch - OpenFlowSwitch queriedSwitch = controller.getSwitch(dpid1); - assertThat(queriedSwitch, is(switch1)); - - // Remove a switch - agent.removeConnectedSwitch(dpid3); - Stream<OpenFlowSwitch> fetchedSwitchesAfterRemove = - makeIntoStream(controller.getSwitches()); - long switchCountAfterRemove = fetchedSwitchesAfterRemove.count(); - assertThat(switchCountAfterRemove, is(2L)); - - // Make sure the listener delete callbacks fired - assertThat(switchListener.removedDpids, hasSize(1)); - assertThat(switchListener.removedDpids, hasItems(dpid3)); - - // test querying the removed switch - OpenFlowSwitch queriedSwitchAfterRemove = controller.getSwitch(dpid3); - assertThat(queriedSwitchAfterRemove, nullValue()); - } - - /** - * Tests adding master switches. - */ - @Test - public void testMasterSwitch() { - agent.addConnectedSwitch(dpid1, switch1); - agent.transitionToMasterSwitch(dpid1); - - Stream<OpenFlowSwitch> fetchedMasterSwitches = - makeIntoStream(controller.getMasterSwitches()); - assertThat(fetchedMasterSwitches.count(), is(1L)); - Stream<OpenFlowSwitch> fetchedActivatedSwitches = - makeIntoStream(controller.getEqualSwitches()); - assertThat(fetchedActivatedSwitches.count(), is(0L)); - OpenFlowSwitch fetchedSwitch1 = controller.getMasterSwitch(dpid1); - assertThat(fetchedSwitch1, is(switch1)); - - agent.addConnectedSwitch(dpid2, switch2); - boolean addSwitch2 = agent.addActivatedMasterSwitch(dpid2, switch2); - assertThat(addSwitch2, is(true)); - OpenFlowSwitch fetchedSwitch2 = controller.getMasterSwitch(dpid2); - assertThat(fetchedSwitch2, is(switch2)); - } - - /** - * Tests adding equal switches. - */ - @Test - public void testEqualSwitch() { - agent.addConnectedSwitch(dpid1, switch1); - agent.transitionToEqualSwitch(dpid1); - - Stream<OpenFlowSwitch> fetchedEqualSwitches = - makeIntoStream(controller.getEqualSwitches()); - assertThat(fetchedEqualSwitches.count(), is(1L)); - Stream<OpenFlowSwitch> fetchedActivatedSwitches = - makeIntoStream(controller.getMasterSwitches()); - assertThat(fetchedActivatedSwitches.count(), is(0L)); - OpenFlowSwitch fetchedSwitch1 = controller.getEqualSwitch(dpid1); - assertThat(fetchedSwitch1, is(switch1)); - - agent.addConnectedSwitch(dpid2, switch2); - boolean addSwitch2 = agent.addActivatedEqualSwitch(dpid2, switch2); - assertThat(addSwitch2, is(true)); - OpenFlowSwitch fetchedSwitch2 = controller.getEqualSwitch(dpid2); - assertThat(fetchedSwitch2, is(switch2)); - } - - /** - * Tests changing switch role. - */ - @Test - public void testRoleSetting() { - agent.addConnectedSwitch(dpid2, switch2); - - // check that state can be changed for a connected switch - assertThat(switch2.getRole(), is(RoleState.MASTER)); - controller.setRole(dpid2, RoleState.EQUAL); - assertThat(switch2.getRole(), is(RoleState.EQUAL)); - - // check that changing state on an unconnected switch does not crash - controller.setRole(dpid3, RoleState.SLAVE); - } -} diff --git a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/RoleManagerTest.java b/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/RoleManagerTest.java deleted file mode 100644 index 4b594383..00000000 --- a/framework/src/onos/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/RoleManagerTest.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.controller.impl; - -import java.io.IOException; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.openflow.OpenflowSwitchDriverAdapter; -import org.onosproject.openflow.controller.RoleState; -import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver; -import org.onosproject.openflow.controller.driver.RoleRecvStatus; -import org.onosproject.openflow.controller.driver.RoleReplyInfo; -import org.onosproject.openflow.controller.driver.SwitchStateException; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.protocol.OFFeaturesReply; -import org.projectfloodlight.openflow.types.U64; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.openflow.controller.RoleState.MASTER; -import static org.onosproject.openflow.controller.RoleState.SLAVE; -import static org.onosproject.openflow.controller.driver.RoleRecvStatus.MATCHED_CURRENT_ROLE; -import static org.onosproject.openflow.controller.driver.RoleRecvStatus.OTHER_EXPECTATION; - -public class RoleManagerTest { - - private static final U64 GID = U64.of(10L); - private static final long XID = 1L; - - private OpenFlowSwitchDriver sw; - private RoleManager manager; - - @Before - public void setUp() { - sw = new TestSwitchDriver(); - manager = new RoleManager(sw); - } - - @After - public void tearDown() { - manager = null; - sw = null; - } - - @Test - public void deliverRoleReply() { - RoleRecvStatus status; - - RoleReplyInfo asserted = new RoleReplyInfo(MASTER, GID, XID); - RoleReplyInfo unasserted = new RoleReplyInfo(SLAVE, GID, XID); - - try { - //call without sendRoleReq() for requestPending = false - //first, sw.role == null - status = manager.deliverRoleReply(asserted); - assertEquals("expectation wrong", OTHER_EXPECTATION, status); - - sw.setRole(MASTER); - assertEquals("expectation wrong", OTHER_EXPECTATION, status); - sw.setRole(SLAVE); - - //match to pendingRole = MASTER, requestPending = true - manager.sendRoleRequest(MASTER, MATCHED_CURRENT_ROLE); - status = manager.deliverRoleReply(asserted); - assertEquals("expectation wrong", MATCHED_CURRENT_ROLE, status); - - //requestPending never gets reset -- this might be a bug. - status = manager.deliverRoleReply(unasserted); - assertEquals("expectation wrong", OTHER_EXPECTATION, status); - assertEquals("pending role mismatch", MASTER, ((TestSwitchDriver) sw).failed); - - } catch (IOException | SwitchStateException e) { - assertEquals("unexpected error thrown", - SwitchStateException.class, e.getClass()); - } - } - - private class TestSwitchDriver extends OpenflowSwitchDriverAdapter { - - RoleState failed = null; - RoleState current = null; - - @Override - public void setRole(RoleState role) { - current = role; - } - - @Override - public RoleState getRole() { - return current; - } - - @Override - public void setFeaturesReply(OFFeaturesReply featuresReply) { - } - - @Override - public void setSwitchDescription(OFDescStatsReply desc) { - } - - @Override - public int getNextTransactionId() { - return (int) XID; - } - - @Override - public void returnRoleReply(RoleState requested, RoleState response) { - failed = requested; - } - - @Override - public String channelId() { - return "1.2.3.4:1"; - } - } -} diff --git a/framework/src/onos/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFSwitchImplSpringOpenTTPDellOSR.java b/framework/src/onos/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFSwitchImplSpringOpenTTPDellOSR.java deleted file mode 100644 index 783a37e6..00000000 --- a/framework/src/onos/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFSwitchImplSpringOpenTTPDellOSR.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.openflow.drivers; - -import org.onosproject.openflow.controller.Dpid; -import org.projectfloodlight.openflow.protocol.OFDescStatsReply; -import org.projectfloodlight.openflow.types.TableId; - -/** - * OFDescriptionStatistics Vendor (Manufacturer Desc.): Dell Make (Hardware - * Desc.) : OpenFlow 1.3 Reference Userspace Switch Model (Datapath Desc.) : - * None Software : Serial : None. - */ -//TODO: Knock-off this class as we don't need any switch/app specific -//drivers in the south bound layers. -public class OFSwitchImplSpringOpenTTPDellOSR extends OFSwitchImplSpringOpenTTP { - - /* Table IDs to be used for Dell Open Segment Routers*/ - private static final int DELL_TABLE_VLAN = 17; - private static final int DELL_TABLE_TMAC = 18; - private static final int DELL_TABLE_IPV4_UNICAST = 30; - private static final int DELL_TABLE_MPLS = 25; - private static final int DELL_TABLE_ACL = 40; - - public OFSwitchImplSpringOpenTTPDellOSR(Dpid dpid, OFDescStatsReply desc) { - super(dpid, desc); - vlanTableId = DELL_TABLE_VLAN; - tmacTableId = DELL_TABLE_TMAC; - ipv4UnicastTableId = DELL_TABLE_IPV4_UNICAST; - mplsTableId = DELL_TABLE_MPLS; - aclTableId = DELL_TABLE_ACL; - } - - @Override - public TableType getTableType(TableId tid) { - switch (tid.getValue()) { - case DELL_TABLE_IPV4_UNICAST: - return TableType.IP; - case DELL_TABLE_MPLS: - return TableType.MPLS; - case DELL_TABLE_ACL: - return TableType.ACL; - case DELL_TABLE_VLAN: - return TableType.VLAN; - case DELL_TABLE_TMAC: - return TableType.ETHER; - default: - log.error("Table type for Table id {} is not supported in the driver", tid); - return TableType.NONE; - } - } -}
\ No newline at end of file diff --git a/framework/src/onos/openflow/pom.xml b/framework/src/onos/openflow/pom.xml deleted file mode 100644 index 3672e469..00000000 --- a/framework/src/onos/openflow/pom.xml +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Copyright 2014 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-of</artifactId> - <packaging>pom</packaging> - - <description>ONOS OpenFlow Protocol subsystem</description> - - <modules> - <module>api</module> - <module>ctl</module> - </modules> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-misc</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-junit</artifactId> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.11</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-core</artifactId> - <version>1.3</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-library</artifactId> - <version>1.3</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java index 65ff0245..cfd844d3 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java @@ -16,6 +16,7 @@ package org.onosproject.ovsdb.controller; import com.google.common.util.concurrent.ListenableFuture; + import org.onlab.packet.IpAddress; import org.onosproject.net.DeviceId; import org.onosproject.net.behaviour.ControllerInfo; @@ -84,6 +85,15 @@ public interface OvsdbClientService extends OvsdbRPC { void createBridge(String bridgeName); /** + * Creates a bridge. + * + * @param bridgeName bridge name + * @param dpid data path id + * @param exPortName external port name + */ + void createBridge(String bridgeName, String dpid, String exPortName); + + /** * Creates a bridge with given name and dpid. * Sets the bridge's controller with given controllers. * diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java index 3280ad34..c6038632 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java @@ -24,7 +24,9 @@ import com.google.common.collect.Sets; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; + import io.netty.channel.Channel; + import org.onlab.packet.IpAddress; import org.onosproject.net.DeviceId; import org.onosproject.net.behaviour.ControllerInfo; @@ -489,6 +491,76 @@ public class DefaultOvsdbClient } @Override + public void createBridge(String bridgeName, String dpid, String exPortName) { + log.debug("create bridge {}", bridgeName); + + DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); + if (dbSchema == null) { + log.warn("The schema is null"); + return; + } + + Bridge bridge = (Bridge) TableGenerator.createTable(dbSchema, + OvsdbTable.BRIDGE); + if (bridge == null) { + log.debug("Can not create bridge"); + return; + } + + Set<String> failModes = new HashSet<>(); + failModes.add("secure"); + bridge.setFailMode(failModes); + + Set<String> protocols = new HashSet<>(); + protocols.add(OvsdbConstant.OPENFLOW13); + bridge.setProtocols(protocols); + + String ovsUuid = getOvsUuid(OvsdbConstant.DATABASENAME); + if (ovsUuid == null) { + log.warn("The Open_vSwitch is null"); + return; + } + + String bridgeUuid = getBridgeUuid(bridgeName); + if (bridgeUuid == null) { + log.debug("Create a new bridge"); + + bridge.setName(bridgeName); + if (dpid != null) { + Map<String, String> options = new HashMap<>(); + options.put("datapath-id", dpid); + bridge.setOtherConfig(options); + } + bridgeUuid = insertConfig(OvsdbConstant.BRIDGE, "_uuid", + OvsdbConstant.DATABASENAME, "bridges", + ovsUuid, bridge.getRow()); + + if (bridgeUuid != null) { + Port port = (Port) TableGenerator.createTable(dbSchema, + OvsdbTable.PORT); + if (port != null) { + log.debug("the port is not null"); + port.setName(bridgeName); + + insertConfig(OvsdbConstant.PORT, "_uuid", "Bridge", "ports", bridgeUuid, + port.getRow()); + } + } + + } else { + log.info("Update a bridge"); + updateConfig(OvsdbConstant.BRIDGE, "_uuid", bridgeUuid, bridge.getRow()); + } + // Create external port + if (exPortName != null) { + createPort(bridgeName, exPortName); + } + + setControllerAuto(bridgeUuid); + log.info("Create bridge success"); + } + + @Override public boolean createBridge(String bridgeName, String dpid, List<ControllerInfo> controllers) { DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); diff --git a/framework/src/onos/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java b/framework/src/onos/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java index 2c418d57..5d80a7bf 100644 --- a/framework/src/onos/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java +++ b/framework/src/onos/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java @@ -18,6 +18,7 @@ package org.onosproject.ovsdb.controller.driver; import com.fasterxml.jackson.databind.JsonNode; import com.google.common.util.concurrent.ListenableFuture; + import org.onlab.packet.IpAddress; import org.onosproject.net.DeviceId; import org.onosproject.net.behaviour.ControllerInfo; @@ -216,4 +217,9 @@ public class OvsdbClientServiceAdapter implements OvsdbClientService { public ListenableFuture<List<JsonNode>> transact(DatabaseSchema dbSchema, List<Operation> operations) { return null; } + + @Override + public void createBridge(String bridgeName, String dpid, String exPortName) { + + } } diff --git a/framework/src/onos/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java b/framework/src/onos/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java index 2e84a16a..fcbbff8e 100644 --- a/framework/src/onos/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java +++ b/framework/src/onos/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java @@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory; /** * The main controller class. Handles all setup and network listeners - - * Distributed ovsdbClient. + * distributed OVSDBClient. */ public class Controller { protected static final Logger log = LoggerFactory @@ -105,7 +105,7 @@ public class Controller { } /** - * Tells controller that we're ready to accept ovsdb node loop. + * Tells controller that we're ready to accept OVSDB node loop. * @throws InterruptedException if thread is interrupted */ public void run() throws InterruptedException { @@ -114,7 +114,7 @@ public class Controller { } /** - * Adds channel pipiline to handle a new connected node. + * Adds channel pipeline to handle a new connected node. */ private class OnosCommunicationChannelInitializer extends ChannelInitializer<SocketChannel> { @@ -128,7 +128,7 @@ public class Controller { } /** - * Handles the new connection of a node. + * Handles the new connection of node. * * @param channel the channel to use. */ @@ -169,9 +169,9 @@ public class Controller { } /** - * Gets an ovsdb client instance. + * Gets an OVSDB client instance. * - * @param nodeId data ovsdb node id + * @param nodeId data OVSDB node id * @param agent OvsdbAgent * @param monitorCallback Callback * @param channel Channel diff --git a/framework/src/onos/pcep/api/pom.xml b/framework/src/onos/pcep/api/pom.xml deleted file mode 100644 index 4588ad6f..00000000 --- a/framework/src/onos/pcep/api/pom.xml +++ /dev/null @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Copyright 2014 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos-pcep-controller</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-pcep-controller-api</artifactId> - <packaging>bundle</packaging> - - <description>ONOS Pcep client controller subsystem API</description> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-app-pcep-api</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-pcepio</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-api</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-misc</artifactId> - </dependency> - - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <version>2.3</version> - <configuration> - <artifactSet> - <excludes> - <exclude>io.netty:netty</exclude> - <exclude>com.google.guava:guava</exclude> - <exclude>org.slf4j:slfj-api</exclude> - <exclude>ch.qos.logback:logback-core</exclude> - <exclude>ch.qos.logback:logback-classic</exclude> - <exclude>com.google.code.findbugs:annotations</exclude> - </excludes> - </artifactSet> - </configuration> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <configuration> - <instructions> - <Export-Package> - org.onosproject.pcep.*,org.onosproject.pcepio.* - </Export-Package> - </instructions> - </configuration> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java deleted file mode 100755 index 3ff622bf..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -import static com.google.common.base.Preconditions.checkArgument; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Objects; - -import org.onlab.packet.IpAddress; - -/** - * The class representing a network client pc ip. - * This class is immutable. - */ -public final class PccId { - - private static final String SCHEME = "pcep"; - private static final long UNKNOWN = 0; - private final IpAddress ipAddress; - - /** - * Private constructor. - */ - private PccId(IpAddress ipAddress) { - this.ipAddress = ipAddress; - } - - /** - * Create a PccId from ip address. - * - * @param ipAddress IP address - * @return ipAddress - */ - public static PccId pccId(IpAddress ipAddress) { - return new PccId(ipAddress); - } - - /** - * Returns the ip address. - * - * @return ipAddress - */ - public IpAddress ipAddress() { - return ipAddress; - } - - /** - * Convert the PccId value to a ':' separated hexadecimal string. - * - * @return the PccId value as a ':' separated hexadecimal string. - */ - @Override - public String toString() { - return ipAddress.toString(); - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof PccId)) { - return false; - } - - PccId otherPccid = (PccId) other; - return Objects.equals(ipAddress, otherPccid.ipAddress); - } - - @Override - public int hashCode() { - return Objects.hash(ipAddress); - } - - /** - * Returns PccId created from the given client URI. - * - * @param uri device URI - * @return pccid - */ - public static PccId pccid(URI uri) { - checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme"); - return new PccId(IpAddress.valueOf(uri.getSchemeSpecificPart())); - } - - /** - * Produces client URI from the given DPID. - * - * @param pccid client pccid - * @return client URI - */ - public static URI uri(PccId pccid) { - return uri(pccid.ipAddress()); - } - - /** - * Produces client URI from the given ip address. - * - * @param ipAddress ip of client - * @return client URI - */ - public static URI uri(IpAddress ipAddress) { - try { - return new URI(SCHEME, ipAddress.toString(), null); - } catch (URISyntaxException e) { - return null; - } - } -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java deleted file mode 100755 index 95e7789f..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -import java.util.List; - -import org.onosproject.pcepio.protocol.PcepFactory; -import org.onosproject.pcepio.protocol.PcepMessage; - -/** - * Represents to provider facing side of a path computation client(pcc). - */ -public interface PcepClient { - - /** - * Writes the message to the driver. - * - * @param msg the message to write - */ - void sendMessage(PcepMessage msg); - - /** - * Writes the PcepMessage list to the driver. - * - * @param msgs the messages to be written - */ - void sendMessage(List<PcepMessage> msgs); - - /** - * Handle a message from the pcc. - * - * @param fromClient the message to handle - */ - void handleMessage(PcepMessage fromClient); - - /** - * Provides the factory for this PCEP version. - * - * @return PCEP version specific factory. - */ - PcepFactory factory(); - - /** - * Gets a string version of the ID for this pcc. - * - * @return string version of the ID - */ - String getStringId(); - - /** - * Gets the ipAddress of the client. - * - * @return the client pccId in IPAddress format - */ - PccId getPccId(); - - /** - * Checks if the pcc is still connected. - * - * @return true if client is connected, false otherwise - */ - boolean isConnected(); - - /** - * Disconnects the pcc by closing the TCP connection. Results in a call - * to the channel handler's channelDisconnected method for cleanup. - */ - void disconnectClient(); - - /** - * Indicates if this pcc is optical. - * - * @return true if optical - */ - boolean isOptical(); - - /** - * Identifies the channel used to communicate with the pcc. - * - * @return string representation of the connection to the client - */ - String channelId(); - - /** - * To set the status of state synchronization. - * - * @param value to set the synchronization status - */ - void setIsSyncComplete(boolean value); - - /** - * Indicates the state synchronization status of this pcc. - * - * @return true/false if the synchronization is completed/not completed - */ - boolean isSyncComplete(); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java deleted file mode 100644 index 37453eac..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -import java.util.Collection; - -import org.onosproject.pcepio.protocol.PcepMessage; - -/** - * Abstraction of an Pcep client controller. Serves as a one stop - * shop for obtaining Pcep devices and (un)register listeners - * on pcep events - */ -public interface PcepClientController { - - /** - * Returns list of pcc clients connected to this Pcep controller. - * - * @return list of PcepClient elements - */ - Collection<PcepClient> getClients(); - - /** - * Returns the actual pcc client for the given ip address. - * - * @param pccId the id of the pcc client to fetch - * @return the interface to this pcc client - */ - PcepClient getClient(PccId pccId); - - /** - * Register a listener for meta events that occur to pcep - * devices. - * - * @param listener the listener to notify - */ - void addListener(PcepClientListener listener); - - /** - * Unregister a listener. - * - * @param listener the listener to unregister - */ - void removeListener(PcepClientListener listener); - - /** - * Register a listener for OF msg events. - * - * @param listener the listener to notify - */ - void addEventListener(PcepEventListener listener); - - /** - * Unregister a listener. - * - * @param listener the listener to unregister - */ - void removeEventListener(PcepEventListener listener); - - /** - * Send a message to a particular pcc client. - * - * @param pccId the id of the client to send message. - * @param msg the message to send - */ - void writeMessage(PccId pccId, PcepMessage msg); - - /** - * Process a message and notify the appropriate listeners. - * - * @param pccId id of the client the message arrived on - * @param msg the message to process. - */ - void processClientMessage(PccId pccId, PcepMessage msg); - - /** - * Close all connected PCC clients. - */ - void closeConnectedClients(); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java deleted file mode 100755 index e7e0a736..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -/** - * Allows for providers interested in PCC client events to be notified. - */ -public interface PcepClientListener { - - /** - * Notify that the PCC was connected. - * - * @param pccId the id of the client that connected - */ - void clientConnected(PccId pccId); - - /** - * Notify that the PCC was disconnected. - * - * @param pccId the id of the client that disconnected. - */ - void clientDisconnected(PccId pccId); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java deleted file mode 100644 index f7de215a..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -import org.onosproject.pcepio.protocol.PcepMessage; -/** - * Notifies providers about PCEP message events. - */ -public interface PcepEventListener { - - /** - * Handles the message event. - * - * @param pccId id of the pcc - * @param msg the message - */ - void handleMessage(PccId pccId, PcepMessage msg); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java deleted file mode 100644 index d00cd5a8..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller; - -/** - * The representation for PCEP packet statistics. - */ -public interface PcepPacketStats { - - /** - * Returns the count for no of packets sent out. - * - * @return int value of no of packets sent - */ - int outPacketCount(); - - /** - * Returns the count for no of packets received. - * - * @return int value of no of packets sent - */ - int inPacketCount(); - - /** - * Returns the count for no of wrong packets received. - * - * @return int value of no of wrong packets received - */ - int wrongPacketCount(); - - /** - * Returns the time value. - * - * @return long value of time - */ - long getTime(); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java deleted file mode 100755 index 4810417c..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller.driver; - -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.PcepClient; -import org.onosproject.pcepio.protocol.PcepMessage; - -/** - * Responsible for keeping track of the current set Pcep clients - * connected to the system. - * - */ -public interface PcepAgent { - - /** - * Add a pcc client that has just connected to the system. - * - * @param pccId the id of pcc client to add - * @param pc the actual pce client object. - * @return true if added, false otherwise. - */ - boolean addConnectedClient(PccId pccId, PcepClient pc); - - /** - * Checks if the activation for this pcc client is valid. - * - * @param pccId the id of pcc client to check - * @return true if valid, false otherwise - */ - boolean validActivation(PccId pccId); - - /** - * Clear all state in controller client maps for a pcc client that has - * disconnected from the local controller. Also release control for - * that pccIds client from the global repository. Notify client listeners. - * - * @param pccIds the id of pcc client to remove. - */ - void removeConnectedClient(PccId pccIds); - - /** - * Process a message coming from a pcc client. - * - * @param pccId the id of pcc client the message was received. - * @param m the message to process - */ - void processPcepMessage(PccId pccId, PcepMessage m); - -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java deleted file mode 100755 index f728de54..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller.driver; - -import org.jboss.netty.channel.Channel; -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.PcepClient; -import org.onosproject.pcep.controller.PcepPacketStats; -import org.onosproject.pcepio.protocol.PcepVersion; - - -/** - * Represents the driver side of an Path computation client(pcc). - * - */ -public interface PcepClientDriver extends PcepClient { - - /** - * Sets the Pcep agent to be used. This method - * can only be called once. - * - * @param agent the agent to set. - */ - void setAgent(PcepAgent agent); - - /** - * Announce to the Pcep agent that this pcc client has connected. - * - * @return true if successful, false if duplicate switch. - */ - boolean connectClient(); - - /** - * Remove this pcc client from the Pcep agent. - */ - void removeConnectedClient(); - - /** - * Sets the PCEP version for this pcc. - * - * @param pcepVersion the version to set. - */ - void setPcVersion(PcepVersion pcepVersion); - - /** - * Sets the associated Netty channel for this pcc. - * - * @param channel the Netty channel - */ - void setChannel(Channel channel); - - - /** - * Sets the keep alive time for this pcc. - * - * @param keepAliveTime the keep alive time to set. - */ - void setPcKeepAliveTime(byte keepAliveTime); - - /** - * Sets the dead time for this pcc. - * - * @param deadTime the dead timer value to set. - */ - void setPcDeadTime(byte deadTime); - - /** - * Sets the session id for this pcc. - * - * @param sessionId the session id value to set. - */ - void setPcSessionId(byte sessionId); - - /** - * Sets whether the pcc is connected. - * - * @param connected whether the pcc is connected - */ - void setConnected(boolean connected); - - /** - * Initializes the behavior. - * - * @param pccId id of pcc - * @param pcepVersion Pcep version - * @param pktStats Pcep Packet Stats - */ - void init(PccId pccId, PcepVersion pcepVersion, PcepPacketStats pktStats); - - /** - * Checks whether the handshake is complete. - * - * @return true is finished, false if not. - */ - boolean isHandshakeComplete(); - -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java deleted file mode 100755 index 6ce75bca..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller.driver; - -import org.onlab.packet.IpAddress; -import org.onosproject.pcepio.protocol.PcepVersion; - -/** - * Pcc Client factory which returns concrete pcc client objects for the - * physical pcc client in use. - * - */ -public interface PcepClientDriverFactory { - - - /** - * Constructs the real Pcep Client representation. - * - * @param pccIpAddress the ip address for this pcc client. - * @param pcepVersion the Pcep version in use - * @return the Pcep client representation. - */ - PcepClientDriver getPcepClientImpl(IpAddress pccIpAddress, - PcepVersion pcepVersion); -} diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java deleted file mode 100644 index 9d105ff2..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCEP client controller driver API. - */ -package org.onosproject.pcep.controller.driver; diff --git a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java b/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java deleted file mode 100644 index a0cb2482..00000000 --- a/framework/src/onos/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCEP client controller API. - */ -package org.onosproject.pcep.controller; diff --git a/framework/src/onos/pcep/ctl/pom.xml b/framework/src/onos/pcep/ctl/pom.xml deleted file mode 100644 index f0ed5c2f..00000000 --- a/framework/src/onos/pcep/ctl/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ -<!-- - ~ Copyright 2014 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos-pcep-controller</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-pcep-controller-impl</artifactId> - <packaging>bundle</packaging> - - <description>ONOS PCEP client controller subsystem API implementation</description> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-pcep-controller-api</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty</artifactId> - </dependency> - <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.scr.annotations</artifactId> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-misc</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-scr-plugin</artifactId> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/Controller.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/Controller.java deleted file mode 100644 index 9c27810c..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/Controller.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller.impl; - -import static org.onlab.util.Tools.groupedThreads; - -import java.lang.management.ManagementFactory; -import java.lang.management.RuntimeMXBean; -import java.net.InetSocketAddress; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.Executors; - -import org.jboss.netty.bootstrap.ServerBootstrap; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.group.ChannelGroup; -import org.jboss.netty.channel.group.DefaultChannelGroup; -import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.PcepPacketStats; -import org.onosproject.pcep.controller.driver.PcepAgent; -import org.onosproject.pcep.controller.driver.PcepClientDriver; -import org.onosproject.pcepio.protocol.PcepFactories; -import org.onosproject.pcepio.protocol.PcepFactory; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The main controller class. Handles all setup and network listeners - - * Distributed ownership control of pcc through IControllerRegistryService - */ -public class Controller { - - private static final Logger log = LoggerFactory.getLogger(Controller.class); - - private static final PcepFactory FACTORY1 = PcepFactories.getFactory(PcepVersion.PCEP_1); - - private ChannelGroup cg; - - // Configuration options - private int pcepPort = 4189; - private int workerThreads = 10; - - // Start time of the controller - private long systemStartTime; - - private PcepAgent agent; - - private NioServerSocketChannelFactory execFactory; - - // Perf. related configuration - private static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024; - - /** - * Returns factory version for processing pcep messages. - * - * @return instance of factory version - */ - public PcepFactory getPcepMessageFactory1() { - return FACTORY1; - } - - /** - * To get system start time. - * - * @return system start time in milliseconds - */ - public long getSystemStartTime() { - return (this.systemStartTime); - } - - /** - * Tell controller that we're ready to accept pcc connections. - */ - public void run() { - try { - final ServerBootstrap bootstrap = createServerBootStrap(); - - bootstrap.setOption("reuseAddr", true); - bootstrap.setOption("child.keepAlive", true); - bootstrap.setOption("child.tcpNoDelay", true); - bootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE); - - ChannelPipelineFactory pfact = new PcepPipelineFactory(this); - - bootstrap.setPipelineFactory(pfact); - InetSocketAddress sa = new InetSocketAddress(pcepPort); - cg = new DefaultChannelGroup(); - cg.add(bootstrap.bind(sa)); - log.info("Listening for PCC connection on {}", sa); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Creates server boot strap. - * - * @return ServerBootStrap - */ - private ServerBootstrap createServerBootStrap() { - if (workerThreads == 0) { - execFactory = new NioServerSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/pcep", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/pcep", "worker-%d"))); - return new ServerBootstrap(execFactory); - } else { - execFactory = new NioServerSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/pcep", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/pcep", "worker-%d")), workerThreads); - return new ServerBootstrap(execFactory); - } - } - - /** - * Initialize internal data structures. - */ - public void init() { - // These data structures are initialized here because other - // module's startUp() might be called before ours - this.systemStartTime = System.currentTimeMillis(); - } - - public Map<String, Long> getMemory() { - Map<String, Long> m = new HashMap<>(); - Runtime runtime = Runtime.getRuntime(); - m.put("total", runtime.totalMemory()); - m.put("free", runtime.freeMemory()); - return m; - } - - public Long getUptime() { - RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean(); - return rb.getUptime(); - } - - /** - * Creates instance of Pcep client. - * - * @param pccId pcc identifier - * @param sessionID session id - * @param pv pcep version - * @param pktStats pcep packet statistics - * @return instance of PcepClient - */ - protected PcepClientDriver getPcepClientInstance(PccId pccId, int sessionID, PcepVersion pv, - PcepPacketStats pktStats) { - PcepClientDriver pcepClientDriver = new PcepClientImpl(); - pcepClientDriver.init(pccId, pv, pktStats); - pcepClientDriver.setAgent(agent); - return pcepClientDriver; - } - - /** - * Starts the pcep controller. - * - * @param ag Pcep agent - */ - public void start(PcepAgent ag) { - log.info("Started"); - this.agent = ag; - this.init(); - this.run(); - } - - /** - * Stops the pcep controller. - */ - public void stop() { - log.info("Stopped"); - execFactory.shutdown(); - cg.close(); - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepChannelHandler.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepChannelHandler.java deleted file mode 100644 index bc8721d7..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepChannelHandler.java +++ /dev/null @@ -1,652 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcep.controller.impl; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.nio.channels.ClosedChannelException; -import java.util.Collections; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; -import java.util.concurrent.RejectedExecutionException; - -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.jboss.netty.channel.ExceptionEvent; -import org.jboss.netty.channel.MessageEvent; -import org.jboss.netty.handler.timeout.IdleState; -import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler; -import org.jboss.netty.handler.timeout.IdleStateEvent; -import org.jboss.netty.handler.timeout.IdleStateHandler; -import org.jboss.netty.handler.timeout.ReadTimeoutException; -import org.onlab.packet.IpAddress; -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.driver.PcepClientDriver; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepError; -import org.onosproject.pcepio.protocol.PcepErrorInfo; -import org.onosproject.pcepio.protocol.PcepErrorMsg; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepFactory; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.protocol.PcepOpenMsg; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.ErrorObjListWithOpen; -import org.onosproject.pcepio.types.PceccCapabilityTlv; -import org.onosproject.pcepio.types.StatefulPceCapabilityTlv; -import org.onosproject.pcepio.types.PcepErrorDetailInfo; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Channel handler deals with the pcc client connection and dispatches - * messages from client to the appropriate locations. - */ -class PcepChannelHandler extends IdleStateAwareChannelHandler { - static final byte DEADTIMER_MAXIMUM_VALUE = (byte) 0xFF; - static final byte KEEPALIVE_MULTIPLE_FOR_DEADTIMER = 4; - private static final Logger log = LoggerFactory.getLogger(PcepChannelHandler.class); - private final Controller controller; - private PcepClientDriver pc; - private PccId thispccId; - private Channel channel; - private byte sessionId = 0; - private byte keepAliveTime; - private byte deadTime; - private PcepPacketStatsImpl pcepPacketStats; - static final int MAX_WRONG_COUNT_PACKET = 5; - static final int BYTE_MASK = 0xFF; - - // State needs to be volatile because the HandshakeTimeoutHandler - // needs to check if the handshake is complete - private volatile ChannelState state; - - // When a pcc client with a ip addresss is found (i.e we already have a - // connected client with the same ip), the new client is immediately - // disconnected. At that point netty callsback channelDisconnected() which - // proceeds to cleaup client state - we need to ensure that it does not cleanup - // client state for the older (still connected) client - private volatile Boolean duplicatePccIdFound; - - //Indicates the pcep version used by this pcc client - protected PcepVersion pcepVersion; - protected PcepFactory factory1; - - /** - * Create a new unconnected PcepChannelHandler. - * @param controller parent controller - */ - PcepChannelHandler(Controller controller) { - this.controller = controller; - this.state = ChannelState.INIT; - factory1 = controller.getPcepMessageFactory1(); - duplicatePccIdFound = Boolean.FALSE; - pcepPacketStats = new PcepPacketStatsImpl(); - } - - /** - * To disconnect a PCC. - */ - public void disconnectClient() { - pc.disconnectClient(); - } - - //************************* - // Channel State Machine - //************************* - - /** - * The state machine for handling the client/channel state. All state - * transitions should happen from within the state machine (and not from other - * parts of the code) - */ - enum ChannelState { - /** - * Initial state before channel is connected. - */ - INIT(false) { - - }, - /** - * Once the session is established, wait for open message. - */ - OPENWAIT(false) { - @Override - void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException { - - log.debug("Message received in OPEN WAIT State"); - - //check for open message - if (m.getType() != PcepType.OPEN) { - // When the message type is not open message increment the wrong packet statistics - h.processUnknownMsg(); - log.debug("message is not OPEN message"); - } else { - - h.pcepPacketStats.addInPacket(); - PcepOpenMsg pOpenmsg = (PcepOpenMsg) m; - // do Capability validation. - if (h.capabilityValidation(pOpenmsg)) { - log.debug("Sending handshake OPEN message"); - h.sessionId = pOpenmsg.getPcepOpenObject().getSessionId(); - h.pcepVersion = pOpenmsg.getPcepOpenObject().getVersion(); - - //setting keepalive and deadTimer - byte yKeepalive = pOpenmsg.getPcepOpenObject().getKeepAliveTime(); - byte yDeadTimer = pOpenmsg.getPcepOpenObject().getDeadTime(); - h.keepAliveTime = yKeepalive; - if (yKeepalive < yDeadTimer) { - h.deadTime = yDeadTimer; - } else { - if (DEADTIMER_MAXIMUM_VALUE > (yKeepalive * KEEPALIVE_MULTIPLE_FOR_DEADTIMER)) { - h.deadTime = (byte) (yKeepalive * KEEPALIVE_MULTIPLE_FOR_DEADTIMER); - } else { - h.deadTime = DEADTIMER_MAXIMUM_VALUE; - } - } - h.sendHandshakeOpenMessage(); - h.pcepPacketStats.addOutPacket(); - h.setState(KEEPWAIT); - } else { - log.debug("Capability validation failed. Sending PCEP-ERROR message to PCC."); - // Send PCEP-ERROR message. - PcepErrorMsg errMsg = h.getErrorMsg(PcepErrorDetailInfo.ERROR_TYPE_2, - PcepErrorDetailInfo.ERROR_VALUE_2); - h.channel.write(Collections.singletonList(errMsg)); - } - } - } - }, - /** - * Once the open messages are exchanged, wait for keep alive message. - */ - KEEPWAIT(false) { - @Override - void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException { - log.debug("message received in KEEPWAIT state"); - //check for keep alive message - if (m.getType() != PcepType.KEEP_ALIVE) { - // When the message type is not keep alive message increment the wrong packet statistics - h.processUnknownMsg(); - log.debug("message is not KEEPALIVE message"); - } else { - // Set the client connected status - h.pcepPacketStats.addInPacket(); - final SocketAddress address = h.channel.getRemoteAddress(); - if (!(address instanceof InetSocketAddress)) { - throw new IOException("Invalid client connection. Pcc is indentifed based on IP"); - } - log.debug("sending keep alive message in KEEPWAIT state"); - - final InetSocketAddress inetAddress = (InetSocketAddress) address; - h.thispccId = PccId.pccId(IpAddress.valueOf(inetAddress.getAddress())); - h.pc = h.controller.getPcepClientInstance(h.thispccId, h.sessionId, h.pcepVersion, - h.pcepPacketStats); - // set the status of pcc as connected - h.pc.setConnected(true); - h.pc.setChannel(h.channel); - - // set any other specific parameters to the pcc - h.pc.setPcVersion(h.pcepVersion); - h.pc.setPcSessionId(h.sessionId); - h.pc.setPcKeepAliveTime(h.keepAliveTime); - h.pc.setPcDeadTime(h.deadTime); - int keepAliveTimer = h.keepAliveTime & BYTE_MASK; - int deadTimer = h.deadTime & BYTE_MASK; - if (0 == h.keepAliveTime) { - h.deadTime = 0; - } - // handle keep alive and dead time - if (keepAliveTimer != PcepPipelineFactory.DEFAULT_KEEP_ALIVE_TIME - || deadTimer != PcepPipelineFactory.DEFAULT_DEAD_TIME) { - - h.channel.getPipeline().replace("idle", "idle", - new IdleStateHandler(PcepPipelineFactory.TIMER, deadTimer, keepAliveTimer, 0)); - } - log.debug("Dead timer : " + deadTimer); - log.debug("Keep alive time : " + keepAliveTimer); - - //set the state handshake completion. - h.sendKeepAliveMessage(); - h.pcepPacketStats.addOutPacket(); - h.setHandshakeComplete(true); - - if (!h.pc.connectClient()) { - disconnectDuplicate(h); - } else { - h.setState(ESTABLISHED); - } - } - } - }, - /** - * Once the keep alive messages are exchanged, the state is established. - */ - ESTABLISHED(true) { - @Override - void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException { - - //h.channel.getPipeline().remove("waittimeout"); - log.debug("Message received in established state " + m.getType()); - //dispatch the message - h.dispatchMessage(m); - } - }; - private boolean handshakeComplete; - - ChannelState(boolean handshakeComplete) { - this.handshakeComplete = handshakeComplete; - } - - void processPcepMessage(PcepChannelHandler h, PcepMessage m) throws IOException, PcepParseException { - // do nothing - } - - /** - * Is this a state in which the handshake has completed. - * - * @return true if the handshake is complete - */ - public boolean isHandshakeComplete() { - return this.handshakeComplete; - } - - protected void disconnectDuplicate(PcepChannelHandler h) { - log.error("Duplicated Pcc IP or incompleted cleanup - " + "disconnecting channel {}", - h.getClientInfoString()); - h.duplicatePccIdFound = Boolean.TRUE; - h.channel.disconnect(); - } - - /** - * Sets handshake complete status. - * - * @param handshakeComplete status of handshake - */ - public void setHandshakeComplete(boolean handshakeComplete) { - this.handshakeComplete = handshakeComplete; - } - - } - - @Override - public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { - channel = e.getChannel(); - log.info("PCC connected from {}", channel.getRemoteAddress()); - - // Wait for open message from pcc client - setState(ChannelState.OPENWAIT); - } - - @Override - public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { - log.info("Pcc disconnected callback for pc:{}. Cleaning up ...", getClientInfoString()); - if (thispccId != null) { - if (!duplicatePccIdFound) { - // if the disconnected client (on this ChannelHandler) - // was not one with a duplicate-dpid, it is safe to remove all - // state for it at the controller. Notice that if the disconnected - // client was a duplicate-ip, calling the method below would clear - // all state for the original client (with the same ip), - // which we obviously don't want. - log.debug("{}:removal called", getClientInfoString()); - if (pc != null) { - pc.removeConnectedClient(); - } - } else { - // A duplicate was disconnected on this ChannelHandler, - // this is the same client reconnecting, but the original state was - // not cleaned up - XXX check liveness of original ChannelHandler - log.debug("{}:duplicate found", getClientInfoString()); - duplicatePccIdFound = Boolean.FALSE; - } - } else { - log.warn("no pccip in channelHandler registered for " + "disconnected client {}", getClientInfoString()); - } - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { - PcepErrorMsg errMsg; - log.info("exceptionCaught: " + e.toString()); - - if (e.getCause() instanceof ReadTimeoutException) { - if (ChannelState.OPENWAIT == state) { - // When ReadTimeout timer is expired in OPENWAIT state, it is considered - // OpenWait timer. - errMsg = getErrorMsg(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_2); - log.debug("Sending PCEP-ERROR message to PCC."); - channel.write(Collections.singletonList(errMsg)); - channel.close(); - state = ChannelState.INIT; - return; - } else if (ChannelState.KEEPWAIT == state) { - // When ReadTimeout timer is expired in KEEPWAIT state, is is considered - // KeepWait timer. - errMsg = getErrorMsg(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_7); - log.debug("Sending PCEP-ERROR message to PCC."); - channel.write(Collections.singletonList(errMsg)); - channel.close(); - state = ChannelState.INIT; - return; - } - } else if (e.getCause() instanceof ClosedChannelException) { - log.debug("Channel for pc {} already closed", getClientInfoString()); - } else if (e.getCause() instanceof IOException) { - log.error("Disconnecting client {} due to IO Error: {}", getClientInfoString(), e.getCause().getMessage()); - if (log.isDebugEnabled()) { - // still print stack trace if debug is enabled - log.debug("StackTrace for previous Exception: ", e.getCause()); - } - channel.close(); - } else if (e.getCause() instanceof PcepParseException) { - PcepParseException errMsgParse = (PcepParseException) e.getCause(); - byte errorType = errMsgParse.getErrorType(); - byte errorValue = errMsgParse.getErrorValue(); - - if ((errorType == (byte) 0x0) && (errorValue == (byte) 0x0)) { - processUnknownMsg(); - } else { - errMsg = getErrorMsg(errorType, errorValue); - log.debug("Sending PCEP-ERROR message to PCC."); - channel.write(Collections.singletonList(errMsg)); - } - } else if (e.getCause() instanceof RejectedExecutionException) { - log.warn("Could not process message: queue full"); - } else { - log.error("Error while processing message from client " + getClientInfoString() + "state " + this.state); - channel.close(); - } - } - - @Override - public String toString() { - return getClientInfoString(); - } - - @Override - public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e) throws Exception { - if (!isHandshakeComplete()) { - return; - } - - if (e.getState() == IdleState.READER_IDLE) { - // When no message is received on channel for read timeout, then close - // the channel - log.info("Disconnecting client {} due to read timeout", getClientInfoString()); - ctx.getChannel().close(); - } else if (e.getState() == IdleState.WRITER_IDLE) { - // Send keep alive message - log.debug("Sending keep alive message due to IdleState timeout " + pc.toString()); - pc.sendMessage(Collections.singletonList(pc.factory().buildKeepaliveMsg().build())); - } - } - - @Override - public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { - if (e.getMessage() instanceof List) { - @SuppressWarnings("unchecked") - List<PcepMessage> msglist = (List<PcepMessage>) e.getMessage(); - for (PcepMessage pm : msglist) { - // Do the actual packet processing - state.processPcepMessage(this, pm); - } - } else { - state.processPcepMessage(this, (PcepMessage) e.getMessage()); - } - } - - /** - * To set the handshake status. - * - * @param handshakeComplete value is handshake status - */ - public void setHandshakeComplete(boolean handshakeComplete) { - this.state.setHandshakeComplete(handshakeComplete); - } - - /** - * Is this a state in which the handshake has completed. - * - * @return true if the handshake is complete - */ - public boolean isHandshakeComplete() { - return this.state.isHandshakeComplete(); - } - - /** - * To handle the pcep message. - * - * @param m pcep message - */ - private void dispatchMessage(PcepMessage m) { - pc.handleMessage(m); - } - - /** - * Return a string describing this client based on the already available - * information (ip address and/or remote socket). - * - * @return display string - */ - private String getClientInfoString() { - if (pc != null) { - return pc.toString(); - } - String channelString; - if (channel == null || channel.getRemoteAddress() == null) { - channelString = "?"; - } else { - channelString = channel.getRemoteAddress().toString(); - } - String pccIpString; - // TODO : implement functionality to get pcc id string - pccIpString = "?"; - return String.format("[%s PCCIP[%s]]", channelString, pccIpString); - } - - /** - * Update the channels state. Only called from the state machine. - * - * @param state - */ - private void setState(ChannelState state) { - this.state = state; - } - - /** - * Send handshake open message. - * - * @throws IOException,PcepParseException - */ - private void sendHandshakeOpenMessage() throws IOException, PcepParseException { - PcepOpenObject pcepOpenobj = factory1.buildOpenObject() - .setSessionId(sessionId) - .setKeepAliveTime(keepAliveTime) - .setDeadTime(deadTime) - .build(); - PcepMessage msg = factory1.buildOpenMsg() - .setPcepOpenObj(pcepOpenobj) - .build(); - log.debug("Sending OPEN message to {}", channel.getRemoteAddress()); - channel.write(Collections.singletonList(msg)); - } - - /** - * Capability Validation. - * - * @param pOpenmsg pcep open message - * @return success or failure - */ - private boolean capabilityValidation(PcepOpenMsg pOpenmsg) { - LinkedList<PcepValueType> tlvList = pOpenmsg.getPcepOpenObject().getOptionalTlv(); - boolean bFoundPceccCapability = false; - boolean bFoundStatefulPceCapability = false; - boolean bFoundPcInstantiationCapability = false; - - ListIterator<PcepValueType> listIterator = tlvList.listIterator(); - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - switch (tlv.getType()) { - case PceccCapabilityTlv.TYPE: - bFoundPceccCapability = true; - break; - case StatefulPceCapabilityTlv.TYPE: - bFoundStatefulPceCapability = true; - StatefulPceCapabilityTlv stetefulPcCapTlv = (StatefulPceCapabilityTlv) tlv; - if (stetefulPcCapTlv.getIFlag()) { - bFoundPcInstantiationCapability = true; - } - break; - default: - continue; - } - } - - return (bFoundPceccCapability && bFoundStatefulPceCapability && bFoundPcInstantiationCapability); - } - - /** - * Send keep alive message. - * - * @throws IOException when channel is disconnected - * @throws PcepParseException while building keep alive message - */ - private void sendKeepAliveMessage() throws IOException, PcepParseException { - PcepMessage msg = factory1.buildKeepaliveMsg().build(); - log.debug("Sending KEEPALIVE message to {}", channel.getRemoteAddress()); - channel.write(Collections.singletonList(msg)); - } - - /** - * Send error message and close channel with pcc. - */ - private void sendErrMsgAndCloseChannel() { - // TODO send error message - channel.close(); - } - - /** - * Send error message when an invalid message is received. - * - * @throws PcepParseException while building error message - */ - private void sendErrMsgForInvalidMsg() throws PcepParseException { - byte errorType = 0x02; - byte errorValue = 0x00; - PcepErrorMsg errMsg = getErrorMsg(errorType, errorValue); - channel.write(Collections.singletonList(errMsg)); - } - - /** - * Builds pcep error message based on error value and error type. - * - * @param errorType pcep error type - * @param errorValue pcep error value - * @return pcep error message - * @throws PcepParseException while bulding error message - */ - public PcepErrorMsg getErrorMsg(byte errorType, byte errorValue) throws PcepParseException { - LinkedList<PcepErrorObject> llerrObj = new LinkedList<>(); - PcepErrorMsg errMsg; - - PcepErrorObject errObj = factory1.buildPcepErrorObject() - .setErrorValue(errorValue) - .setErrorType(errorType) - .build(); - - llerrObj.add(errObj); - - if (state == ChannelState.OPENWAIT) { - //If Error caught in Openmessage - PcepOpenObject openObj = null; - ErrorObjListWithOpen errorObjListWithOpen = null; - - if (0 != sessionId) { - openObj = factory1.buildOpenObject().setSessionId(sessionId).build(); - errorObjListWithOpen = new ErrorObjListWithOpen(llerrObj, openObj); - } else { - errorObjListWithOpen = new ErrorObjListWithOpen(llerrObj, null); - } - - errMsg = factory1.buildPcepErrorMsg() - .setErrorObjListWithOpen(errorObjListWithOpen) - .build(); - } else { - - //If Error caught in other than Openmessage - LinkedList<PcepError> llPcepErr = new LinkedList<>(); - - PcepError pcepErr = factory1.buildPcepError() - .setErrorObjList(llerrObj) - .build(); - - llPcepErr.add(pcepErr); - - PcepErrorInfo errInfo = factory1.buildPcepErrorInfo() - .setPcepErrorList(llPcepErr) - .build(); - - errMsg = factory1.buildPcepErrorMsg() - .setPcepErrorInfo(errInfo) - .build(); - } - return errMsg; - } - - /** - * Process unknown pcep message received. - * - * @throws PcepParseException while building pcep error message - */ - public void processUnknownMsg() throws PcepParseException { - Date now = null; - if (pcepPacketStats.wrongPacketCount() == 0) { - now = new Date(); - pcepPacketStats.setTime(now.getTime()); - pcepPacketStats.addWrongPacket(); - sendErrMsgForInvalidMsg(); - } - - if (pcepPacketStats.wrongPacketCount() > 1) { - Date lastest = new Date(); - pcepPacketStats.addWrongPacket(); - //converting to seconds - if (((lastest.getTime() - pcepPacketStats.getTime()) / 1000) > 60) { - now = lastest; - pcepPacketStats.setTime(now.getTime()); - pcepPacketStats.resetWrongPacket(); - pcepPacketStats.addWrongPacket(); - } else if (((int) (lastest.getTime() - now.getTime()) / 1000) < 60) { - if (MAX_WRONG_COUNT_PACKET <= pcepPacketStats.wrongPacketCount()) { - //reset once wrong packet count reaches MAX_WRONG_COUNT_PACKET - pcepPacketStats.resetWrongPacket(); - // max wrong packets received send error message and close the session - sendErrMsgAndCloseChannel(); - } - } - } - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java deleted file mode 100644 index 00c8c694..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller.impl; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Service; -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.PcepClient; -import org.onosproject.pcep.controller.PcepClientController; -import org.onosproject.pcep.controller.PcepClientListener; -import org.onosproject.pcep.controller.PcepEventListener; -import org.onosproject.pcep.controller.driver.PcepAgent; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.collect.Sets; - -/** - * Implementation of PCEP client controller. - */ -@Component(immediate = true) -@Service -public class PcepClientControllerImpl implements PcepClientController { - - private static final Logger log = LoggerFactory.getLogger(PcepClientControllerImpl.class); - - protected ConcurrentHashMap<PccId, PcepClient> connectedClients = - new ConcurrentHashMap<>(); - - protected PcepClientAgent agent = new PcepClientAgent(); - protected Set<PcepClientListener> pcepClientListener = new HashSet<>(); - - protected Set<PcepEventListener> pcepEventListener = Sets.newHashSet(); - - private final Controller ctrl = new Controller(); - - @Activate - public void activate() { - ctrl.start(agent); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - // Close all connected clients - closeConnectedClients(); - ctrl.stop(); - log.info("Stopped"); - } - - @Override - public Collection<PcepClient> getClients() { - return connectedClients.values(); - } - - @Override - public PcepClient getClient(PccId pccId) { - return connectedClients.get(pccId); - } - - @Override - public void addListener(PcepClientListener listener) { - if (!pcepClientListener.contains(listener)) { - this.pcepClientListener.add(listener); - } - } - - @Override - public void removeListener(PcepClientListener listener) { - this.pcepClientListener.remove(listener); - } - - @Override - public void addEventListener(PcepEventListener listener) { - pcepEventListener.add(listener); - } - - @Override - public void removeEventListener(PcepEventListener listener) { - pcepEventListener.remove(listener); - } - - @Override - public void writeMessage(PccId pccId, PcepMessage msg) { - this.getClient(pccId).sendMessage(msg); - } - - @Override - public void processClientMessage(PccId pccId, PcepMessage msg) { - PcepClient pc = getClient(pccId); - - switch (msg.getType()) { - case NONE: - break; - case OPEN: - break; - case KEEP_ALIVE: - break; - case PATH_COMPUTATION_REQUEST: - break; - case PATH_COMPUTATION_REPLY: - break; - case NOTIFICATION: - break; - case ERROR: - break; - case CLOSE: - log.info("Sending Close Message to {" + pccId.toString() + "}"); - pc.sendMessage(Collections.singletonList(pc.factory().buildCloseMsg().build())); - //now disconnect client - pc.disconnectClient(); - break; - case REPORT: - for (PcepEventListener l : pcepEventListener) { - l.handleMessage(pccId, msg); - } - break; - case UPDATE: - for (PcepEventListener l : pcepEventListener) { - l.handleMessage(pccId, msg); - } - break; - case INITIATE: - for (PcepEventListener l : pcepEventListener) { - l.handleMessage(pccId, msg); - } - break; - case LABEL_UPDATE: - break; - case MAX: - break; - case END: - break; - default: - break; - } - } - - @Override - public void closeConnectedClients() { - PcepClient pc; - for (PccId id : connectedClients.keySet()) { - pc = getClient(id); - pc.disconnectClient(); - } - } - - /** - * Implementation of an Pcep Agent which is responsible for - * keeping track of connected clients and the state in which - * they are. - */ - public class PcepClientAgent implements PcepAgent { - - private final Logger log = LoggerFactory.getLogger(PcepClientAgent.class); - - @Override - public boolean addConnectedClient(PccId pccId, PcepClient pc) { - - if (connectedClients.get(pccId) != null) { - log.error("Trying to add connectedClient but found a previous " - + "value for pcc ip: {}", pccId.toString()); - return false; - } else { - log.debug("Added Client {}", pccId.toString()); - connectedClients.put(pccId, pc); - for (PcepClientListener l : pcepClientListener) { - l.clientConnected(pccId); - } - return true; - } - } - - @Override - public boolean validActivation(PccId pccId) { - if (connectedClients.get(pccId) == null) { - log.error("Trying to activate client but is not in " - + "connected client: pccIp {}. Aborting ..", pccId.toString()); - return false; - } - - return true; - } - - @Override - public void removeConnectedClient(PccId pccId) { - - connectedClients.remove(pccId); - for (PcepClientListener l : pcepClientListener) { - log.warn("removal for {}", pccId.toString()); - l.clientDisconnected(pccId); - } - } - - @Override - public void processPcepMessage(PccId pccId, PcepMessage m) { - processClientMessage(pccId, m); - } - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientImpl.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientImpl.java deleted file mode 100644 index a10ff5c8..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientImpl.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcep.controller.impl; - -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.RejectedExecutionException; - -import org.jboss.netty.channel.Channel; -import org.onlab.packet.IpAddress; -import org.onosproject.pcep.controller.PccId; -import org.onosproject.pcep.controller.PcepPacketStats; -import org.onosproject.pcep.controller.driver.PcepAgent; -import org.onosproject.pcep.controller.driver.PcepClientDriver; -import org.onosproject.pcepio.protocol.PcepFactories; -import org.onosproject.pcepio.protocol.PcepFactory; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * An abstract representation of an OpenFlow switch. Can be extended by others - * to serve as a base for their vendor specific representation of a switch. - */ -public class PcepClientImpl implements PcepClientDriver { - - protected final Logger log = LoggerFactory.getLogger(PcepClientImpl.class); - - private static final String SHUTDOWN_MSG = "Worker has already been shutdown"; - - private Channel channel; - protected String channelId; - - private boolean connected; - protected boolean startDriverHandshakeCalled = false; - protected boolean isHandShakeComplete = false; - protected boolean isSyncComplete = false; - private PccId pccId; - private PcepAgent agent; - - private PcepVersion pcepVersion; - private byte keepAliveTime; - private byte deadTime; - private byte sessionId; - private PcepPacketStatsImpl pktStats; - - @Override - public void init(PccId pccId, PcepVersion pcepVersion, PcepPacketStats pktStats) { - this.pccId = pccId; - this.pcepVersion = pcepVersion; - this.pktStats = (PcepPacketStatsImpl) pktStats; - } - - @Override - public final void disconnectClient() { - this.channel.close(); - } - - @Override - public final void sendMessage(PcepMessage m) { - log.debug("Sending message to {}", channel.getRemoteAddress()); - try { - channel.write(Collections.singletonList(m)); - this.pktStats.addOutPacket(); - } catch (RejectedExecutionException e) { - log.warn(e.getMessage()); - if (!e.getMessage().contains(SHUTDOWN_MSG)) { - throw e; - } - } - } - - @Override - public final void sendMessage(List<PcepMessage> msgs) { - try { - channel.write(msgs); - this.pktStats.addOutPacket(msgs.size()); - } catch (RejectedExecutionException e) { - log.warn(e.getMessage()); - if (!e.getMessage().contains(SHUTDOWN_MSG)) { - throw e; - } - } - } - - @Override - public final boolean isConnected() { - return this.connected; - } - - @Override - public final void setConnected(boolean connected) { - this.connected = connected; - }; - - @Override - public final void setChannel(Channel channel) { - this.channel = channel; - final SocketAddress address = channel.getRemoteAddress(); - if (address instanceof InetSocketAddress) { - final InetSocketAddress inetAddress = (InetSocketAddress) address; - final IpAddress ipAddress = IpAddress.valueOf(inetAddress.getAddress()); - if (ipAddress.isIp4()) { - channelId = ipAddress.toString() + ':' + inetAddress.getPort(); - } else { - channelId = '[' + ipAddress.toString() + "]:" + inetAddress.getPort(); - } - } - }; - - @Override - public String channelId() { - return channelId; - } - - @Override - public final PccId getPccId() { - return this.pccId; - } - - @Override - public final String getStringId() { - return this.pccId.toString(); - } - - @Override - public final void setPcVersion(PcepVersion pcepVersion) { - this.pcepVersion = pcepVersion; - } - - @Override - public void setPcKeepAliveTime(byte keepAliveTime) { - this.keepAliveTime = keepAliveTime; - } - - @Override - public void setPcDeadTime(byte deadTime) { - this.deadTime = deadTime; - } - - @Override - public void setPcSessionId(byte sessionId) { - this.sessionId = sessionId; - } - - @Override - public void setIsSyncComplete(boolean value) { - this.isSyncComplete = value; - } - - @Override - public boolean isSyncComplete() { - return isSyncComplete; - } - - @Override - public final void handleMessage(PcepMessage m) { - this.pktStats.addInPacket(); - this.agent.processPcepMessage(pccId, m); - } - - @Override - public final boolean connectClient() { - return this.agent.addConnectedClient(pccId, this); - } - - @Override - public final void removeConnectedClient() { - this.agent.removeConnectedClient(pccId); - } - - @Override - public PcepFactory factory() { - return PcepFactories.getFactory(pcepVersion); - } - - @Override - public boolean isHandshakeComplete() { - return isHandShakeComplete; - } - - @Override - public final void setAgent(PcepAgent ag) { - if (this.agent == null) { - this.agent = ag; - } - } - - @Override - public boolean isOptical() { - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("channel", channelId()) - .add("pccId", getPccId()) - .toString(); - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageDecoder.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageDecoder.java deleted file mode 100644 index b1065891..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageDecoder.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller.impl; - -import java.util.LinkedList; -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.frame.FrameDecoder; -import org.onosproject.pcepio.protocol.PcepFactories; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.util.HexDump; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Decode an pcep message from a Channel, for use in a netty pipeline. - */ -public class PcepMessageDecoder extends FrameDecoder { - - protected static final Logger log = LoggerFactory.getLogger(PcepMessageDecoder.class); - - @Override - protected Object decode(ChannelHandlerContext ctx, Channel channel, - ChannelBuffer buffer) throws Exception { - log.debug("Message received."); - if (!channel.isConnected()) { - log.info("Channel is not connected."); - // In testing, I see decode being called AFTER decode last. - // This check avoids that from reading corrupted frames - return null; - } - - HexDump.pcepHexDump(buffer); - - // Note that a single call to decode results in reading a single - // PcepMessage from the channel buffer, which is passed on to, and processed - // by, the controller (in PcepChannelHandler). - // This is different from earlier behavior (with the original pcepIO), - // where we parsed all the messages in the buffer, before passing on - // a list of the parsed messages to the controller. - // The performance *may or may not* not be as good as before. - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - List<PcepMessage> msgList = new LinkedList<>(); - - while (buffer.readableBytes() > 0) { - PcepMessage message = reader.readFrom(buffer); - msgList.add(message); - } - return msgList; - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageEncoder.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageEncoder.java deleted file mode 100644 index ae97221e..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageEncoder.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller.impl; - -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.util.HexDump; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Encode an pcep message for output into a ChannelBuffer, for use in a - * netty pipeline. - */ -public class PcepMessageEncoder extends OneToOneEncoder { - protected static final Logger log = LoggerFactory.getLogger(PcepMessageEncoder.class); - - @Override - protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { - log.debug("Sending message"); - if (!(msg instanceof List)) { - log.debug("Invalid msg."); - return msg; - } - - @SuppressWarnings("unchecked") - List<PcepMessage> msglist = (List<PcepMessage>) msg; - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - for (PcepMessage pm : msglist) { - pm.writeTo(buf); - } - - HexDump.pcepHexDump(buf); - - return buf; - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java deleted file mode 100644 index f2bc51eb..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.controller.impl; - -import org.onosproject.pcep.controller.PcepPacketStats; - -/** - * The implementation for PCEP packet statistics. - */ -public class PcepPacketStatsImpl implements PcepPacketStats { - - private int inPacketCount; - private int outPacketCount; - private int wrongPacketCount; - private long time; - - /** - * Default constructor. - */ - public PcepPacketStatsImpl() { - this.inPacketCount = 0; - this.outPacketCount = 0; - this.wrongPacketCount = 0; - this.time = 0; - } - - @Override - public int outPacketCount() { - return outPacketCount; - } - - @Override - public int inPacketCount() { - return inPacketCount; - } - - @Override - public int wrongPacketCount() { - return wrongPacketCount; - } - - /** - * Increments the received packet counter. - */ - public void addInPacket() { - this.inPacketCount++; - } - - /** - * Increments the sent packet counter. - */ - public void addOutPacket() { - this.outPacketCount++; - } - - /** - * Increments the sent packet counter by specified value. - * - * @param value of no of packets sent - */ - public void addOutPacket(int value) { - this.outPacketCount = this.outPacketCount + value; - } - - /** - * Increments the wrong packet counter. - */ - public void addWrongPacket() { - this.wrongPacketCount++; - } - - /** - * Resets wrong packet count. - */ - public void resetWrongPacket() { - this.wrongPacketCount = 0; - } - - @Override - public long getTime() { - return this.time; - } - - /** - * Sets the time value. - * - * @param time long value of time - */ - public void setTime(long time) { - this.time = time; - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPipelineFactory.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPipelineFactory.java deleted file mode 100644 index f32b87a8..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPipelineFactory.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcep.controller.impl; - -import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.Channels; -import org.jboss.netty.handler.timeout.IdleStateHandler; -import org.jboss.netty.handler.timeout.ReadTimeoutHandler; -import org.jboss.netty.util.ExternalResourceReleasable; -import org.jboss.netty.util.HashedWheelTimer; -import org.jboss.netty.util.Timer; - -/** - * Creates a ChannelPipeline for a server-side pcep channel. - */ -public class PcepPipelineFactory - implements ChannelPipelineFactory, ExternalResourceReleasable { - - protected Controller controller; - static final Timer TIMER = new HashedWheelTimer(); - protected IdleStateHandler idleHandler; - protected ReadTimeoutHandler readTimeoutHandler; - static final int DEFAULT_KEEP_ALIVE_TIME = 30; - static final int DEFAULT_DEAD_TIME = 120; - static final int DEFAULT_WAIT_TIME = 60; - - public PcepPipelineFactory(Controller controller) { - super(); - this.controller = controller; - this.idleHandler = new IdleStateHandler(TIMER, DEFAULT_DEAD_TIME, DEFAULT_KEEP_ALIVE_TIME, 0); - this.readTimeoutHandler = new ReadTimeoutHandler(TIMER, DEFAULT_WAIT_TIME); - } - - @Override - public ChannelPipeline getPipeline() throws Exception { - PcepChannelHandler handler = new PcepChannelHandler(controller); - - ChannelPipeline pipeline = Channels.pipeline(); - pipeline.addLast("pcepmessagedecoder", new PcepMessageDecoder()); - pipeline.addLast("pcepmessageencoder", new PcepMessageEncoder()); - pipeline.addLast("idle", idleHandler); - pipeline.addLast("waittimeout", readTimeoutHandler); - pipeline.addLast("handler", handler); - return pipeline; - } - - @Override - public void releaseExternalResources() { - TIMER.stop(); - } -} diff --git a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java b/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java deleted file mode 100644 index d86eefc3..00000000 --- a/framework/src/onos/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the PCEP client controller subsystem. - */ -package org.onosproject.pcep.controller.impl; diff --git a/framework/src/onos/pcep/pcepio/pom.xml b/framework/src/onos/pcep/pcepio/pom.xml deleted file mode 100755 index d121a83e..00000000 --- a/framework/src/onos/pcep/pcepio/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Copyright 2014 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos-pcep-controller</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-pcepio</artifactId> - <packaging>bundle</packaging> - - <description>ONOS Pcepio Protocol subsystem</description> - - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-api</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-osgi</artifactId> - </dependency> - - <dependency> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-databind</artifactId> - </dependency> - <dependency> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-annotations</artifactId> - </dependency> - - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> - </dependency> - <dependency> - <groupId>org.apache.karaf.shell</groupId> - <artifactId>org.apache.karaf.shell.console</artifactId> - </dependency> - <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.scr.annotations</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java deleted file mode 100755 index 85bc33fb..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.exceptions; - -/** - * Custom Exception for PCEP IO. - */ -public class PcepParseException extends Exception { - - private static final long serialVersionUID = 7960991379951448423L; - private byte errType = 0; - private byte errValue = 0; - - /** - * Default constructor to create a new exception. - */ - public PcepParseException() { - super(); - } - - /** - * Constructor to create exception from message and cause. - * - * @param message the detail of exception in string - * @param cause underlying cause of the error - */ - public PcepParseException(final String message, final Throwable cause) { - super(message, cause); - } - - /** - * Constructor to create exception from message. - * - * @param message the detail of exception in string - */ - public PcepParseException(final String message) { - super(message); - } - - /** - * Constructor to create exception from error type and error value. - * - * @param errType error type of pcep - * @param errValue error value of pcep - */ - public PcepParseException(final byte errType, final byte errValue) { - super(); - this.errType = errType; - this.errValue = errValue; - } - - /** - * Constructor to create exception from cause. - * - * @param cause underlying cause of the error - */ - public PcepParseException(final Throwable cause) { - super(cause); - } - - /** - * Returns error type for this exception. - * - * @return ErrorType - */ - public byte getErrorType() { - return this.errType; - } - - /** - * Returns error value for this exception. - * - * @return ErrorValue - */ - public byte getErrorValue() { - return this.errValue; - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java deleted file mode 100755 index 25bdf5b6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.exceptions; - -/** - * Custom exception for Tunnel Attributes. - */ -public class PcepTunnelAttributeException extends Exception { - - private static final long serialVersionUID = 7860981378961458434L; - - /** - * Default constructor to create a new exception. - */ - public PcepTunnelAttributeException() { - super(); - } - - /** - * Constructor to create exception from message and cause. - * - * @param message the detail of exception in string - * @param cause underlying cause of the error - */ - public PcepTunnelAttributeException(final String message, final Throwable cause) { - super(message, cause); - } - - /** - * Constructor to create exception from message. - * - * @param message the detail of exception in string - */ - public PcepTunnelAttributeException(final String message) { - super(message); - } - - /** - * Constructor to create exception from cause. - * - * @param cause underlying cause of the error - */ - public PcepTunnelAttributeException(final Throwable cause) { - super(cause); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java deleted file mode 100644 index 44d09f0d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCEP custom exceptions. - */ -package org.onosproject.pcepio.exceptions; diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java deleted file mode 100755 index 6a2fdc88..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity Provides PcInitiatedLspRequest for PCEP Initiate message. - * Reference : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03. - */ -public interface PcInitiatedLspRequest { - - /** - * Returns object of PcepSrpObject. - * - * @return srpObject PCEP SRP object - */ - PcepSrpObject getSrpObject(); - - /** - * Returns object of PcepLspObject. - * - * @return lspObject PCEP LSP object - */ - PcepLspObject getLspObject(); - - /** - * Returns object of PcepEndPointsObject. - * - * @return endPointsObject PCEP EndPoints object - */ - PcepEndPointsObject getEndPointsObject(); - - /** - * Returns object of PcepEroObject. - * - * @return eroObject PCEP ERO object - */ - PcepEroObject getEroObject(); - - /** - * Returns object of PcepAttribute. - * - * @return pcepAttribute PCEP Attributes - */ - PcepAttribute getPcepAttribute(); - - /** - * Sets PcepSrpObject. - * - * @param srpobj PCEP SRP object - */ - void setSrpObject(PcepSrpObject srpobj); - - /** - * Sets PcepLspObject. - * - * @param lspObject PCEP LSP object - */ - void setLspObject(PcepLspObject lspObject); - - /** - * Sets PcepEndPointsObject. - * - * @param endPointsObject PCEP EndPoints object - */ - void setEndPointsObject(PcepEndPointsObject endPointsObject); - - /** - * Sets PcepEroObject. - * - * @param eroObject PCEP ERO object - */ - void setEroObject(PcepEroObject eroObject); - - /** - * Sets PcepAttribute. - * - * @param pcepAttribute PCEP Attributes - */ - void setPcepAttribute(PcepAttribute pcepAttribute); - - /** - * Builder interface with get and set functions to build PcInitiatedLspRequest. - */ - interface Builder { - - /** - * Builds PcInitiatedLspRequest. - * - * @return PcInitiatedLspRequest - * @throws PcepParseException when mandatory object is not set - */ - PcInitiatedLspRequest build() throws PcepParseException; - - /** - * Returns object of PcepSrpObject. - * - * @return srpObject - */ - PcepSrpObject getSrpObject(); - - /** - * Returns object of PcepLspObject. - * - * @return lspObject - */ - PcepLspObject getLspObject(); - - /** - * Returns object of PcepEndPointsObject. - * - * @return endPointsObject - */ - PcepEndPointsObject getEndPointsObject(); - - /** - * Returns object of PcepEroObject. - * - * @return eroObject - */ - PcepEroObject getEroObject(); - - /** - * Returns object of PcepAttribute. - * - * @return pcepAttribute - */ - PcepAttribute getPcepAttribute(); - - /** - * Sets PcepSrpObject. - * - * @param srpobj PCEP SRP Object - * @return builder by setting PcepSrpObject - */ - Builder setSrpObject(PcepSrpObject srpobj); - - /** - * Sets PcepLspObject. - * - * @param lspObject PCEP LSP Object - * @return builder by setting PcepLspObject - */ - Builder setLspObject(PcepLspObject lspObject); - - /** - * Sets PcepEndPointsObject. - * - * @param endPointsObject EndPoints Object - * @return builder by setting PcepEndPointsObject - */ - Builder setEndPointsObject(PcepEndPointsObject endPointsObject); - - /** - * Sets PcepEroObject. - * - * @param eroObject PCEP ERO Object - * @return builder by setting PcepEroObject - */ - Builder setEroObject(PcepEroObject eroObject); - - /** - * Sets PcepAttribute. - * - * @param pcepAttribute PCEP Attributes - * @return builder by setting PcepAttribute - */ - Builder setPcepAttribute(PcepAttribute pcepAttribute); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java deleted file mode 100644 index 122b943f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity which Provides List of PCEP Attributes. - */ -public interface PcepAttribute { - - /** - * writes lspa , bandwidth , Metriclist and Iro objects to the channel. - * - * @param bb of type channel buffer. - * @return object length index. - * @throws PcepParseException while writing objects to channel buffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Returns PcepLspaObject. - * - * @return LspaObject - */ - PcepLspaObject getLspaObject(); - - /** - * Returns PcepBandwidthObject. - * - * @return BandwidthObject - */ - PcepBandwidthObject getBandwidthObject(); - - /** - * Returns PcepIroObject. - * - * @return iroObject - */ - PcepIroObject getIroObject(); - - /** - * Sets the PcepBandwidthObject. - * - * @param bandwidthObject bandwidth object - */ - void setBandwidthObject(PcepBandwidthObject bandwidthObject); - - /** - * Sets the PcepLspaObject. - * - * @param lspaObject lspa object - */ - void setLspaObject(PcepLspaObject lspaObject); - - /** - * Sets the PcepIroObject. - * - * @param iroObject iro object - */ - void setIroObject(PcepIroObject iroObject); - - /** - * Returns PcepMetricObject List. - * - * @return list of metric objects - */ - LinkedList<PcepMetricObject> getMetricObjectList(); - - /** - * Sets PcepMetricObject List. - * - * @param llMetricList list of metric objects - */ - void setMetricObjectList(LinkedList<PcepMetricObject> llMetricList); - - /** - * Builder interface with get and set functions to build PcepAttribute. - */ - interface Builder { - - /** - * Builds PcepAttribute. - * - * @return PcepAttribute - */ - PcepAttribute build(); - - /** - * Returns PcepLspaObject. - * - * @return LspaObject - */ - PcepLspaObject getLspaObject(); - - /** - * Returns PcepBandwidthObject. - * - * @return BandwidthObject - */ - PcepBandwidthObject getBandwidthObject(); - - /** - * Returns PcepIroObject. - * - * @return iroObject - */ - PcepIroObject getIroObject(); - - /** - * Sets the PcepBandwidthObject. - * - * @param bandwidthObject bandwidth object - * @return Builder object for PcepAttrubute - */ - Builder setBandwidthObject(PcepBandwidthObject bandwidthObject); - - /** - * Sets the PcepLspaObject. - * - * @param lspaObject lspa object - * @return Builder object for PcepAttrubute - */ - Builder setLspaObject(PcepLspaObject lspaObject); - - /** - * Sets the PcepIroObject. - * - * @param iroObject iro object - * @return Builder object for PcepAttrubute - */ - Builder setIroObject(PcepIroObject iroObject); - - /** - * Returns PcepMetricObject List. - * - * @return list of metric objects - */ - LinkedList<PcepMetricObject> getMetricObjectList(); - - /** - * Sets PcepMetricObject List. - * - * @param llMetricList list of metric objects - * @return Builder object for PcepAttrubute - */ - Builder setMetricObjectList(LinkedList<PcepMetricObject> llMetricList); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java deleted file mode 100755 index 58d05821..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP Bandwidth Object. - */ -public interface PcepBandwidthObject { - - /** - * Returns bandwidth value. - * - * @return bandwidth value - */ - int getBandwidth(); - - /** - * Sets bandwidth with specified value. - * - * @param iBandwidth Bandwidth's value - */ - void setBandwidth(int iBandwidth); - - /** - * Writes the BandwidthObject into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException if bandwidth object header fails to write in channel buffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build bandwidth object. - */ - interface Builder { - - /** - * Builds BandwidthObject. - * - * @return BandwidthObject - * @throws PcepParseException if build fails while creating PcepBandwidthObject - */ - PcepBandwidthObject build() throws PcepParseException; - - /** - * Returns bandwidth object header. - * - * @return bandwidth object header - */ - PcepObjectHeader getBandwidthObjHeader(); - - /** - * Sets bandwidth object header and returns its builder. - * - * @param obj Bandwidth object header - * @return Builder by setting Bandwidth object header - */ - Builder setBandwidthObjHeader(PcepObjectHeader obj); - - /** - * Returns bandwidth value. - * - * @return bandwidth - */ - int getBandwidth(); - - /** - * Sets bandwidth value and return its builder. - * - * @param iBandwidth bandwidth value - * @return Builder by setting bandwidth - */ - Builder setBandwidth(int iBandwidth); - - /** - * Sets P flag in Bandwidth object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Bandwidth object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java deleted file mode 100644 index 00fad800..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP Close Message. - */ -public interface PcepCloseMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns reason field in Close message. - * - * @return reason field - */ - byte getReason(); - - /** - * Sets reason field in Close message with specified value. - * - * @param value of Reason field - */ - void setReason(byte value); - - /** - * Returns LinkedList of Optional Tlv in Close Message. - * - * @return list of optional tlv - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets LinkedList of Optional Tlvs in Close Message. - * - * @param llOptionalTlv LinkedList of type PcepValueType - */ - void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Close message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepCloseMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns Close Object header. - * - * @return Close Object header - */ - PcepObjectHeader getCloseObjHeader(); - - /** - * Sets close object header and returns its builder. - * - * @param obj close object header - * @return Builder by setting Close object header - */ - Builder setCloseObjHeader(PcepObjectHeader obj); - - /** - * Returns reason field in Close message. - * - * @return reason field in Close message - */ - byte getReason(); - - /** - * Sets reason field and return its builder. - * - * @param value of Reason field - * @return builder by setting reason field - */ - Builder setReason(byte value); - - /** - * Returns LinkedList of Optional Tlvs. - * - * @return list of optional tlv - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets LinkedList of Optional Tlvs in Close Message. - * - * @param llOptionalTlv list of optional tlv - * @return Builder by setting Optional Tlvs - */ - Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Sets P flag in Close object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Close object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java deleted file mode 100755 index 92d43874..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP End Points Object. - */ -public interface PcepEndPointsObject { - - /** - * Returns Source IpAddress from End Points Object. - * - * @return Source IpAddress from End Points Object - */ - int getSourceIpAddress(); - - /** - * Sets Source IpAddress in End Points Object. - * - * @param sourceIpAddress Source IP Address - */ - void setSourceIpAddress(int sourceIpAddress); - - /** - * Returns Destination IpAddress from End Points Object. - * - * @return Destination IpAddress from End Points Object - */ - int getDestIpAddress(); - - /** - * Sets Destination IpAddress in End Points Object. - * - * @param destIpAddress Destination IP Address - */ - void setDestIpAddress(int destIpAddress); - - /** - * Writes the EndPointsObject into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing EndPointObject into ChannelBuffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build EndPoints object. - */ - interface Builder { - - /** - * Builds End Points Object. - * - * @return End Points Object - * @throws PcepParseException while building EndPointObject - */ - PcepEndPointsObject build() throws PcepParseException; - - /** - * Returns End Points Object header. - * - * @return End Points Object header - */ - PcepObjectHeader getEndPointsObjHeader(); - - /** - * Sets End Points Object header and returns its builder. - * - * @param obj End Points Object header - * @return Builder by setting End Points Object header - */ - Builder setEndPointsObjHeader(PcepObjectHeader obj); - - /** - * Returns Source IpAddress from End Points Object. - * - * @return Source IpAddress from End Points Object - */ - int getSourceIpAddress(); - - /** - * Sets Source IpAddress in End Points Object and returns builder. - * - * @param sourceIpAddress Source IP Address - * @return Builder by setting Source IpAddress in End Points Object - */ - Builder setSourceIpAddress(int sourceIpAddress); - - /** - * Returns Destination IpAddress from End Points Object. - * - * @return Destination IpAddress from End Points Object - */ - int getDestIpAddress(); - - /** - * Sets Destination IpAddress in End Points Object. - * - * @param destIpAddress Destination IP Address - * @return Builder by setting Destination IpAddress in End Points Object - */ - Builder setDestIpAddress(int destIpAddress); - - /** - * Sets P flag in Bandwidth object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Bandwidth object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java deleted file mode 100755 index 3af6b759..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP ERO Object. - */ -public interface PcepEroObject { - - /** - * Return LinkedList of SubObjects of ERO Object. - * - * @return list of subobjects - */ - LinkedList<PcepValueType> getSubObjects(); - - /** - * Sets LinkedList of SubObjects in ERO Object. - * - * @param llSubObjects list of subobjects - */ - void setSubObjects(LinkedList<PcepValueType> llSubObjects); - - /** - * Writes the ERO Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing ERO Object into ChannelBuffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build ERO object. - */ - interface Builder { - - /** - * Builds ERO Object. - * - * @return ERO Object - */ - PcepEroObject build(); - - /** - * Returns ERO Object Header. - * - * @return ERO Object Header - */ - PcepObjectHeader getEroObjHeader(); - - /** - * Sets ERO Object header and returns its builder. - * - * @param obj ERO Object header - * @return Builder by setting ERO Object header - */ - Builder setEroObjHeader(PcepObjectHeader obj); - - /** - * Returns LinkedList of SubObjects in ERO Objects. - * - * @return list of subobjects - */ - LinkedList<PcepValueType> getSubObjects(); - - /** - * Sets LinkedList of SubObjects and returns its builder. - * - * @param llSubObjects list of SubObjects - * @return Builder by setting list of SubObjects - */ - Builder setSubObjects(LinkedList<PcepValueType> llSubObjects); - - /** - * Sets P flag in ERO object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in ERO object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java deleted file mode 100755 index b61bfb9f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity which provides PCEP error for PCEP error message. - */ -public interface PcepError { - - /** - * Returns the PcepRPObject List. - * - * @return list of type PcepRPObject - */ - LinkedList<PcepRPObject> getRPObjList(); - - /** - * Sets the RP Objects lists. - * - * @param llRPObjList list of type PcepRPObject - */ - void setRPObjList(LinkedList<PcepRPObject> llRPObjList); - - /** - * Returns the PcepTEObject List. - * - * @return list of type PcepTEObject - */ - LinkedList<PcepTEObject> getTEObjList(); - - /** - * Sets the TE Objects lists. - * - * @param llTEObjList list of type PcepTEObject - */ - void setTEObjList(LinkedList<PcepTEObject> llTEObjList); - - /** - * Returns the PcepErrorObject. - * - * @return list of type PcepErrorObject - */ - LinkedList<PcepErrorObject> getErrorObjList(); - - /** - * Sets the Error Objects lists. - * - * @param llErrorObjList list of type PcepErrorObject - */ - void setErrorObjList(LinkedList<PcepErrorObject> llErrorObjList); - - /** - * Writes the byte stream of PCEP error to the channel buffer. - * - * @param bb of type channel buffer - * @return object length index - * @throws PcepParseException while writing Error part into ChannelBuffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PcepError. - */ - interface Builder { - - /** - * Builds PcepError Object. - * - * @return PcepError Object - */ - PcepError build(); - - /** - * Returns the PcepRPObject. - * - * @return list of type PcepRPObject - */ - LinkedList<PcepRPObject> getRPObjList(); - - /** - * Sets RP Object lists and returns its builder. - * - * @param llRPObjList list of type PcepRpObject - * @return builder by setting Linked list of RP Object - */ - Builder setRPObjList(LinkedList<PcepRPObject> llRPObjList); - - /** - * Returns the PcepTEObject. - * - * @return llTEObjList of type PcepTEObject - */ - LinkedList<PcepTEObject> getTEObjList(); - - /** - * Sets TE Object lists and returns its builder. - * - * @param llTEObjList list of type PcepTEObject - * @return builder by setting list of type PcepTEObject - */ - Builder setTEObjList(LinkedList<PcepTEObject> llTEObjList); - - /** - * Returns the PcepErrorObject. - * - * @return list of type PcepErrorObject - */ - LinkedList<PcepErrorObject> getErrorObjList(); - - /** - * Sets Error Object lists and returns its builder. - * - * @param llErrorObjList list of type PcepErrorObject - * @return builder by setting list of type PcepErrorObject - */ - Builder setErrorObjList(LinkedList<PcepErrorObject> llErrorObjList); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java deleted file mode 100755 index 0c625a03..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity which provides PCEP Error Info. - * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02. - */ -public interface PcepErrorInfo { - - /** - * Returns whether error info list is present or not. - * - * @return true if error info present, false otherwise - */ - boolean isErrorInfoPresent(); - - /** - * Reads from channel buffer for TE and RP objects. - * - * @param bb of channel buffer - * @throws PcepParseException while parsing Error info part. - */ - void read(ChannelBuffer bb) throws PcepParseException; - - /** - * Writes byte stream of PCEP error info to channel buffer. - * - * @param bb of type channel buffer - * @throws PcepParseException while writing Error info part into Channel Buffer. - */ - void write(ChannelBuffer bb) throws PcepParseException; - - /** - * Returns Error Value in PCEP-ERROR Object. - * - * @return list of Error Value in PCEP-ERROR Object - */ - LinkedList<Integer> getErrorValue(); - - /** - * Returns Error Type in PCEP-ERROR Object. - * - * @return list of Error Type in PCEP-ERROR Object - */ - LinkedList<Integer> getErrorType(); - - /** - * Builder interface with get and set functions to build ErrorInfo. - */ - interface Builder { - - /** - * Builds ErrorInfo Object. - * - * @return ErrorInfo Object. - */ - PcepErrorInfo build(); - - /** - * Returns list of PcepError. - * - * @return list of PcepError - */ - LinkedList<PcepError> getPcepErrorList(); - - /** - * Sets PcepError lists and returns its builder. - * - * @param llPcepErrorList list of PcepError - * @return builder by setting list of PcepError. - */ - Builder setPcepErrorList(LinkedList<PcepError> llPcepErrorList); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java deleted file mode 100644 index ff06885d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.ErrorObjListWithOpen; - -/** - * Abstraction of an entity providing PCEP Error Message. - */ -public interface PcepErrorMsg extends PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns Object of ErrorObjListWithOpen. - * - * @return Object of ErrorObjListWithOpen - */ - ErrorObjListWithOpen getErrorObjListWithOpen(); - - /** - * Sets errObjListWithOpen object. - * - * @param errObjListWithOpen error object List with open object - */ - void setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen); - - /** - * Returns Object of PcepErrorInfo. - * - * @return Object of PcepErrorInfo - */ - PcepErrorInfo getPcepErrorInfo(); - - /** - * Sets errInfo Object. - * - * @param errInfo error information - */ - void setPcepErrorInfo(PcepErrorInfo errInfo); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PCEP Error message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepErrorMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns Object of ErrorObjListWithOpen. - * - * @return Object of ErrorObjListWithOpen - */ - ErrorObjListWithOpen getErrorObjListWithOpen(); - - /** - * Sets errObjListWithOpen object. - * - * @param errObjListWithOpen error object with open object - * @return builder by setting Object of ErrorObjListWithOpen - */ - Builder setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen); - - /** - * Returns Object of PcepErrorInfo. - * - * @return Object of PcepErrorInfo - */ - PcepErrorInfo getPcepErrorInfo(); - - /** - * Sets errInfo Object. - * - * @param errInfo error information - * @return builder by getting Object of PcepErrorInfo - */ - Builder setPcepErrorInfo(PcepErrorInfo errInfo); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java deleted file mode 100644 index 16374d5b..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP Error Object. - */ -public interface PcepErrorObject { - - /** - * Returns Error Type in Error Object. - * - * @return Error Type in Error Object - */ - int getErrorType(); - - /** - * Sets Error Type in Error Object. - * - * @param value Error Type - */ - void setErrorType(byte value); - - /** - * Returns Error Value in Error Object. - * - * @return Error Value - */ - byte getErrorValue(); - - /** - * Sets Error Value in Error Object. - * - * @param value Error Value - */ - void setErrorValue(byte value); - - /** - * Returns Optional Tlvs in Error Object. - * - * @return list of Optional Tlvs in Error Object - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets Optional Tlvs in Error Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Writes the Error Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing Error Object into ChannelBuffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Error object. - */ - interface Builder { - - /** - * Builds Error Object. - * - * @return Error Object. - */ - PcepErrorObject build(); - - /** - * Returns Error Object header. - * - * @return Error Object header - */ - PcepObjectHeader getErrorObjHeader(); - - /** - * Sets Error Object header and returns its Builder. - * - * @param obj Error Object header - * @return Builder by setting Error Object header - */ - Builder setErrorObjHeader(PcepObjectHeader obj); - - /** - * Returns Error Type in Error Object. - * - * @return Error Type in Error Object - */ - int getErrorType(); - - /** - * Sets Error Type and returns its builder. - * - * @param value of Error-Type field - * @return builder by setting Error Type field. - */ - Builder setErrorType(byte value); - - /** - * Returns Error Value in Error Object. - * - * @return Error Value - */ - byte getErrorValue(); - - /** - * Sets Error Value and returns its builder. - * - * @param value of Error-Value field - * @return Builder by setting Error Value field. - */ - Builder setErrorValue(byte value); - - /** - * Returns list of Optional Tlvs of Error Object. - * - * @return list of Optional Tlvs of Error Object - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets Optional Tlvs of Error Object and returns its Builder. - * - * @param llOptionalTlv Optional Tlvs of Error Object - * @return Builder by setting Optional Tlvs. - */ - Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Sets P flag in Error object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Error object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java deleted file mode 100644 index 85416f98..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.ver1.PcepFactoryVer1; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Abstraction to provide the version for PCEP. - */ -public final class PcepFactories { - - protected static final Logger log = LoggerFactory.getLogger(PcepFactories.class); - - private static final GenericReader GENERIC_READER = new GenericReader(); - - public static final byte SHIFT_FLAG = 5; - - private PcepFactories() { - } - - /** - * Returns the instance of PCEP Version. - * - * @param version PCEP version - * @return PCEP version - */ - public static PcepFactory getFactory(PcepVersion version) { - switch (version) { - case PCEP_1: - return PcepFactoryVer1.INSTANCE; - default: - throw new IllegalArgumentException("Unknown version: " + version); - } - } - - private static class GenericReader implements PcepMessageReader<PcepMessage> { - - @Override - public PcepMessage readFrom(ChannelBuffer bb) throws PcepParseException { - - if (!bb.readable()) { - throw new PcepParseException("Empty message received"); - } - - /* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Ver | Flags | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * - * Currently Version 1 is supported - * Currently no flags are used, it is all ignored - */ - - byte packetVersion = bb.getByte(bb.readerIndex()); - packetVersion = (byte) (packetVersion >> SHIFT_FLAG); - PcepFactory factory; - - switch (packetVersion) { - - case 1: - factory = org.onosproject.pcepio.protocol.ver1.PcepFactoryVer1.INSTANCE; - break; - default: - throw new PcepParseException("Unknown Packet version: " + packetVersion); - } - return factory.getReader().readFrom(bb); - } - } - - /** - * Returns GENERIC_READER. - * - * @return GENERIC_READER - */ - public static PcepMessageReader<PcepMessage> getGenericReader() { - return GENERIC_READER; - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java deleted file mode 100755 index 1a31e0a3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -/** - * Abstraction of an Message factory providing Builder functions to PCEP Messages and Objects. - * - */ -public interface PcepFactory { - - /** - * To get Builder Object for Open Message. - * - * @return Builder Object for Open Message - */ - PcepOpenMsg.Builder buildOpenMsg(); - - /** - * To get Builder Object for Open Object. - * - * @return Builder Object for Open Object - */ - PcepOpenObject.Builder buildOpenObject(); - - /** - * To get Builder Object for Keepalive Message. - * - * @return Builder Object for Keepalive Message - */ - PcepKeepaliveMsg.Builder buildKeepaliveMsg(); - - /** - * To get Builder Object for Close Message. - * - * @return Builder Object for Close Message - */ - PcepCloseMsg.Builder buildCloseMsg(); - - /** - * To get Builder Object for Report Message. - * - * @return Builder Object for Report Message - */ - PcepReportMsg.Builder buildReportMsg(); - - /** - * To get Builder Object for Update Message. - * - * @return Builder Object for Update Message - */ - PcepUpdateMsg.Builder buildUpdateMsg(); - - /** - * To get Builder Object for Initiate Message. - * - * @return Builder Object for Initiate Message - */ - PcepInitiateMsg.Builder buildPcepInitiateMsg(); - - /** - * To get Builder Object for LSP Object. - * - * @return Builder Object for LSP Object - */ - PcepLspObject.Builder buildLspObject(); - - /** - * To get Builder Object for SRP Object. - * - * @return Builder Object for SRP Object - */ - PcepSrpObject.Builder buildSrpObject(); - - /** - * To get Builder Object for EndPoints Object. - * - * @return Builder Object for EndPoints Object - */ - PcepEndPointsObject.Builder buildEndPointsObject(); - - /** - * To get Builder Object for ERO Object. - * - * @return Builder Object for ERO Object - */ - PcepEroObject.Builder buildEroObject(); - - /** - * To get Builder Object for RRO Object. - * - * @return Builder Object for RRO Object - */ - PcepRroObject.Builder buildRroObject(); - - /** - * To get Builder Object for LSPA Object. - * - * @return Builder Object for LSPA Object - */ - PcepLspaObject.Builder buildLspaObject(); - - /** - * To get Builder Object for IRO Object. - * - * @return Builder Object for IRO Object - */ - PcepIroObject.Builder buildIroObject(); - - /** - * To get Builder Object for METRIC Object. - * - * @return Builder Object for METRIC Object - */ - PcepMetricObject.Builder buildMetricObject(); - - /** - * To get Builder Object for Bandwidth Object. - * - * @return Builder Object for Bandwidth Object - */ - PcepBandwidthObject.Builder buildBandwidthObject(); - - /** - * Returns PCEP Message Reader. - * - * @return PCEP Message Reader - */ - PcepMessageReader<PcepMessage> getReader(); - - /** - * Returns PCEP version. - * - * @return PCEP version - */ - PcepVersion getVersion(); - - /** - * Returns PcepStateReport. - * - * @return PcepStateReport - */ - PcepStateReport.Builder buildPcepStateReport(); - - /** - * Returns PcepUpdateRequest. - * - * @return PcepUpdateRequest - */ - PcepUpdateRequest.Builder buildPcepUpdateRequest(); - - /** - * Returns PcInitiatedLspRequest. - * - * @return PcInitiatedLspRequest - */ - PcInitiatedLspRequest.Builder buildPcInitiatedLspRequest(); - - /** - * Returns PcepMsgPath. - * - * @return PcepMsgPath - */ - PcepMsgPath.Builder buildPcepMsgPath(); - - /** - * Return PcepAttribute list. - * - * @return PcepAttribute - */ - PcepAttribute.Builder buildPcepAttribute(); - - /** - * To get Builder Object for LabelUpdate message. - * - * @return Builder Object for LabelUpdate message - */ - PcepLabelUpdateMsg.Builder buildPcepLabelUpdateMsg(); - - /** - * To get Builder Object for PcepLabelUpdate Object. - * - * @return Builder Object for PcepLabelUpdate Object - */ - PcepLabelUpdate.Builder buildPcepLabelUpdateObject(); - - /** - * To get Builder Object for PcepLabel Object. - * - * @return Builder Object for PcepLabel Object - */ - PcepLabelObject.Builder buildLabelObject(); - - /** - * To get Builder Object for Error Message. - * - * @return Builder Object for Error Message - */ - PcepErrorMsg.Builder buildPcepErrorMsg(); - - /** - * To get Builder Object for Error Object. - * - * @return Builder Object for Error Object - */ - PcepErrorObject.Builder buildPcepErrorObject(); - - /** - * To get Builder Object for FecIpv4Adjacency. - * - * @return Builder Object for FecIpv4Adjacency - */ - PcepFecObjectIPv4Adjacency.Builder buildFecIpv4Adjacency(); - - /** - * To get Builder Object for ErrorInfo. - * - * @return Builder Object for ErrorInfo - */ - PcepErrorInfo.Builder buildPcepErrorInfo(); - - /** - * To get Builder Object for PcepError. - * - * @return Builder Object for PcepError - */ - PcepError.Builder buildPcepError(); - - /** - * To get Builder Object for PcepLabelRangeObject. - * - * @return Builder Object for PcepLabelRangeObject - */ - PcepLabelRangeObject.Builder buildPcepLabelRangeObject(); - - /** - * To get Builder Object for PcepLabelRangeResvMsg. - * - * @return Builder Object for PcepLabelRangeResvMsg - */ - PcepLabelRangeResvMsg.Builder buildPcepLabelRangeResvMsg(); -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java deleted file mode 100755 index 2df7cc9c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP FEC Object. - */ -public interface PcepFecObject { - - /** - * Returns PCEP Version of FEC Object. - * - * @return PCEP Version of FEC Object - */ - PcepVersion getVersion(); - - /** - * Returns FEC Object type. - * - * @return FEC Object type - */ - int getType(); - - /** - * Writes the FEC into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing FEC Object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java deleted file mode 100755 index 5ed4e1e3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP FEC Object of Type 1 IPv4 Node ID. - */ -public interface PcepFecObjectIPv4 extends PcepFecObject { - - /** - * Returns NodeID of FEC Object. - * - * @return NodeID of FEC Object - */ - int getNodeID(); - - /** - * Sets NodeID with specified value. - * - * @param value node id - */ - void setNodeID(int value); - - @Override - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - interface Builder { - - /** - * Builds FEC Object IPv4. - * - * @return FEC Object IPv4 - * @throws PcepParseException while creating FEC IPv4 Object. - */ - PcepFecObjectIPv4 build() throws PcepParseException; - - /** - * Returns FEC Object IPv4 header. - * - * @return FEC Object IPv4 header - */ - PcepObjectHeader getFecIpv4ObjHeader(); - - /** - * Sets FEC Object IPv4 header and returns its builder. - * - * @param obj FEC Object IPv4 header - * @return Builder by setting FEC Object IPv4 header - */ - Builder setFecIpv4ObjHeader(PcepObjectHeader obj); - - /** - * Returns NodeID of FEC Object. - * - * @return NodeID of FEC Object - */ - int getNodeID(); - - /** - * Sets NodeID and returns its builder. - * - * @param value node id - * @return builder by setting NodeID - */ - Builder setNodeID(int value); - - /** - * Sets P flag in FEC object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in FEC object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java deleted file mode 100755 index 55205299..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing FEC Object of Type 3 IPv4 Adjacency. - */ -public interface PcepFecObjectIPv4Adjacency extends PcepFecObject { - - /** - * Returns Local IPv4Address of FEC Object. - * - * @return Local IPv4Address of FEC Object - */ - int getLocalIPv4Address(); - - /** - * Sets Local IPv4Address with specified value. - * - * @param value Local IPv4Address - */ - void seLocalIPv4Address(int value); - - /** - * Returns Remote IPv4Address of FEC Object. - * - * @return Remote IPv4Address of FEC Object - */ - int getRemoteIPv4Address(); - - /** - * Sets Remote IPv4Address with specified value. - * - * @param value Remote IPv4Address - */ - void seRemoteIPv4Address(int value); - - @Override - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - interface Builder { - - /** - * Builds FEC Object IPv4 Adjacency. - * - * @return FEC Object IPv4 Adjacency - * @throws PcepParseException while building FEC IPv4 Adjacency object. - */ - PcepFecObjectIPv4Adjacency build() throws PcepParseException; - - /** - * Returns FEC Object IPv4 Adjacency header. - * - * @return FEC Object IPv4 Adjacency header - */ - PcepObjectHeader getFecIpv4AdjacencyObjHeader(); - - /** - * Sets FEC Object IPv4 Adjacency header and returns its builder. - * - * @param obj FEC Object IPv4 Adjacency header - * @return Builder by setting FEC Object IPv4 header - */ - Builder setFecIpv4AdjacencyObjHeader(PcepObjectHeader obj); - - /** - * Returns Local IPv4Address of FEC Object. - * - * @return Local IPv4Address of FEC Object - */ - int getLocalIPv4Address(); - - /** - * Sets Local IPv4Address and returns its builder. - * - * @param value Local IPv4Address - * @return Builder by setting Local IPv4Address - */ - Builder seLocalIPv4Address(int value); - - /** - * Sets Remote IPv4Address with specified value. - * - * @return Remote IPv4 Address - */ - int getRemoteIPv4Address(); - - /** - * Sets Remote IPv4Address and returns its builder. - * - * @param value Remote IPv4Address - * @return Builder by setting Remote IPv4Address - */ - Builder seRemoteIPv4Address(int value); - - /** - * Sets P flag in FEC object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in FEC object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java deleted file mode 100755 index d240445e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP FEC Object of Type is 5 Unnumbered Adjacency with IPv4 NodeIDs. - */ -public interface PcepFecObjectIPv4UnnumberedAdjacency extends PcepFecObject { - - /** - * Returns Local NodeID of FEC Object. - * - * @return Local NodeID of FEC Object - */ - int getLocalNodeID(); - - /** - * Sets Local NodeID with specified value. - * - * @param value Local NodeID - */ - void setLocalNodeID(int value); - - /** - * Returns Local InterfaceID of FEC Object. - * - * @return Local InterfaceID of FEC Object - */ - int getLocalInterfaceID(); - - /** - * Sets Local InterfaceID with specified value. - * - * @param value Local InterfaceID - */ - void setLocalInterfaceID(int value); - - /** - * Returns Remote NodeID of FEC Object. - * - * @return Remote NodeID of FEC Object - */ - int getRemoteNodeID(); - - /** - * Sets Remote NodeID with specified value. - * - * @param value Remote NodeID - */ - void setRemoteNodeID(int value); - - /** - * Returns Remote InterfaceID of FEC Object. - * - * @return Remote InterfaceID of FEC Object - */ - int getRemoteInterfaceID(); - - /** - * Sets Remote InterfaceID with specified value. - * - * @param value Remote InterfaceID - */ - void setRemoteInterfaceID(int value); - - @Override - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build bandwidth object. - */ - interface Builder { - - /** - * Builds FEC Unnumbered Adjacency with IPv4 Object. - * - * @return FEC Unnumbered Adjacency with IPv4 Object - * @throws PcepParseException when building FEC IPv4 Unnumbered Adjacency object. - */ - PcepFecObjectIPv4UnnumberedAdjacency build() throws PcepParseException; - - /** - * Returns FEC Unnumbered Adjacency with IPv4 header. - * - * @return FEC Unnumbered Adjacency with IPv4 header - */ - PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader(); - - /** - * Sets FEC Unnumbered Adjacency with IPv4 header and returns its builder. - * - * @param obj FEC Unnumbered Adjacency with IPv4 header - * @return Builder by setting FEC Unnumbered Adjacency with IPv4 header - */ - Builder setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj); - - /** - * Returns Local NodeID of FEC Object. - * - * @return Local NodeID of FEC Object - */ - int getLocalNodeID(); - - /** - * Sets Local NodeID and returns its builder. - * - * @param value Local NodeID - * @return Builder by setting Local NodeID - */ - Builder setLocalNodeID(int value); - - /** - * Returns Local InterfaceID of FEC Object. - * - * @return Local InterfaceID of FEC Object - */ - int getLocalInterfaceID(); - - /** - * Sets Local InterfaceID and returns its builder. - * - * @param value Local InterfaceID - * @return Builder by setting Local InterfaceID - */ - Builder setLocalInterfaceID(int value); - - /** - * Returns Remote NodeID of FEC Object. - * - * @return Remote NodeID of FEC Object - */ - int getRemoteNodeID(); - - /** - * Sets Remote NodeID and returns its builder. - * - * @param value Remote NodeID - * @return Builder by setting Remote NodeID - */ - Builder setRemoteNodeID(int value); - - /** - * Returns Remote InterfaceID of FEC Object. - * - * @return Remote InterfaceID of FEC Object - */ - int getRemoteInterfaceID(); - - /** - * Sets Remote InterfaceID and returns its builder. - * - * @param value Remote InterfaceID - * @return Builder by setting Remote InterfaceID - */ - Builder setRemoteInterfaceID(int value); - - /** - * Sets P flag in FEC object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in FEC object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java deleted file mode 100755 index 1c29b76a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing FEC Object of Type is 2 IPv6 Node ID. - */ -public interface PcepFecObjectIPv6 extends PcepFecObject { - - /** - * Returns NodeID of FEC Object. - * - * @return NodeID of FEC Object - */ - byte[] getNodeID(); - - /** - * Sets NodeID with specified value. - * - * @param value node id - */ - void setNodeID(byte[] value); - - @Override - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - interface Builder { - - /** - * Builds FEC Object IPv6. - * - * @return FEC Object IPv6 - * @throws PcepParseException while building FEC IPv6 Object. - */ - PcepFecObjectIPv6 build() throws PcepParseException; - - /** - * Returns FEC Object IPv6 header. - * - * @return FEC Object IPv6 header - */ - PcepObjectHeader getFecIpv6ObjHeader(); - - /** - * Sets FEC Object IPv6 header and returns its builder. - * - * @param obj FEC Object IPv6 header - * @return Builder by setting FEC Object IPv6 header - */ - Builder setFecIpv6ObjHeader(PcepObjectHeader obj); - - /** - * Returns NodeID of FEC Object. - * - * @return NodeID of FEC Object - */ - byte[] getNodeID(); - - /** - * Sets NodeID and returns its builder. - * - * @param value node id - * @return Builder by setting NodeID - */ - Builder setNodeID(byte[] value); - - /** - * Sets P flag in FEC object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in FEC object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java deleted file mode 100755 index ef802780..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing FEC Object of Type is 4 IPv6 Adjacency. - */ -public interface PcepFecObjectIPv6Adjacency extends PcepFecObject { - - /** - * Returns Local IPv6Address of FEC Object. - * - * @return Local IPv6Address of FEC Object - */ - byte[] getLocalIPv6Address(); - - /** - * Sets Local IPv6Address with specified value. - * - * @param value Local IPv6Address - */ - void seLocalIPv6Address(byte[] value); - - /** - * Returns Remote IPv6Address of FEC Object. - * - * @return Remote IPv6Address of FEC Object - */ - byte[] getRemoteIPv6Address(); - - /** - * Sets Remote IPv6Address with specified value. - * - * @param value Remote IPv6Address - */ - void seRemoteIPv6Address(byte[] value); - - @Override - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - interface Builder { - - /** - * Builds FEC Object IPv6 Adjacency. - * - * @return FEC Object IPv6 Adjacency - * @throws PcepParseException while building FEC IPv6 Adjacency object. - */ - PcepFecObjectIPv6Adjacency build() throws PcepParseException; - - /** - * Returns FEC Object IPv6 Adjacency header. - * - * @return FEC Object IPv6 Adjacency header - */ - PcepObjectHeader getFecIpv6AdjacencyObjHeader(); - - /** - * Sets FEC Object IPv6 Adjacency header and returns its builder. - * - * @param obj FEC Object IPv6 Adjacency header - * @return Builder by setting FEC Object IPv6 Adjacency header - */ - Builder setFecIpv6AdjacencyObjHeader(PcepObjectHeader obj); - - /** - * Returns Local IPv6Address of FEC Object. - * - * @return Local IPv6Address of FEC Object - */ - byte[] getLocalIPv6Address(); - - /** - * Sets Local IPv6Address and returns its builder. - * - * @param value Local IPv6Address - * @return Builder by setting Local IPv6Address - */ - Builder setLocalIPv6Address(byte[] value); - - /** - * Returns Remote IPv6Address of FEC Object. - * - * @return Remote IPv6Address of FEC Object - */ - byte[] getRemoteIPv6Address(); - - /** - * Sets Remote IPv6Address and returns its builder. - * - * @param value Remote IPv6Address - * @return Builder by setting Remote IPv6Address - */ - Builder setRemoteIPv6Address(byte[] value); - - /** - * Sets P flag in FEC object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in FEC object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java deleted file mode 100755 index 2b061430..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Initiate Message. - */ -public interface PcepInitiateMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of PcInitiatedLspRequestList. - * - * @return list of PcInitiatedLspRequestList - */ - LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList(); - - /** - * Sets list of PcInitiatedLspRequestList. - * - * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequestList - */ - void setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Initiate message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepInitiateMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of PcInitiatedLspRequestList. - * - * @return list of PcInitiatedLspRequestList - */ - LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList(); - - /** - * Sets PcInitiatedLspRequestList. - * - * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequestList - * @return builder by setting list of PcInitiatedLspRequestList - */ - Builder setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java deleted file mode 100755 index 675e0557..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP INTER Layer Object. - */ -public interface PcepInterLayerObject { - - /** - * Returns N Flag in INTER Layer Object. - * - * @return N Flag in INTER Layer Object - */ - boolean getbNFlag(); - - /** - * Sets N Flag in INTER Layer Object with specified value. - * - * @param value N Flag - */ - void setbNFlag(boolean value); - - /** - * Returns I Flag in INTER Layer Object. - * - * @return I Flag in INTER Layer Object - */ - boolean getbIFlag(); - - /** - * Sets I Flag in INTER Layer Object with specified value. - * - * @param value I Flag - */ - void setbIFlag(boolean value); - - /** - * Writes the INTER Layer Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing Inter Layer Object. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build INTER Layer object. - */ - interface Builder { - - /** - * Builds INTER Layer object. - * - * @return INTER Layer object - */ - PcepInterLayerObject build(); - - /** - * Returns INTER Layer object header. - * - * @return INTER Layer object header - */ - PcepObjectHeader getInterLayerObjHeader(); - - /** - * Sets INTER Layer object header and returns its builder. - * - * @param obj INTER Layer object header - * @return Builder by setting INTER Layer object header - */ - Builder setInterLayerObjHeader(PcepObjectHeader obj); - - /** - * Returns N Flag in INTER Layer Object. - * - * @return N Flag in INTER Layer Object - */ - boolean getbNFlag(); - - /** - * Sets N flag and return its builder. - * - * @param value N flag - * @return Builder by setting N flag - */ - Builder setbNFlag(boolean value); - - /** - * Returns I Flag in INTER Layer Object. - * - * @return I Flag in INTER Layer Object - */ - boolean getbIFlag(); - - /** - * Sets I flag and return its builder. - * - * @param value I flag - * @return Builder by setting N flag - */ - Builder setbIFlag(boolean value); - - /** - * Sets P flag in INTER Layer object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in INTER Layer object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java deleted file mode 100755 index a1c1fc59..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP IRO Object. - */ -public interface PcepIroObject { - - /** - * Returns list of SubObjects. - * - * @return list of SubObjects - */ - LinkedList<PcepValueType> getSubObjects(); - - /** - * Sets list of SubObjects. - * - * @param llSubObjects list of SubObjects - */ - void setSubObjects(LinkedList<PcepValueType> llSubObjects); - - /** - * Writes the IRO into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing IRO object. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build IRO object. - */ - interface Builder { - - /** - * Builds IRO Object. - * - * @return IRO Object - */ - PcepIroObject build(); - - /** - * Returns IRO object header. - * - * @return IRO object header - */ - PcepObjectHeader getIroObjHeader(); - - /** - * Sets IRO object header and returns its builder. - * - * @param obj IRO object header - * @return Builder by setting IRO object header - */ - Builder setIroObjHeader(PcepObjectHeader obj); - - /** - * Returns list of SubObjects. - * - * @return list of SubObjects - */ - LinkedList<PcepValueType> getSubObjects(); - - /** - * Sets list of SubObjects in IRO Object and returns its builder. - * - * @param llSubObjects list of SubObjects - * @return Builder by setting list of SubObjects - */ - Builder setSubObjects(LinkedList<PcepValueType> llSubObjects); - - /** - * Sets P flag in IRO object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in IRO object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java deleted file mode 100755 index 160f0a2a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; - -/** - * Abstraction of an entity providing PCEP Keepalive Message. - */ -public interface PcepKeepaliveMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - @Override - void writeTo(ChannelBuffer channelBuffer); - - /** - * Builder interface with get and set functions to build Keepalive message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepKeepaliveMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java deleted file mode 100755 index b64c21e0..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP Label Object. - */ -public interface PcepLabelObject { - - /** - * Returns O flag in Label Object. - * - * @return Boolean value - */ - boolean getOFlag(); - - /** - * Sets O flag in Label Object with specified value. - * - * @param value O flag - */ - void setOFlag(boolean value); - - /** - * Returns Label from Label Object. - * - * @return Label value - */ - int getLabel(); - - /** - * Sets Label field in Label Object with specified value. - * - * @param value Label - */ - void setLabel(int value); - - /** - * Returns list of Optional Tlvs. - * - * @return list of Optional Tlvs - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets Optional Tlvs in Label Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Writes the Label Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing LABEL object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Label object. - */ - interface Builder { - - /** - * Builds Label Object. - * - * @return Label Object - * @throws PcepParseException while building LABEL object. - */ - PcepLabelObject build() throws PcepParseException; - - /** - * Returns Label object header. - * - * @return Label object header - */ - PcepObjectHeader getLabelObjHeader(); - - /** - * Sets Label object header and returns its builder. - * - * @param obj Label object header - * @return Builder by setting Label object header - */ - Builder setLabelObjHeader(PcepObjectHeader obj); - - /** - * Returns O flag in Label Object. - * - * @return Label value - */ - boolean getOFlag(); - - /** - * Sets O flag and return its builder. - * - * @param value O flag - * @return Builder by setting O flag - */ - Builder setOFlag(boolean value); - - /** - * Returns Label from Label Object. - * - * @return Label value - */ - int getLabel(); - - /** - * Sets Label field and return its builder. - * - * @param value Label field - * @return Builder by setting Label field - */ - Builder setLabel(int value); - - /** - * Returns list of Optional Tlvs. - * - * @return list of Optional Tlvs - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets list of Optional Tlvs and return its builder. - * - * @param llOptionalTlv list of Optional Tlvs - * @return Builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Sets P flag in Label object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Label object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java deleted file mode 100755 index 72d0a38e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Label Range. - */ -public interface PcepLabelRange { - - /** - * Returns object of PCEP SRP Object. - * - * @return srpObject - */ - PcepSrpObject getSrpObject(); - - /** - * Sets PCEP SRP Object. - * - * @param srpObject SRP object. - */ - void setSrpObject(PcepSrpObject srpObject); - - /** - * Returns list of PcepLabelRangeObject. - * - * @return Label Range List - */ - LinkedList<PcepLabelRangeObject> getLabelRangeList(); - - /** - * Sets list of PcepLabelRangeObject. - * - * @param llLabelRangeList Label Range List - */ - void setLabelRangeList(LinkedList<PcepLabelRangeObject> llLabelRangeList); - - /** - * Write the byte stream of PcepLabelRange to channel buffer. - * - * @param bb of type channel buffer - * @return object length index - * @throws PcepParseException while writing LABEL RANGE into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java deleted file mode 100755 index 9155434e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP LabelRange Object. - */ -public interface PcepLabelRangeObject { - - /** - * Sets LabelRange Object header. - * - * @param obj LabelRange Object header - */ - void setLabelRangeObjHeader(PcepObjectHeader obj); - - /** - * Sets LabelType in LabelRange Object. - * - * @param labelType label type value - */ - void setLabelType(byte labelType); - - /** - * Sets RangeSize in LabelRange Object. - * - * @param rangeSize range size value - */ - void setRangeSize(int rangeSize); - - /** - * Sets LabelBase in LabelRange Object. - * - * @param labelBase label base value - */ - void setLabelBase(int labelBase); - - /** - * Returns LabelRange object header. - * - * @return LabelRange object header - */ - PcepObjectHeader getLabelRangeObjHeader(); - - /** - * Returns LabelType field in LabelRange object. - * - * @return LabelType field in LabelRange object - */ - byte getLabelType(); - - /** - * Returns RangeSize field in LabelRange object. - * - * @return RangeSize field in LabelRange object - */ - int getRangeSize(); - - /** - * Returns LabelBase field in LabelRange object. - * - * @return LabelBase field in LabelRange object - */ - int getLabelBase(); - - /** - * Writes the LabelRange Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing LABEL RANGE object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build LabelRange object. - */ - interface Builder { - - /** - * Builds LabelRange Object. - * - * @return LabelRange Object - * @throws PcepParseException while building LABEL RANGE object. - */ - PcepLabelRangeObject build() throws PcepParseException; - - /** - * Returns LabelRange object header. - * - * @return LabelRange object header - */ - PcepObjectHeader getLabelRangeObjHeader(); - - /** - * Sets LabelRange object header and returns its builder. - * - * @param obj LabelRange object header - * @return Builder by setting LabelRange object header - */ - Builder setLabelRangeObjHeader(PcepObjectHeader obj); - - /** - * Returns LabelType field in LabelRange object. - * - * @return LabelType field in LabelRange object - */ - byte getLabelType(); - - /** - * Sets LabelType field and returns its builder. - * - * @param labelType LabelType field - * @return Builder by setting LabelType field - */ - Builder setLabelType(byte labelType); - - /** - * Returns RangeSize field in LabelRange object. - * - * @return RangeSize field in LabelRange object - */ - int getRangeSize(); - - /** - * Sets RangeSize field and returns its builder. - * - * @param rangeSize RangeSize field - * @return Builder by setting RangeSize field - */ - Builder setRangeSize(int rangeSize); - - /** - * Returns LabelBase field in LabelRange object. - * - * @return LabelBase field in LabelRange object - */ - int getLabelBase(); - - /** - * Sets LabelBase field and returns its builder. - * - * @param labelBase LabelBase field - * @return Builder by setting LabelBase field - */ - Builder setLabelBase(int labelBase); - - /** - * Sets P flag in TE object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in TE object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java deleted file mode 100755 index 3e2a3a95..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Label Range Reservation Message. - */ -public interface PcepLabelRangeResvMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns LabelRange field in Label Range Reservation message. - * - * @return LabelRange field - */ - PcepLabelRange getLabelRange(); - - /** - * Sets LabelRange field in Label Range Reservation message with specified value. - * - * @param lR label range object - */ - void setLabelRange(PcepLabelRange lR); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Label Range Reservation message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepLabelRangeResvMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns LabelRange field in Label Range Reservation message. - * - * @return LabelRange object - */ - PcepLabelRange getLabelRange(); - - /** - * Sets LabelRange field and returns its Builder. - * - * @param lR label range object - * @return builder by setting LabelRange field - */ - Builder setLabelRange(PcepLabelRange lR); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java deleted file mode 100644 index 5ef870d4..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepLabelDownload; -import org.onosproject.pcepio.types.PcepLabelMap; - -/*** - * Abstraction to provide PCEP Label Updates. - */ -public interface PcepLabelUpdate { - - /** - * Writes the byte stream of PcepLabelUpdate into channel buffer. - * - * @param bb of type channel buffer - * @throws PcepParseException while writing LABEL UPDATE. - */ - void write(ChannelBuffer bb) throws PcepParseException; - - /** - * Sets the Label Download object. - * - * @param labelDownload PCEP Label Download object - */ - void setLabelDownload(PcepLabelDownload labelDownload); - - /** - * Returns the PcepLabelDownload object. - * - * @return labelDownload PCEP Label Download - */ - PcepLabelDownload getLabelDownload(); - - /** - * Sets the Label map object. - * - * @param labelMap PCEP Label Map object - */ - void setLabelMap(PcepLabelMap labelMap); - - /** - * Returns the PcepLabelMap object. - * - * @return labelMap PCEP Label Map - */ - PcepLabelMap getLabelMap(); - - /** - * Builder interface with get and set functions to build Label Update message. - */ - interface Builder { - - /** - * Builds PcepLableUpdate Object. - * - * @return PcepLableUpdate Object - * @throws PcepParseException while building LABEL-UPDATE. - */ - PcepLabelUpdate build() throws PcepParseException; - - /** - * Sets the Label Download object. - * - * @param labelDownload PCEP Label Download object - * @return Builder by setting labelDownload object - */ - Builder setLabelDownload(PcepLabelDownload labelDownload); - - /** - * Returns the PcepLabelDownload object. - * - * @return labelDownload PCEP Label Download - */ - PcepLabelDownload getLabelDownload(); - - /** - * Sets the Label map object. - * - * @param labelMap PCEP Label Map object - * @return Builder by setting PcepLabelMap object - */ - Builder setLabelMap(PcepLabelMap labelMap); - - /** - * Returns the PcepLabelMap object. - * - * @return labelMap PCEP Label Map - */ - PcepLabelMap getLabelMap(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java deleted file mode 100755 index 3740df3b..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Label Update Message. - */ -public interface PcepLabelUpdateMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of PcLabelUpdateList. - * - * @return list of PcLabelUpdateList. - */ - LinkedList<PcepLabelUpdate> getPcLabelUpdateList(); - - /** - * Sets list of PcLabelUpdateList. - * - * @param llPcLabelUpdateList list of PcLabelUpdateList - */ - void setPcLabelUpdateList(LinkedList<PcepLabelUpdate> llPcLabelUpdateList); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Label Update message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepLabelUpdateMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of PcLabelUpdateList. - * - * @return list of PcLabelUpdateList. - */ - LinkedList<PcepLabelUpdate> getPcLabelUpdateList(); - - /** - * Sets list of PcLabelUpdateList. - * - * @param llPcLabelUpdateList list of PcLabelUpdateList. - * @return Builder by setting list of PcLabelUpdateList. - */ - Builder setPcLabelUpdateList(LinkedList<PcepLabelUpdate> llPcLabelUpdateList); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java deleted file mode 100755 index 5d55250a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP LSP Object. - */ -public interface PcepLspObject { - - /** - * Returns PlspId of LSP Object. - * - * @return PlspId of LSP Object - */ - int getPlspId(); - - /** - * Sets PlspId with specified value. - * - * @param value PlspId - */ - void setPlspId(int value); - - /** - * Returns O flag in LSP Object. - * - * @return O flag in LSP Object - */ - byte getOFlag(); - - /** - * Sets O flag with specified value. - * - * @param value O flag - */ - void setOFlag(byte value); - - /** - * Returns A flag in LSP Object. - * - * @return A flag in LSP Object - */ - boolean getAFlag(); - - /** - * Sets A flag with specified value. - * - * @param value A flag - */ - void setAFlag(boolean value); - - /** - * Returns R flag in LSP Object. - * - * @return R flag in LSP Object - */ - boolean getRFlag(); - - /** - * Sets R flag with specified value. - * - * @param value R flag - */ - void setRFlag(boolean value); - - /** - * Returns S flag in LSP Object. - * - * @return S flag in LSP Object - */ - boolean getSFlag(); - - /** - * Sets S flag with specified value. - * - * @param value S flag - */ - void setSFlag(boolean value); - - /** - * Returns D flag in LSP Object. - * - * @return D flag in LSP Object - */ - boolean getDFlag(); - - /** - * Sets D flag with specified value. - * - * @param value D flag - */ - void setDFlag(boolean value); - - /** - * Returns list of Optional Tlvs in LSP Object. - * - * @return list of Optional Tlvs - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in LSP Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Writes the LSP Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing LSP object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build LSP object. - */ - interface Builder { - - /** - * Builds LSP Object. - * - * @return LSP Object - */ - PcepLspObject build(); - - /** - * Returns LSP object header. - * - * @return LSP object header - */ - PcepObjectHeader getLspObjHeader(); - - /** - * Sets LSP object header and returns its builder. - * - * @param obj LSP object header - * @return Builder by setting LSP object header - */ - Builder setLspObjHeader(PcepObjectHeader obj); - - /** - * Returns PlspId of LSP Object. - * - * @return PlspId of LSP Object - */ - int getPlspId(); - - /** - * Sets PlspId with specific value and return its builder. - * - * @param value PlspId - * @return Builder by setting PlspId - */ - Builder setPlspId(int value); - - /** - * Returns O flag in LSP Object. - * - * @return O flag in LSP Object - */ - byte getOFlag(); - - /** - * Sets O flag with specific value and return its builder. - * - * @param value O flag - * @return Builder by setting O flag - */ - Builder setOFlag(byte value); - - /** - * Returns A flag in LSP Object. - * - * @return A flag in LSP Object - */ - boolean getAFlag(); - - /** - * Sets A flag with specific value and return its builder. - * - * @param value A flag - * @return Builder by setting A flag - */ - Builder setAFlag(boolean value); - - /** - * Returns A flag in LSP Object. - * - * @return A flag in LSP Object - */ - boolean getRFlag(); - - /** - * Sets R flag with specific value and return its builder. - * - * @param value r flag - * @return Builder by setting r flag - */ - Builder setRFlag(boolean value); - - /** - * Returns S flag in LSP Object. - * - * @return S flag in LSP Object - */ - boolean getSFlag(); - - /** - * Sets S flag with specific value and return its builder. - * - * @param value s flag - * @return Builder by setting S flag - */ - Builder setSFlag(boolean value); - - /** - * Returns D flag in LSP Object. - * - * @return D flag in LSP Object - */ - boolean getDFlag(); - - /** - * Sets D flag with specific value and return its builder. - * - * @param value D flag - * @return Builder by setting D flag - */ - Builder setDFlag(boolean value); - - /** - * Returns list of Optional Tlvs in LSP Object. - * - * @return list of Optional Tlvs in LSP Object - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets list of Optional Tlvs and return its builder. - * - * @param llOptionalTlv list of Optional Tlvs - * @return Builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Sets P flag in LSP object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in LSP object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java deleted file mode 100755 index d541e92b..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP LSPA Object. - */ -public interface PcepLspaObject { - - /** - * Returns L flag in LSPA Object. - * - * @return L flag in LSPA Object - */ - boolean getLFlag(); - - /** - * Sets L flag in LSPA Object. - * - * @param value L flag - */ - void setLFlag(boolean value); - - /** - * Returns Exclude Any field in LSPA Object. - * - * @return Exclude Any field in LSPA Object - */ - int getExcludeAny(); - - /** - * Sets Exclude Any field in LSPA Object. - * - * @param value Exclude Any field - */ - void setExcludeAny(int value); - - /** - * Returns Include Any field in LSPA Object. - * - * @return Include Any field in LSPA Object - */ - int getIncludeAny(); - - /** - * Sets Include Any field in LSPA Object. - * - * @param value Include Any field - */ - void setIncludeAny(int value); - - /** - * Returns Include All field in LSPA Object. - * - * @return Include All field in LSPA Object - */ - int getIncludeAll(); - - /** - * Sets Include All field in LSPA Object. - * - * @param value Include All field - */ - void setIncludeAll(int value); - - /** - * Returns Setup Priority field in LSPA Object. - * - * @return Setup Priority field in LSPA Object - */ - byte getSetupPriority(); - - /** - * Sets Setup Priority field in LSPA Object. - * - * @param value Setup Priority field - */ - void setSetupPriority(byte value); - - /** - * Returns Hold Priority field in LSPA Object. - * - * @return Hold Priority field in LSPA Object - */ - byte getHoldPriority(); - - /** - * Sets Hold Priority field in LSPA Object. - * - * @param value Hold Priority field - */ - void setHoldPriority(byte value); - - /** - * Returns list of Optional Tlvs in LSPA Object. - * - * @return list of Optional Tlvs in LSPA Object - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets Optional Tlvs in LSPA Object. - * - * @param llOptionalTlv Optional Tlvs in LSPA Object - */ - void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Writes the LSPA Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing LSPA object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build bandwidth object. - */ - interface Builder { - - /** - * Builds LSPA Object. - * - * @return LSPA Object - * @throws PcepParseException while building LSPA object. - */ - PcepLspaObject build() throws PcepParseException; - - /** - * Returns LSPA object header. - * - * @return LSPA object header - */ - PcepObjectHeader getLspaObjHeader(); - - /** - * Sets LSPA object header and returns its builder. - * - * @param obj LSPA object header - * @return Builder by setting LSPA object header - */ - Builder setLspaObjHeader(PcepObjectHeader obj); - - /** - * Returns L flag in LSPA Object. - * - * @return L flag in LSPA Object - */ - boolean getLFlag(); - - /** - * Sets L flag in LSPA Object and return its builder. - * - * @param value L flag in LSPA Object - * @return Builder by setting L flag - */ - Builder setLFlag(boolean value); - - /** - * Returns Exclude Any field in LSPA Object. - * - * @return Exclude Any field in LSPA Object - */ - int getExcludeAny(); - - /** - * Sets Exclude Any field in LSPA Object and return its builder. - * - * @param value Exclude Any field in LSPA Object - * @return Builder by setting Exclude Any field - */ - Builder setExcludeAny(int value); - - /** - * Returns Include Any field in LSPA Object. - * - * @return Include Any field in LSPA Object - */ - int getIncludeAny(); - - /** - * Sets Include Any field in LSPA Object and return its builder. - * - * @param value Include Any field in LSPA Object - * @return Builder by setting Include Any field - */ - Builder setIncludeAny(int value); - - /** - * Returns Include All field in LSPA Object. - * - * @return Include All field in LSPA Object - */ - int getIncludeAll(); - - /** - * Sets Include All field in LSPA Object and return its builder. - * - * @param value Include All field in LSPA Object - * @return Builder by setting Include All field - */ - Builder setIncludeAll(int value); - - /** - * Returns Setup Priority field in LSPA Object. - * - * @return Setup Priority field in LSPA Object - */ - byte getSetupPriority(); - - /** - * Sets Setup Priority field in LSPA Object and return its builder. - * - * @param value Setup Priority field in LSPA Object - * @return Builder by setting Setup Priority field - */ - Builder setSetupPriority(byte value); - - /** - * Returns Hold Priority field in LSPA Object. - * - * @return Hold Priority field in LSPA Object - */ - byte getHoldPriority(); - - /** - * Sets Hold Priority field in LSPA Object and return its builder. - * - * @param value Hold Priority field in LSPA Object - * @return Builder by setting Hold Priority field - */ - Builder setHoldPriority(byte value); - - /** - * Returns list of Optional Tlvs in LSPA Object. - * - * @return list of Optional Tlvs in LSPA Object - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in LSPA Object. - * - * @param llOptionalTlv list of Optional Tlvs - * @return builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Sets P flag in LSPA object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in LSPA object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java deleted file mode 100755 index 7de07169..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Messages. - */ -public interface PcepMessage extends PcepObject { - - @Override - PcepVersion getVersion(); - - /** - * Returns Type of PCEP Message. - * - * @return Type of PCEP Message - */ - PcepType getType(); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PCEP Message. - */ - interface Builder { - - /** - * Builds PCEP Message. - * - * @return PCEP Message - * @throws PcepParseException when build fails to create PCEP message - */ - PcepMessage build() throws PcepParseException; - - /** - * Returns Version of PCEP Message. - * - * @return Version of PCEP Message - */ - PcepVersion getVersion(); - - /** - * Returns Type of PCEP Message. - * - * @return Type of PCEP Message - */ - PcepType getType(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java deleted file mode 100755 index 591a033d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Message Reader. - */ -public interface PcepMessageReader<T> { - - /** - * Reads the Objects in the PCEP Message and Returns PCEP Message. - * - * @param bb Channel Buffer - * @return PCEP Message - * @throws PcepParseException while parsing PCEP message. - * @throws PcepParseException when received message is empty - */ - T readFrom(ChannelBuffer bb) throws PcepParseException; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java deleted file mode 100755 index e7477b51..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Message Writer. - */ -public interface PcepMessageWriter<T> { - - /** - * Writes the Objects of the PCEP Message into Channel Buffer. - * - * @param bb Channel Buffer - * @param message PCEP Message - * @throws PcepParseException while writing PCEP message. - */ - void write(ChannelBuffer bb, T message) throws PcepParseException; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java deleted file mode 100755 index 380fb42e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP Metric Object. - */ -public interface PcepMetricObject { - - /** - * Returns Metric value in Metric Object. - * - * @return Metric value - */ - int getMetricVal(); - - /** - * Sets Metric value in Metric Object with specified value. - * - * @param value Metric value - */ - void setMetricVal(int value); - - /** - * Returns Y flag in Metric Object. - * - * @return Y flag in Metric Object - */ - byte getYFlag(); - - /** - * Sets Y flag in Metric Object with specified value. - * - * @param value Y flag - */ - void setYFlag(byte value); - - /** - * Returns C flag in Metric Object. - * - * @return C flag in Metric Object - */ - boolean getCFlag(); - - /** - * Sets C flag in Metric Object with specified value. - * - * @param value C flag - */ - void setCFlag(boolean value); - - /** - * Returns B flag in Metric Object. - * - * @return B flag in Metric Object - */ - boolean getBFlag(); - - /** - * Sets B flag in Metric Object with specified value. - * - * @param value B flag - */ - void setBFlag(boolean value); - - /** - * Returns BType field in Metric Object. - * - * @return BType field in Metric Object - */ - byte getBType(); - - /** - * Sets BType field in Metric Object with specified value. - * - * @param value BType field - */ - void setBType(byte value); - - /** - * Writes the Metric Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing METRIC object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Metric object. - */ - interface Builder { - - /** - * Builds Metric Object. - * - * @return Metric Object - * @throws PcepParseException when mandatory object is not set - */ - PcepMetricObject build() throws PcepParseException; - - /** - * Returns Metric object header. - * - * @return Metric object header - */ - PcepObjectHeader getMetricObjHeader(); - - /** - * Sets Metric object header and returns its builder. - * - * @param obj Metric object header - * @return Builder by setting Metric object header - */ - Builder setMetricObjHeader(PcepObjectHeader obj); - - /** - * Returns Metric value in Metric Object. - * - * @return Metric value - */ - int getMetricVal(); - - /** - * Sets Metric Value in Metric Object and returns its builder. - * - * @param value Metric Value - * @return Builder by setting Metric Value - */ - Builder setMetricVal(int value); - - /** - * Returns Flags in Metric Object. - * - * @return Flags in Metric Object - */ - byte getYFlag(); - - /** - * Sets Flags in Metric Object and returns its builder. - * - * @param value Flags - * @return Builder by setting Flags - */ - Builder setYFlag(byte value); - - /** - * Returns C flag in Metric Object. - * - * @return C flag in Metric Object - */ - boolean getCFlag(); - - /** - * Sets C flag in Metric Object and returns its builder. - * - * @param value C flag - * @return Builder by setting C flag - */ - Builder setCFlag(boolean value); - - /** - * Returns B flag in Metric Object. - * - * @return B flag in Metric Object - */ - boolean getBFlag(); - - /** - * Sets B flag in Metric Object and returns its builder. - * - * @param value B flag - * @return Builder by setting B flag - */ - Builder setBFlag(boolean value); - - /** - * Returns BType field in Metric Object. - * - * @return BType field in Metric Object - */ - byte getBType(); - - /** - * Sets B Type field in Metric Object and returns its builder. - * - * @param value B Type field - * @return Builder by setting B Type field - */ - Builder setBType(byte value); - - /** - * Sets P flag in Metric object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Metric object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java deleted file mode 100644 index 4b1d50a5..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity Provides PCEP Message PAth for update message. - * Reference :PCE extensions for stateful draft-ietf-pce-stateful-pce-10. - */ -public interface PcepMsgPath { - - /** - * Returns object of PcepEroObject. - * - * @return eroObject - */ - PcepEroObject getEroObject(); - - /** - * Returns object of PcepAttribute. - * - * @return pcepAttribute - */ - PcepAttribute getPcepAttribute(); - - /** - * Sets PcepEroObject. - * - * @param eroObject PCEP ERO Object. - */ - void setEroObject(PcepEroObject eroObject); - - /** - * Sets PcepAttribute. - * - * @param pcepAttribute PCEP-Attribute. - */ - void setPcepAttribute(PcepAttribute pcepAttribute); - - /** - * reads ERO object and attribute list. - * - * @param bb of type channel buffer - * @return PcepMsgPath - * @throws PcepParseException while parsing Message Path from Channel Buffer. - */ - PcepMsgPath read(ChannelBuffer bb) throws PcepParseException; - - /** - * writes ERO object and attribute list to channel. - * - * @param bb of type channel buffer - * @return object length index - * @throws PcepParseException while writing Message Path into Channel Buffer. - */ - - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PcepMsgPath. - */ - interface Builder { - - /** - * Builds PcepMsgPath. - * - * @return PcepMsgPath - * @throws PcepParseException when mandatory object is not set - */ - PcepMsgPath build() throws PcepParseException; - - /** - * Returns object of PcepEroObject. - * - * @return PcepEroObject - */ - PcepEroObject getEroObject(); - - /** - * Returns object of PcepAttribute. - * - * @return pcepAttribute - */ - PcepAttribute getPcepAttribute(); - - /** - * Sets PcepEroObject. - * - * @param eroObject PcepEroObject - * @return Builder by setting ERO object. - */ - Builder setEroObject(PcepEroObject eroObject); - - /** - * Sets PcepAttribute. - * - * @param pcepAttribute PCEP-Attribute - * @return Builder by setting PCEP-Attribute. - */ - Builder setPcepAttribute(PcepAttribute pcepAttribute); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java deleted file mode 100755 index 6be8c65a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; - -/** - * Abstraction of an entity provides NAI information in SR ERO Object. - */ -public interface PcepNai { - - /** - * To get the ST type of the NAI information. - * - * @return type of ST info - */ - byte getType(); - - /** - * To write the object information to channelBuffer. - * - * @param cb of type channel buffer - * @return length of written bytes. - */ - int write(ChannelBuffer cb); -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java deleted file mode 100755 index 26dad566..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -/** - * Abstraction of an entity providing PCEP Object. - */ -public interface PcepObject extends Writeable { - - /** - * Returns Version of PCEP Object. - * - * @return Version of PCEP Object - */ - PcepVersion getVersion(); -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java deleted file mode 100644 index 904156f0..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Open Message. - */ -public interface PcepOpenMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Sets OpenObject in Open Message with Specified Obj. - * - * @param obj OpenObject - */ - void setPcepOpenObject(PcepOpenObject obj); - - /** - * Returns OpenObject in Open Message. - * - * @return OpenObject in Open Message - */ - PcepOpenObject getPcepOpenObject(); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Open message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepOpenMsg build() throws PcepParseException; - - /** - * Sets Open Object in Open Message and return its builder. - * - * @param obj Open Object - * @return builder by setting Open Object - */ - Builder setPcepOpenObj(PcepOpenObject obj); - - /** - * Returns OpenObject in Open Message. - * - * @return OpenObject in Open Message - */ - PcepOpenObject getPcepOpenObj(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java deleted file mode 100755 index 13dd2fa8..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP Open Object. - */ -public interface PcepOpenObject { - - /** - * Returns Open object header. - * - * @return Open object header - */ - PcepObjectHeader getOpenObjHeader(); - - /** - * Sets Open object header in Open Object. - * - * @param obj Open object header - */ - void setOpenObjHeader(PcepObjectHeader obj); - - /** - * Returns version of Open Object. - * - * @return Version of Open Object - */ - PcepVersion getVersion(); - - /** - * Returns KeepAlive Time in Open Object. - * - * @return KeepAlive Time in Open Object - */ - byte getKeepAliveTime(); - - /** - * Sets KeepAlive Time in Open Object with specified value. - * - * @param value KeepAlive Time - */ - void setKeepAliveTime(byte value); - - /** - * Returns Dead Time in Open Object. - * - * @return Dead Time in Open Object - */ - byte getDeadTime(); - - /** - * Sets Dead Time in Open Object with specified value. - * - * @param value Dead Time - */ - void setDeadTime(byte value); - - /** - * Returns SessionId in Open Object. - * - * @return SessionId in Open Object - */ - byte getSessionId(); - - /** - * Sets SessionId in Open Object with specified value. - * - * @param value SessionId - */ - void setSessionId(byte value); - - /** - * Returns list of Optional Tlvs in Open Object. - * - * @return list of Optional Tlvs - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in Open Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Writes the Open into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing Open Object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Open object. - */ - interface Builder { - - /** - * Builds Open Object. - * - * @return Open Object - * @throws PcepParseException while building PCEP-Open object - */ - PcepOpenObject build() throws PcepParseException; - - /** - * Returns Open object header. - * - * @return Open object header - */ - PcepObjectHeader getOpenObjHeader(); - - /** - * Sets Open object header and returns its builder. - * - * @param obj Open object header - * @return Builder by setting Open object header - */ - Builder setOpenObjHeader(PcepObjectHeader obj); - - /** - * Returns KeepAlive Time in Open Object. - * - * @return KeepAlive Time in Open Object - */ - byte getKeepAliveTime(); - - /** - * Sets KeepAlive Time and returns its builder. - * - * @param value KeepAlive Time - * @return Builder by setting KeepAlive Time - */ - Builder setKeepAliveTime(byte value); - - /** - * Returns Dead Time in Open Object. - * - * @return Dead Time in Open Object - */ - byte getDeadTime(); - - /** - * Sets Dead Time and returns its builder. - * - * @param value Dead Time - * @return Builder by setting Dead Time - */ - Builder setDeadTime(byte value); - - /** - * Returns SessionId in Open Object. - * - * @return SessionId in Open Object - */ - byte getSessionId(); - - /** - * Sets SessionId and returns its builder. - * - * @param value SessionId - * @return Builder by setting SessionId - */ - Builder setSessionId(byte value); - - /** - * Returns list of Optional Tlvs in Open Object. - * - * @return list of Optional Tlvs in Open Object - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets list of Optional Tlvs and return its Builder. - * - * @param llOptionalTlv list of Optional Tlvs - * @return builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Sets P flag in Open object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Open object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java deleted file mode 100755 index c6993c3a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP RP Object. - */ -public interface PcepRPObject { - - /** - * Returns RequestId Number in RP Object. - * - * @return RequestId Number in RP Object - */ - int getRequestIdNum(); - - /** - * Sets RequestId Number with specified value. - * - * @param value RequestId Number - */ - void setRequestIdNum(int value); - - /** - * Returns O flag in RP Object. - * - * @return O flag in RP Object - */ - boolean getOFlag(); - - /** - * Sets O flag with specified value. - * - * @param value O flag - */ - void setOFlag(boolean value); - - /** - * Returns B flag in RP Object. - * - * @return B flag in RP Object - */ - boolean getBFlag(); - - /** - * Sets B flag with specified value. - * - * @param value B flag - */ - void setBFlag(boolean value); - - /** - * Returns R flag in RP Object. - * - * @return R flag in RP Object - */ - boolean getRFlag(); - - /** - * Sets R flag with specified value. - * - * @param value R flag - */ - void setRFlag(boolean value); - - /** - * Returns Priority Flag in RP Object. - * - * @return Priority Flag in RP Object - */ - byte getPriFlag(); - - /** - * Sets Priority Flag with specified value. - * - * @param value Priority Flag - */ - void setPriFlag(byte value); - - /** - * Returns list of Optional Tlvs in RP Object. - * - * @return list of Optional Tlvs in RP Object - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in RP Object and returns its builder. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Writes the RP Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing RP object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build bandwidth object. - */ - interface Builder { - - /** - * Builds RP Object. - * - * @return RP Object - */ - PcepRPObject build(); - - /** - * Returns RP object header. - * - * @return RP object header - */ - PcepObjectHeader getRPObjHeader(); - - /** - * Sets RP object header and returns its builder. - * - * @param obj RP object header - * @return Builder by setting RP object header - */ - Builder setRPObjHeader(PcepObjectHeader obj); - - /** - * Returns Request Id Number in RP Object. - * - * @return Request Id Number in RP Object - */ - int getRequestIdNum(); - - /** - * Sets Request Id Number and returns its builder. - * - * @param value Request Id Number - * @return Builder by setting Request Id Number - */ - Builder setRequestIdNum(int value); - - /** - * Returns O flag in RP Object. - * - * @return O flag in RP Object - */ - boolean getOFlag(); - - /** - * Sets O flag and returns its builder. - * - * @param value O flag - * @return Builder by setting O flag - */ - Builder setOFlag(boolean value); - - /** - * Returns B flag in RP Object. - * - * @return B flag in RP Object - */ - boolean getBFlag(); - - /** - * Sets B flag and returns its builder. - * - * @param value B flag - * @return Builder by setting B flag - */ - Builder setBFlag(boolean value); - - /** - * Returns R flag in RP Object. - * - * @return R flag in RP Object - */ - boolean getRFlag(); - - /** - * Sets R flag and returns its builder. - * - * @param value R flag - * @return Builder by setting R flag - */ - Builder setRFlag(boolean value); - - /** - * Returns Priority Flag in RP Object. - * - * @return Priority Flag in RP Object - */ - byte getPriFlag(); - - /** - * Sets Priority Flag and returns its builder. - * - * @param value Priority Flag - * @return Builder by setting Priority Flag - */ - Builder setPriFlag(byte value); - - /** - * Returns list of Optional Tlvs in RP Object. - * - * @return list of Optional Tlvs - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets list of Optional Tlvs and returns its builder. - * - * @param llOptionalTlv list of Optional Tlvs - * @return Builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Sets P flag in RP object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in RP object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java deleted file mode 100755 index f4355206..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Report Message. - */ -public interface PcepReportMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns PcepStateReport list. - * - * @return list of PcepStateReport - */ - LinkedList<PcepStateReport> getStateReportList(); - - /** - * Sets StateReportList. - * - * @param llStateReportList list of PcepStateReport. - */ - void setStateReportList(LinkedList<PcepStateReport> llStateReportList); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Report message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepReportMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns StateReportList. - * - * @return StateReportList. - */ - LinkedList<PcepStateReport> getStateReportList(); - - /** - * Sets list of PcepStateReport and returns builder. - * - * @param llStateReportList list of PcepStateReport. - * @return Builder by setting list of PcepStateReport. - */ - Builder setStateReportList(LinkedList<PcepStateReport> llStateReportList); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java deleted file mode 100755 index 928ce1a6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP RRO Object. - */ -public interface PcepRroObject { - - /** - * Returns list of SubObjects. - * - * @return list of SubObjects - */ - LinkedList<PcepValueType> getSubObjects(); - - /** - * Sets list of SubObjects and return its builder. - * - * @param llSubObjects list of SubObjects - */ - void setSubObjects(LinkedList<PcepValueType> llSubObjects); - - /** - * Writes the RRO Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException when object header failed to write in channel buffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build RRO object. - */ - interface Builder { - - /** - * Builds RRO Object. - * - * @return RRO Object - */ - PcepRroObject build(); - - /** - * Returns RRO object header. - * - * @return RRO object header - */ - PcepObjectHeader getRroObjHeader(); - - /** - * Sets RRO object header and returns its builder. - * - * @param obj RRO object header - * @return Builder by setting RRO object header - */ - Builder setRroObjHeader(PcepObjectHeader obj); - - /** - * Returns list of SubObjects. - * - * @return list of SubObjects - */ - LinkedList<PcepValueType> getSubObjects(); - - /** - * Sets list of SubObjects in RRO Object and returns its builder. - * - * @param llSubObjects list of SubObjects - * @return Builder by setting list of SubObjects - */ - Builder setSubObjects(LinkedList<PcepValueType> llSubObjects); - - /** - * Sets P flag in RRO object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in RRO object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java deleted file mode 100755 index e4816efd..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP SRP Object. - */ -public interface PcepSrpObject { - - /** - * Returns SRP ID of SRP Object. - * - * @return SRP ID of SRP Object - */ - int getSrpID(); - - /** - * Sets SRP ID with specified value. - * - * @param srpID SRP ID of SRP Object - */ - void setSrpID(int srpID); - - /** - * Returns R flag of SRP Object. - * - * @return R flag of SRP Object - */ - boolean getRFlag(); - - /** - * Sets R flag with specified value. - * - * @param bRFlag R Flag of SRP Object - */ - void setRFlag(boolean bRFlag); - - /** - * sets the optional TLvs. - * - * @param llOptionalTlv list of optional tlvs - */ - void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Returns list of optional tlvs. - * - * @return llOptionalTlv list of optional tlvs - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Writes the SRP Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException when tlv is null - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build SRP object. - */ - interface Builder { - - /** - * Builds SRP Object. - * - * @return SRP Object - * @throws PcepParseException when mandatory object is not set - */ - PcepSrpObject build() throws PcepParseException; - - /** - * Returns SRP object header. - * - * @return SRP object header - */ - PcepObjectHeader getSrpObjHeader(); - - /** - * Sets SRP object header and returns its builder. - * - * @param obj SRP object header - * @return Builder by setting SRP object header - */ - Builder setSrpObjHeader(PcepObjectHeader obj); - - /** - * Returns SRP ID of SRP Object. - * - * @return SRP ID of SRP Object - */ - int getSrpID(); - - /** - * Sets SRP ID and returns its builder. - * - * @param srpID SRP ID - * @return Builder by setting SRP ID - */ - Builder setSrpID(int srpID); - - /** - * Returns R flag of SRP Object. - * - * @return R flag of SRP Object - */ - boolean getRFlag(); - - /** - * Sets R flag and returns its builder. - * - * @param bRFlag R flag - * @return Builder by setting R flag - */ - Builder setRFlag(boolean bRFlag); - - /** - * Returns list of optional tlvs. - * - * @return llOptionalTlv list of optional tlvs - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * sets the optional TLvs. - * - * @param llOptionalTlv List of optional tlv - * @return builder by setting list of optional tlv. - */ - Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Sets P flag in SRP object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in SRP object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java deleted file mode 100755 index b8ab9ec8..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity provides State Report for PCEP Report Message. - */ -public interface PcepStateReport { - - /** - * Provides PCEP Message path for report message. - */ - interface PcepMsgPath { - - /** - * Returns PcepEroObject. - * - * @return eroObj - */ - PcepEroObject getEroObject(); - - /** - * Sets PcepEroObject. - * - * @param eroObject Ero Object - */ - void setEroObject(PcepEroObject eroObject); - - /** - * Returns PcepAttribute. - * - * @return attrList - */ - PcepAttribute getPcepAttribute(); - - /** - * Sets PcepAttribute. - * - * @param pcepAttribute Pcep Attribute object - */ - void setPcepAttribute(PcepAttribute pcepAttribute); - - /** - * Returns PcepRroObject. - * - * @return rroObj - */ - PcepRroObject getRroObject(); - - /** - * Sets PcepRroObject. - * - * @param rroObject Rro object - */ - void setRroObject(PcepRroObject rroObject); - - /** - * Returns PcepBandwidthObject. - * - * @return bandwidth object - */ - PcepBandwidthObject getBandwidthObject(); - - /** - * Sets PcepBandwidthObject. - * - * @param bandwidth bandwidth object - */ - void setBandwidthObject(PcepBandwidthObject bandwidth); - - /** - * Reads all the Objects for PCEP Message Path. - * - * @param bb of type channel buffer - * @return PCEP Message path - * @throws PcepParseException when invalid buffer received - */ - PcepMsgPath read(ChannelBuffer bb) throws PcepParseException; - - /** - * Writes all the objects for pcep message path. - * - * @param bb of type channel buffer. - * @return object length index - * @throws PcepParseException when mandatory object is not set - */ - int write(ChannelBuffer bb) throws PcepParseException; - } - - /** - * Returns PcepSrpObject. - * - * @return srpObject - */ - PcepSrpObject getSrpObject(); - - /** - * Returns PcepLspObject. - * - * @return lspObject - */ - PcepLspObject getLspObject(); - - /** - * Returns PcepMsgPath. - * - * @return msgPath - */ - PcepMsgPath getMsgPath(); - - /** - * Sets the SRP Object. - * - * @param srpObj Pcep Srp Object - */ - void setSrpObject(PcepSrpObject srpObj); - - /** - * Sets the LSP Object. - * - * @param lspObject Pcep Lsp Object - */ - void setLspObject(PcepLspObject lspObject); - - /** - * Sets the Path Object. - * - * @param msgPath Pcep MsgPath object - */ - void setMsgPath(PcepMsgPath msgPath); - - /** - * Builder interface with get and set functions to build PcepStateReport. - */ - interface Builder { - - /** - * Builds PcepStateReport. - * - * @return PcepStateReport - * @throws PcepParseException when mandatory object is not set - */ - PcepStateReport build() throws PcepParseException; - - /** - * Returns PcepSrpObject. - * - * @return srpObject - */ - PcepSrpObject getSrpObject(); - - /** - * Returns PcepLspObject. - * - * @return lspObject - */ - PcepLspObject getLspObject(); - - /** - * Returns PcepMsgPath. - * - * @return msgPath - */ - PcepMsgPath getMsgPath(); - - /** - * Sets the SRP Object. - * - * @param srpObj Pcep Srp Object - * @return builder by setting PcepSrpObject - */ - Builder setSrpObject(PcepSrpObject srpObj); - - /** - * Sets the LSP Object. - * - * @param lspObject Pcep Lsp Object - * @return builder by setting PcepLspObject - */ - Builder setLspObject(PcepLspObject lspObject); - - /** - * Sets the Path Object. - * - * @param msgPath Pcep MsgPath object - * @return builder by setting PcepMsgPath - */ - Builder setMsgPath(PcepMsgPath msgPath); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEObject.java deleted file mode 100755 index 21f6c71c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEObject.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP TE Object. - */ -public interface PcepTEObject { - - /** - * Returns TE object header. - * - * @return TE object header - */ - PcepObjectHeader getTEObjHeader(); - - /** - * Sets TE Object header. - * - * @param obj TE Object header - */ - void setTEObjHeader(PcepObjectHeader obj); - - /** - * Returns ProtocolId in TE Object. - * - * @return ProtocolId in TE Object - */ - byte getProtocolId(); - - /** - * Sets ProtocolId in TE Object. - * - * @param yProtId ProtocolId in TE Object - */ - void setProtocolId(byte yProtId); - - /** - * Returns R flag in TE Object. - * - * @return R flag in TE Object - */ - boolean getRFlag(); - - /** - * Sets R flag in TE Object. - * - * @param bRFlag R flag in TE Object - */ - void setRFlag(boolean bRFlag); - - /** - * Returns S flag in TE Object. - * - * @return S flag in TE Object - */ - boolean getSFlag(); - - /** - * Sets S flag in TE Object. - * - * @param bSFlag S flag in TE Object - */ - void setSFlag(boolean bSFlag); - - /** - * Returns TE ID in TE Object. - * - * @return TE ID in TE Object - */ - int getTEId(); - - /** - * Sets TE ID in TE Object. - * - * @param iTEId TE ID in TE Object - */ - void setTEId(int iTEId); - - /** - * Returns list of Optional Tlvs in TE Object. - * - * @return list of Optional Tlvs - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in TE Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Writes the TE Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException when obj header is not written to channel buffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build TE object. - */ - interface Builder { - - /** - * Builds TE Object. - * - * @return TE Object - */ - PcepTEObject build(); - - /** - * Returns TE object header. - * - * @return TE object header - */ - PcepObjectHeader getTEObjHeader(); - - /** - * Sets TE object header and returns its builder. - * - * @param obj TE object header - * @return Builder by setting TE object header - */ - Builder setTEObjHeader(PcepObjectHeader obj); - - /** - * Returns ProtocolId in TE Object. - * - * @return ProtocolId in TE Object - */ - byte getProtocolId(); - - /** - * Sets ProtocolId in TE Object and returns its builder. - * - * @param yProtId ProtocolId in TE Object - * @return Builder by setting ProtocolId - */ - Builder setProtocolId(byte yProtId); - - /** - * Returns R flag in TE Object. - * - * @return R flag in TE Object - */ - boolean getRFlag(); - - /** - * Sets R flag in TE Object and returns its builder. - * - * @param bRFlag R flag in TE Object - * @return Builder by setting R flag - */ - Builder setRFlag(boolean bRFlag); - - /** - * Returns S flag in TE Object. - * - * @return S flag in TE Object - */ - boolean getSFlag(); - - /** - * Sets S flag in TE Object and returns its builder. - * - * @param bSFlag S flag in TE Object - * @return Builder by setting S flag - */ - Builder setSFlag(boolean bSFlag); - - /** - * Returns TE ID in TE Object. - * - * @return TE ID in TE Object - */ - int getTEId(); - - /** - * Sets TE ID in TE Object and returns its builder. - * - * @param iTEId TE ID in TE Object - * @return Builder by setting TE ID - */ - Builder setTEId(int iTEId); - - /** - * Returns list of Optional Tlvs in TE Object. - * - * @return list of Optional Tlvs - */ - LinkedList<PcepValueType> getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in TE Object and returns its builder. - * - * @param llOptionalTlv list of Optional Tlvs - * @return Builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv); - - /** - * Sets P flag in TE object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in TE object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEReportMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEReportMsg.java deleted file mode 100755 index 3bc5034e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEReportMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP TE Report Message. - */ -public interface PcepTEReportMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of PCEP TE Objects. - * - * @return list of PCEP TE Objects - */ - LinkedList<PcepTEObject> getTEReportList(); - - /** - * Sets list of Optional Tlvs in TE Report Message. - * - * @param llTEReportList list of optional Tlvs - */ - void setTEReportList(LinkedList<PcepTEObject> llTEReportList); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build TE Report message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepTEReportMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of Optional Tlv in TE Report Message. - * - * @return list of Optional Tlv - */ - LinkedList<PcepTEObject> getTEReportList(); - - /** - * Sets list of Optional Tlvs and returns its builder. - * - * @param llTEReportList list of Optional Tlvs - * @return Builder object for TE report message - */ - Builder setTEReportList(LinkedList<PcepTEObject> llTEReportList); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java deleted file mode 100755 index 450fdfac..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -/** - * Enum to Provide the Different types of PCEP messages. - */ -public enum PcepType { - - NONE(0), OPEN(1), KEEP_ALIVE(2), PATH_COMPUTATION_REQUEST(3), PATH_COMPUTATION_REPLY(4), - NOTIFICATION(5), ERROR(6), CLOSE(7), REPORT(10), UPDATE(11), INITIATE(12), LABEL_UPDATE(13), - TE_REPORT(14), LABEL_RANGE_RESERV(15), MAX(16), END(17); - - int iValue; - - /** - * Assign iValue with the value iVal as the types of PCEP message. - * - * @param iVal type of pcep message - */ - PcepType(int iVal) { - - iValue = iVal; - } - - /** - * Returns iValue as type of PCEP message. - * - * @return iValue type of pcep message - */ - public byte getType() { - - return (byte) iValue; - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java deleted file mode 100755 index dc2ac3a8..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Update Message. - */ -public interface PcepUpdateMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns the update request list for PCEP Update Message. - * - * @return list of Update Requests - */ - LinkedList<PcepUpdateRequest> getUpdateRequestList(); - - /** - * Sets the update request list for PCEP update message. - * - * @param llUpdateRequestList is a list of PCEP Update Requests - */ - void setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with Get and Set Functions to build the PCEP update Message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepUpdateMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns the update request list for the PCEP update message. - * - * @return list of Update Requests - */ - LinkedList<PcepUpdateRequest> getUpdateRequestList(); - - /** - * Sets the update request list for the PCEP update message. - * - * @param llUpdateRequestList list of Update requests - * @return builder by setting list llUpdateRequestList of PcepUpdateRequest. - */ - Builder setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java deleted file mode 100755 index 8d1c89e2..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Update Request List. - */ -public interface PcepUpdateRequest { - - /** - * Returns object of PCEP SRP Object. - * - * @return srpObject of type PCEP SRP Object - */ - PcepSrpObject getSrpObject(); - - /** - * Returns object of PCEP LSP Object. - * - * @return lspObject of type PCEP LSP Object - */ - PcepLspObject getLspObject(); - - /** - * Returns object of PCEP MSG PATH. - * - * @return msgPath of type PCEP MSG PATH - */ - PcepMsgPath getMsgPath(); - - /** - * Sets the PCEP SRP Object. - * - * @param srpObject object of type PCEP SRP Object - */ - void setSrpObject(PcepSrpObject srpObject); - - /** - * Sets the PCEP LSP Object. - * - * @param lspObject object of type PCEP LSP Object - */ - void setLspObject(PcepLspObject lspObject); - - /** - * sets the PCEP MSG PATH. - * - * @param msgPath object of type PCEP MSG PATH - */ - void setMsgPath(PcepMsgPath msgPath); - - /** - * Builder interface with get and set functions to build PcepUpdateRequest. - */ - interface Builder { - - /** - * Builds PcepUpdateRequest. - * - * @return PcepUpdateRequest - * @throws PcepParseException if mandatory object is not set - */ - PcepUpdateRequest build() throws PcepParseException; - - /** - * Returns PcepSrpObject. - * - * @return srpObject - */ - PcepSrpObject getSrpObject(); - - /** - * Returns PcepLspObject. - * - * @return lspObject - */ - PcepLspObject getLspObject(); - - /** - * Returns PcepMsgPath. - * - * @return msgPath - */ - PcepMsgPath getMsgPath(); - - /** - * Sets the SRP Object. - * - * @param srpObj of type PcepSrpObject - * @return builder by setting PcepSrpObject - */ - Builder setSrpObject(PcepSrpObject srpObj); - - /** - * Sets the LSP Object. - * - * @param lspObject of type PcepLspObject - * @return builder by setting PcepLspObject - */ - Builder setLspObject(PcepLspObject lspObject); - - /** - * Sets the Path Object. - * - * @param msgPath of type PcepMsgPath - * @return builder by setting PcepMsgPath - */ - Builder setMsgPath(PcepMsgPath msgPath); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java deleted file mode 100755 index c761ed08..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -/** - * Enum to provide PCEP Message Version. - */ -public enum PcepVersion { - - PCEP_1(1); - - public final int packetVersion; - - /** - * Assign PCEP PacketVersion with WireVersion. - * - * @param wireVersion version of pcep - */ - PcepVersion(final int wireVersion) { - - this.packetVersion = wireVersion; - } - - /** - * Returns Wire version of PCEP Message. - * - * @return packetVersion - */ - public int getWireVersion() { - return packetVersion; - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java deleted file mode 100755 index 37aef58d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing functionality to write byte streams of - * Messages to channel buffer. - */ -public interface Writeable { - - /** - * Writes byte streams of messages to channel buffer. - * - * @param bb parameter of type channel buffer - * @throws PcepParseException when error occurs while writing pcep message to channel buffer - */ - void writeTo(ChannelBuffer bb) throws PcepParseException; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java deleted file mode 100644 index 53ee5934..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Abstraction of an entity providing PCEP messages. - */ -package org.onosproject.pcepio.protocol; diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java deleted file mode 100644 index d61f7319..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcInitiatedLspRequest; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcInitiatedLspRequest for PCEP Initiate message. - * Reference : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03. - */ -public class PcInitiatedLspRequestVer1 implements PcInitiatedLspRequest { - - /* - * <PCE-initiated-lsp-request> ::= (<PCE-initiated-lsp-instantiation>|<PCE-initiated-lsp-deletion>) - <PCE-initiated-lsp-instantiation> ::= <SRP> - <LSP> - <END-POINTS> - <ERO> - [<attribute-list>] - <PCE-initiated-lsp-deletion> ::= <SRP> - <LSP> - */ - - protected static final Logger log = LoggerFactory.getLogger(PcInitiatedLspRequestVer1.class); - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP End Point Object - private PcepEndPointsObject endPointsObject; - //PCEP ERO Object - private PcepEroObject eroObject; - //PCEP Attribute list - private PcepAttribute pcepAttribute; - - /** - * Default constructor. - */ - public PcInitiatedLspRequestVer1() { - srpObject = null; - lspObject = null; - endPointsObject = null; - eroObject = null; - pcepAttribute = null; - - } - - /** - * Constructor to initialize all parameters of PC initiated lsp request. - * - * @param srpObject PCEP srp Object - * @param lspObject PCEP lsp object - * @param endPointsObject PCPE endpoints object - * @param eroObject PCEP ero object - * @param pcepAttribute PCEP attribute - */ - public PcInitiatedLspRequestVer1(PcepSrpObject srpObject, PcepLspObject lspObject, - PcepEndPointsObject endPointsObject, PcepEroObject eroObject, PcepAttribute pcepAttribute) { - this.srpObject = srpObject; - this.lspObject = lspObject; - this.endPointsObject = endPointsObject; - this.eroObject = eroObject; - this.pcepAttribute = pcepAttribute; - - } - - @Override - public PcepSrpObject getSrpObject() { - return srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return lspObject; - } - - @Override - public PcepEndPointsObject getEndPointsObject() { - return endPointsObject; - } - - @Override - public PcepEroObject getEroObject() { - return eroObject; - } - - @Override - public PcepAttribute getPcepAttribute() { - return pcepAttribute; - } - - @Override - public void setSrpObject(PcepSrpObject srpobj) { - this.srpObject = srpobj; - - } - - @Override - public void setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - } - - @Override - public void setEndPointsObject(PcepEndPointsObject endPointsObject) { - this.endPointsObject = endPointsObject; - } - - @Override - public void setEroObject(PcepEroObject eroObject) { - this.eroObject = eroObject; - } - - @Override - public void setPcepAttribute(PcepAttribute pcepAttribute) { - this.pcepAttribute = pcepAttribute; - } - - /** - * Builder class for PC initiated lsp reuqest. - */ - public static class Builder implements PcInitiatedLspRequest.Builder { - - private boolean bIsSRPObjectSet = false; - private boolean bIsLSPObjectSet = false; - private boolean bIsEndPointsObjectSet = false; - private boolean bIsEROObjectSet = false; - private boolean bIsPcepAttributeSet = false; - private boolean bIsbRFlagSet = false; - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP End Point Object - private PcepEndPointsObject endPointsObject; - //PCEP ERO Object - private PcepEroObject eroObject; - //PCEP Attribute list - private PcepAttribute pcepAttribute; - - @Override - public PcInitiatedLspRequest build() throws PcepParseException { - - //PCEP SRP Object - PcepSrpObject srpObject = null; - //PCEP LSP Object - PcepLspObject lspObject = null; - //PCEP End Point Object - PcepEndPointsObject endPointsObject = null; - //PCEP ERO Object - PcepEroObject eroObject = null; - //PCEP Attribute list - PcepAttribute pcepAttribute = null; - boolean bRFlag = false; - - if (!this.bIsSRPObjectSet) { - throw new PcepParseException("Srp object NOT Set while building PcInitiatedLspRequest"); - } else { - srpObject = this.srpObject; - bRFlag = srpObject.getRFlag(); - } - - if (bRFlag) { - this.bIsbRFlagSet = true; - } else { - this.bIsbRFlagSet = false; - } - - if (!this.bIsLSPObjectSet) { - throw new PcepParseException("LSP Object NOT Set while building PcInitiatedLspRequest"); - } else { - lspObject = this.lspObject; - } - if (!this.bIsbRFlagSet) { - - if (!this.bIsEndPointsObjectSet) { - throw new PcepParseException("EndPoints Object NOT Set while building PcInitiatedLspRequest"); - } else { - endPointsObject = this.endPointsObject; - } - if (!this.bIsEROObjectSet) { - throw new PcepParseException("ERO Object NOT Set while building PcInitiatedLspRequest"); - } else { - eroObject = this.eroObject; - } - if (bIsPcepAttributeSet) { - pcepAttribute = this.pcepAttribute; - } - } - return new PcInitiatedLspRequestVer1(srpObject, lspObject, endPointsObject, eroObject, pcepAttribute); - } - - @Override - public PcepSrpObject getSrpObject() { - return this.srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return this.lspObject; - } - - @Override - public PcepEndPointsObject getEndPointsObject() { - return this.endPointsObject; - } - - @Override - public PcepEroObject getEroObject() { - return this.eroObject; - } - - @Override - public PcepAttribute getPcepAttribute() { - return this.pcepAttribute; - } - - @Override - public Builder setSrpObject(PcepSrpObject srpobj) { - this.srpObject = srpobj; - this.bIsSRPObjectSet = true; - return this; - - } - - @Override - public Builder setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - this.bIsLSPObjectSet = true; - return this; - } - - @Override - public Builder setEndPointsObject(PcepEndPointsObject endPointsObject) { - this.endPointsObject = endPointsObject; - this.bIsEndPointsObjectSet = true; - return this; - } - - @Override - public Builder setEroObject(PcepEroObject eroObject) { - this.eroObject = eroObject; - this.bIsEROObjectSet = true; - return this; - } - - @Override - public Builder setPcepAttribute(PcepAttribute pcepAttribute) { - this.pcepAttribute = pcepAttribute; - this.bIsPcepAttributeSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("SrpObject", srpObject) - .add("LspObject", lspObject) - .add("EndPointObject", endPointsObject) - .add("EroObject", eroObject) - .add("PcepAttribute", pcepAttribute) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java deleted file mode 100644 index 65a844c2..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java +++ /dev/null @@ -1,431 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepBandwidthObject; -import org.onosproject.pcepio.protocol.PcepIroObject; -import org.onosproject.pcepio.protocol.PcepLspaObject; -import org.onosproject.pcepio.protocol.PcepMetricObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Attribute List. - */ -public class PcepAttributeVer1 implements PcepAttribute { - - /* Reference : RFC5440 - * where: - * <attribute-list> ::=[<LSPA>] - * [<BANDWIDTH>] - * [<metric-list>] - * [<IRO>] - * - * <metric-list> ::=<METRIC>[<metric-list>] - */ - protected static final Logger log = LoggerFactory.getLogger(PcepAttributeVer1.class); - - public static final int OBJECT_HEADER_LENGTH = 4; - - //PCEP LSPA Object - private PcepLspaObject lspaObject; - private boolean isLspaObjectSet; - - //PCEP Bandwidth Object - private PcepBandwidthObject bandwidthObject; - private boolean isBandwidthObjectSet; - - //PCEP Metric list - private LinkedList<PcepMetricObject> llMetricList; - private boolean isMetricListSet; - - //PCEP IRO object - private PcepIroObject iroObject; - private boolean isIroObjectSet; - - /** - * Default constructor to initialize member variables. - */ - public PcepAttributeVer1() { - - lspaObject = null; - bandwidthObject = null; - llMetricList = null; - iroObject = null; - this.isLspaObjectSet = false; - this.isBandwidthObjectSet = false; - this.isMetricListSet = false; - this.isIroObjectSet = false; - } - - /** - * Constructor to initialize all parameters for PCEP attribute. - * - * @param lspaObject PCEP lspa Object. - * @param bandwidthObject PCEP bandwidth object. - * @param llMetricList list of PCEP metric objects. - * @param iroObject PCEP iro object. - */ - public PcepAttributeVer1(PcepLspaObject lspaObject, PcepBandwidthObject bandwidthObject, - LinkedList<PcepMetricObject> llMetricList, PcepIroObject iroObject) { - - this.lspaObject = lspaObject; - this.bandwidthObject = bandwidthObject; - this.llMetricList = llMetricList; - this.iroObject = iroObject; - if (lspaObject == null) { - this.isLspaObjectSet = false; - } else { - this.isLspaObjectSet = true; - } - if (bandwidthObject == null) { - this.isBandwidthObjectSet = false; - } else { - this.isBandwidthObjectSet = true; - } - if (llMetricList == null) { - this.isMetricListSet = false; - } else { - this.isMetricListSet = true; - } - if (iroObject == null) { - this.isIroObjectSet = false; - } else { - this.isIroObjectSet = true; - } - } - - /** - * constructor to initialize bandwidthObject. - * - * @param bandwidthObject bandwidth object - */ - public PcepAttributeVer1(PcepBandwidthObject bandwidthObject) { - this.isLspaObjectSet = false; - - this.bandwidthObject = bandwidthObject; - this.isBandwidthObjectSet = true; - - this.isMetricListSet = false; - - this.isIroObjectSet = false; - } - - /** - * Parse list for MeticObject. - * - * @param cb of type channel buffer - * @return true if parsing metric list is success - * @throws PcepParseException when a non metric object is received - */ - public boolean parseMetricList(ChannelBuffer cb) throws PcepParseException { - - if (llMetricList == null) { - llMetricList = new LinkedList<>(); - } - - PcepMetricObject metriclist; - - //caller should verify for metric object - byte yObjClass = PcepMetricObjectVer1.METRIC_OBJ_CLASS; - byte yObjType = PcepMetricObjectVer1.METRIC_OBJ_TYPE; - - while ((yObjClass == PcepMetricObjectVer1.METRIC_OBJ_CLASS) - && (yObjType == PcepMetricObjectVer1.METRIC_OBJ_TYPE)) { - - metriclist = PcepMetricObjectVer1.read(cb); - llMetricList.add(metriclist); - yObjClass = 0; - yObjType = 0; - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } - } - return true; - } - - /** - * Reads lspa , bandwidth , Metriclist and Iro objects and sets the objects. - * - * @param cb of type channel buffer - * @return instance of Pcep Attribute - * @throws PcepParseException while parsing Pcep Attributes from channel buffer - */ - - public static PcepAttribute read(ChannelBuffer cb) throws PcepParseException { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - return null; - } - //check whether any pcep attribute is present - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - byte yObjClass = tempObjHeader.getObjClass(); - - if (PcepLspaObjectVer1.LSPA_OBJ_CLASS != yObjClass && PcepBandwidthObjectVer1.BANDWIDTH_OBJ_CLASS != yObjClass - && PcepMetricObjectVer1.METRIC_OBJ_CLASS != yObjClass && PcepIroObjectVer1.IRO_OBJ_CLASS != yObjClass) { - //No PCEP attribute is present - return null; - } - - PcepAttributeVer1 pcepAttribute = new PcepAttributeVer1(); - - //If LSPA present then store it.LSPA is optional - if (yObjClass == PcepLspaObjectVer1.LSPA_OBJ_CLASS) { - pcepAttribute.setLspaObject(PcepLspaObjectVer1.read(cb)); - yObjClass = checkNextObject(cb); - } - - //If BANDWIDTH present then store it.BANDWIDTH is optional - if (yObjClass == PcepBandwidthObjectVer1.BANDWIDTH_OBJ_CLASS) { - pcepAttribute.setBandwidthObject(PcepBandwidthObjectVer1.read(cb)); - yObjClass = checkNextObject(cb); - } - - //If Metric list present then store it.MetricList is optional - if (yObjClass == PcepMetricObjectVer1.METRIC_OBJ_CLASS) { - pcepAttribute.parseMetricList(cb); - yObjClass = checkNextObject(cb); - } - - //If IRO present then store it.IRO is optional - if (yObjClass == PcepIroObjectVer1.IRO_OBJ_CLASS) { - pcepAttribute.setIroObject(PcepIroObjectVer1.read(cb)); - } - - PcepLspaObject lspaObject = pcepAttribute.getLspaObject(); - PcepBandwidthObject bandwidthObject = pcepAttribute.getBandwidthObject(); - LinkedList<PcepMetricObject> metriclist = pcepAttribute.llMetricList; - PcepIroObject iroObject = pcepAttribute.getIroObject(); - - return new PcepAttributeVer1(lspaObject, bandwidthObject, metriclist, iroObject); - } - - /** - * Checks whether there is a more object or not. - * - * @param cb of type channel buffer - * @return instance of object header - */ - private static byte checkNextObject(ChannelBuffer cb) { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - return 0; - } - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - return tempObjHeader.getObjClass(); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - int iLenStartIndex = cb.writerIndex(); - //PCEP LSPA object is optional - if (this.isLspaObjectSet) { - this.lspaObject.write(cb); - } - - //PCEP BANDWIDTH object is optional - if (this.isBandwidthObjectSet) { - this.bandwidthObject.write(cb); - } - - //PCEP Metric list is optional - if (this.isMetricListSet) { - ListIterator<PcepMetricObject> listIterator = this.llMetricList.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - } - - //PCEP IRO object is optional - if (this.isIroObjectSet) { - this.iroObject.write(cb); - } - return cb.writerIndex() - iLenStartIndex; - } - - @Override - public PcepLspaObject getLspaObject() { - return lspaObject; - } - - @Override - public PcepBandwidthObject getBandwidthObject() { - return bandwidthObject; - } - - @Override - public LinkedList<PcepMetricObject> getMetricObjectList() { - return llMetricList; - } - - @Override - public PcepIroObject getIroObject() { - return iroObject; - } - - @Override - public void setBandwidthObject(PcepBandwidthObject bandwidthObject) { - this.isBandwidthObjectSet = true; - this.bandwidthObject = bandwidthObject; - } - - @Override - public void setMetricObjectList(LinkedList<PcepMetricObject> llMetricList) { - this.isMetricListSet = true; - this.llMetricList = llMetricList; - - } - - @Override - public void setLspaObject(PcepLspaObject lspaObject) { - this.isLspaObjectSet = true; - this.lspaObject = lspaObject; - } - - @Override - public void setIroObject(PcepIroObject iroObject) { - this.isIroObjectSet = true; - this.iroObject = iroObject; - } - - /** - * Builder class for PCEP attributes. - */ - public static class Builder implements PcepAttribute.Builder { - - //PCEP LSPA Object - private PcepLspaObject lspaObject; - private boolean isLspaObjectSet; - - //PCEP BANDWIDTH Object - private PcepBandwidthObject bandwidthObject; - private boolean isBandwidthObjectSet; - - //PCEP Metric list - private LinkedList<PcepMetricObject> llMetricList; - private boolean isMetricListSet; - - //PCEP IRO object - private PcepIroObject iroObject; - private boolean isIroObjectSet; - - @Override - public PcepAttribute build() { - - //PCEP LSPA Object - PcepLspaObject lspaObject = null; - - //PCEP BANDWIDTH Object - PcepBandwidthObject bandwidthObject = null; - - //PCEP Metric list - LinkedList<PcepMetricObject> llMetricList = null; - - //PCEP IRO object - PcepIroObject iroObject = null; - - if (this.isLspaObjectSet) { - lspaObject = this.lspaObject; - } - if (this.isBandwidthObjectSet) { - bandwidthObject = this.bandwidthObject; - } - if (this.isMetricListSet) { - llMetricList = this.llMetricList; - } - if (this.isIroObjectSet) { - iroObject = this.iroObject; - } - return new PcepAttributeVer1(lspaObject, bandwidthObject, llMetricList, iroObject); - } - - @Override - public PcepLspaObject getLspaObject() { - return this.lspaObject; - } - - @Override - public PcepBandwidthObject getBandwidthObject() { - return this.bandwidthObject; - } - - @Override - public LinkedList<PcepMetricObject> getMetricObjectList() { - return this.llMetricList; - } - - @Override - public PcepIroObject getIroObject() { - return this.iroObject; - } - - @Override - public Builder setBandwidthObject(PcepBandwidthObject bandwidthObject) { - this.isBandwidthObjectSet = true; - this.bandwidthObject = bandwidthObject; - return this; - } - - @Override - public Builder setMetricObjectList(LinkedList<PcepMetricObject> llMetricList) { - this.isMetricListSet = true; - this.llMetricList = llMetricList; - return this; - } - - @Override - public Builder setLspaObject(PcepLspaObject lspaObject) { - this.isLspaObjectSet = true; - this.lspaObject = lspaObject; - return this; - } - - @Override - public Builder setIroObject(PcepIroObject iroObject) { - this.isIroObjectSet = true; - this.iroObject = iroObject; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("lspaObject", lspaObject) - .add("bandwidthObject", bandwidthObject) - .add("MetricObjectList", llMetricList) - .add("IroObject", iroObject) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java deleted file mode 100644 index 1c78d5b4..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepBandwidthObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcepBandwidthObject. - */ -public class PcepBandwidthObjectVer1 implements PcepBandwidthObject { - - /* - * RFC : 5440 , section : 7.7. - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Bandwidth | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - The BANDWIDTH Object format - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepBandwidthObjectVer1.class); - /* - * Requested bandwidth: BANDWIDTH Object-Type is 1. - Bandwidth of an existing TE LSP for which a re-optimization is - requested. BANDWIDTH Object-Type is 2. - */ - //Right now handling type 1 - public static final byte BANDWIDTH_OBJ_TYPE = 1; - public static final byte BANDWIDTH_OBJ_CLASS = 5; - public static final byte BANDWIDTH_OBJECT_VERSION = 1; - public static final short BANDWIDTH_OBJ_MINIMUM_LENGTH = 8; - - static final PcepObjectHeader DEFAULT_BANDWIDTH_OBJECT_HEADER = new PcepObjectHeader(BANDWIDTH_OBJ_CLASS, - BANDWIDTH_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - BANDWIDTH_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader bandwidthObjHeader; - private int iBandwidth; - - /** - * Constructor to bandwidth object header and bandwidth. - * - * @param bandwidthObjHeader bandwidth object header - * @param iBandwidth bandwidth value - */ - public PcepBandwidthObjectVer1(PcepObjectHeader bandwidthObjHeader, int iBandwidth) { - this.bandwidthObjHeader = bandwidthObjHeader; - this.iBandwidth = iBandwidth; - } - - /** - * Constructor to initialize bandwidth. - * - * @param iBandwidth bandwidth value - */ - public PcepBandwidthObjectVer1(int iBandwidth) { - this.bandwidthObjHeader = DEFAULT_BANDWIDTH_OBJECT_HEADER; - this.iBandwidth = iBandwidth; - } - - /** - * Returns Object Header. - * - * @return bandwidthObjHeader - */ - public PcepObjectHeader getBandwidthObjHeader() { - return this.bandwidthObjHeader; - } - - /** - * Sets Object Header. - * - * @param obj bandwidth object header - */ - public void setBandwidthObjHeader(PcepObjectHeader obj) { - this.bandwidthObjHeader = obj; - } - - @Override - public int getBandwidth() { - return this.iBandwidth; - } - - @Override - public void setBandwidth(int iBandwidth) { - this.iBandwidth = iBandwidth; - } - - /** - * Reads from channel buffer and returns object of PcepBandwidthObject. - * - * @param cb channel buffer to parse - * @return object of PcepBandwidthObject - * @throws PcepParseException while parsing channel buffer - */ - public static PcepBandwidthObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader bandwidthObjHeader; - int iBandwidth; - - bandwidthObjHeader = PcepObjectHeader.read(cb); - iBandwidth = cb.readInt(); - - return new PcepBandwidthObjectVer1(bandwidthObjHeader, iBandwidth); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - int objLenIndex = bandwidthObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write bandwidth object header. Index " + objLenIndex); - } - - cb.writeInt(iBandwidth); - short hLength = (short) (cb.writerIndex() - objStartIndex); - cb.setShort(objLenIndex, hLength); - //will be helpful during print(). - bandwidthObjHeader.setObjLen(hLength); - - return cb.writerIndex() - objStartIndex; - } - - /** - * builder class for PCEP bandwidth object. - */ - public static class Builder implements PcepBandwidthObject.Builder { - - private PcepObjectHeader bandwidthObjHeader; - private boolean bIsHeaderSet = false; - - private int iBandwidth; - private boolean bIsBandwidthSet = false; - - private boolean bPFlag; - private boolean bIsPFlagSet = false; - - private boolean bIFlag; - private boolean bIsIFlagSet = false; - - @Override - public PcepBandwidthObject build() throws PcepParseException { - - PcepObjectHeader bandwidthObjHeader = this.bIsHeaderSet ? this.bandwidthObjHeader - : DEFAULT_BANDWIDTH_OBJECT_HEADER; - - if (bIsPFlagSet) { - bandwidthObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - bandwidthObjHeader.setIFlag(bIFlag); - } - - if (!this.bIsBandwidthSet) { - throw new PcepParseException("bandwidth not Set while building Bandwidth Object."); - } - - return new PcepBandwidthObjectVer1(bandwidthObjHeader, iBandwidth); - } - - @Override - public int getBandwidth() { - return this.iBandwidth; - } - - @Override - public PcepObjectHeader getBandwidthObjHeader() { - return this.bandwidthObjHeader; - } - - @Override - public Builder setBandwidthObjHeader(PcepObjectHeader obj) { - this.bandwidthObjHeader = obj; - return this; - } - - @Override - public Builder setBandwidth(int iBandwidth) { - this.iBandwidth = iBandwidth; - this.bIsBandwidthSet = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("BandwidthObjectHeader", bandwidthObjHeader) - .add("Bandwidth", iBandwidth).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java deleted file mode 100644 index bcc679d3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java +++ /dev/null @@ -1,351 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepCloseMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Close Message. - */ -class PcepCloseMsgVer1 implements PcepCloseMsg { - - /* - * RFC : 5440 , section : 6.8 - * <Close Message> ::= <Common Header> <CLOSE> - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Ver | Flags | Message-Type | Message-Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | Flags | Reason | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepCloseMsgVer1.class); - - // Pcep version: 1 - public static final byte PACKET_VERSION = 1; - public static final int PACKET_MINIMUM_LENGTH = 12; - public static final PcepType MSG_TYPE = PcepType.CLOSE; - public static final byte CLOSE_OBJ_TYPE = 1; - public static final byte CLOSE_OBJ_CLASS = 15; - public static final byte CLOSE_OBJECT_VERSION = 1; - public static final byte DEFAULT_REASON = 1; // Default reason to close - public static final short CLOSE_OBJ_MINIMUM_LENGTH = 8; - public static final int SHIFT_FLAG = 5; - static final PcepObjectHeader DEFAULT_CLOSE_HEADER = new PcepObjectHeader(CLOSE_OBJ_CLASS, CLOSE_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, CLOSE_OBJ_MINIMUM_LENGTH); - - private final PcepObjectHeader closeObjHeader; - private byte yReason; - private LinkedList<PcepValueType> llOptionalTlv; - - public static final PcepCloseMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading close message for channel buffer. - */ - static class Reader implements PcepMessageReader<PcepCloseMsg> { - PcepObjectHeader closeObjHeader; - byte yReason; - // Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - - @Override - public PcepCloseMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Packet size is less than the minimum length."); - } - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 7 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.CLOSE(7), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " - + length); - } - closeObjHeader = PcepObjectHeader.read(cb); - // Reserved - cb.readShort(); - // Flags - cb.readByte(); - // Reason - yReason = cb.readByte(); - // parse optional TLV - llOptionalTlv = parseOptionalTlv(cb); - return new PcepCloseMsgVer1(closeObjHeader, yReason, llOptionalTlv); - } - } - - /** - * Parse the list of Optional Tlvs. - * - * @param cb channel buffer - * @return list of Optional Tlvs - * @throws PcepParseException when fails to parse optional tlvs - */ - public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - /* - rfc 5440: - Optional TLVs may be included within the CLOSE object body. The - specification of such TLVs is outside the scope of this document. - */ - return llOptionalTlv; - } - - /** - * constructor to initialize PCEP close Message with all the parameters. - * - * @param closeObjHeader object header for close message - * @param yReason reason for closing the channel - * @param llOptionalTlv list of optional tlvs - */ - PcepCloseMsgVer1(PcepObjectHeader closeObjHeader, byte yReason, LinkedList<PcepValueType> llOptionalTlv) { - - this.closeObjHeader = closeObjHeader; - this.yReason = yReason; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Builder class for PCEP close message. - */ - static class Builder implements PcepCloseMsg.Builder { - - // PCEP Close message fields - private boolean bIsHeaderSet = false; - private PcepObjectHeader closeObjHeader; - private boolean bIsReasonSet = false; - private byte yReason; - private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.CLOSE; - } - - @Override - public PcepCloseMsg build() { - - PcepObjectHeader closeObjHeader = this.bIsHeaderSet ? this.closeObjHeader : DEFAULT_CLOSE_HEADER; - byte yReason = this.bIsReasonSet ? this.yReason : DEFAULT_REASON; - - if (bIsPFlagSet) { - closeObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - closeObjHeader.setIFlag(bIFlag); - } - return new PcepCloseMsgVer1(closeObjHeader, yReason, this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getCloseObjHeader() { - return this.closeObjHeader; - } - - @Override - public Builder setCloseObjHeader(PcepObjectHeader obj) { - this.closeObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte getReason() { - return this.yReason; - } - - @Override - public Builder setReason(byte value) { - this.yReason = value; - this.bIsReasonSet = true; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing close message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepCloseMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepCloseMsgVer1 message) throws PcepParseException { - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort((short) 0); - int objStartIndex = cb.writerIndex(); - int objLenIndex = message.closeObjHeader.write(cb); - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write Close object header."); - } - // first 3 bits set to version - cb.writeShort(0); // Reserved - cb.writeByte(0); // Flags - cb.writeByte(message.yReason); - // Pack optional TLV - packOptionalTlv(cb, message); - int length = cb.writerIndex() - objStartIndex; - cb.setShort(objLenIndex, (short) length); - // will be helpful during print(). - message.closeObjHeader.setObjLen((short) length); - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - // update message length field - length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - - public void packOptionalTlv(ChannelBuffer cb, PcepCloseMsgVer1 message) { - - LinkedList<PcepValueType> llOptionalTlv = message.llOptionalTlv; - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public byte getReason() { - return this.yReason; - } - - @Override - public void setReason(byte value) { - this.yReason = value; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("closeObjectHeader", closeObjHeader).add("Reason", yReason) - .add("OptionalTlvlist", llOptionalTlv).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java deleted file mode 100644 index 08dc0c9b..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Endpoints Object. - */ -public class PcepEndPointsObjectVer1 implements PcepEndPointsObject { - - /* - * RFC : 5440 , section : 7.6 - * An End point is defined as follows: - END-POINTS Object-Class is 4. - - END-POINTS Object-Type is 1 for IPv4 and 2 for IPv6. - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Source IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Destination IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(PcepEndPointsObjectVer1.class); - - static final byte END_POINTS_OBJ_TYPE = 1; - static final byte END_POINTS_OBJ_CLASS = 4; - static final byte END_POINTS_OBJECT_VERSION = 1; - static final short END_POINTS_OBJ_MINIMUM_LENGTH = 12; - public static byte endPointObjType; - - static final PcepObjectHeader DEFAULT_END_POINTS_OBJECT_HEADER = new PcepObjectHeader(END_POINTS_OBJ_CLASS, - END_POINTS_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - END_POINTS_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader endPointsObjHeader; - public int sourceIpAddress; - public int destIpAddress; - - /** - * Constructor to initialize all variables. - * - * @param endPointsObjHeader end points object header - * @param sourceIpAddress source IP address - * @param destIpAddress destination IP address - */ - public PcepEndPointsObjectVer1(PcepObjectHeader endPointsObjHeader, int sourceIpAddress, int destIpAddress) { - - this.endPointsObjHeader = endPointsObjHeader; - this.sourceIpAddress = sourceIpAddress; - this.destIpAddress = destIpAddress; - } - - /** - * Sets End Points Object Header. - * - * @param obj of PcepObjectHeader - */ - public void setEndPointsObjHeader(PcepObjectHeader obj) { - this.endPointsObjHeader = obj; - } - - @Override - public void setSourceIpAddress(int sourceIpAddress) { - this.sourceIpAddress = sourceIpAddress; - } - - @Override - public void setDestIpAddress(int destIpAddress) { - this.destIpAddress = destIpAddress; - } - - @Override - public int getSourceIpAddress() { - return this.sourceIpAddress; - } - - @Override - public int getDestIpAddress() { - return this.destIpAddress; - } - - /** - * Reads from channel buffer and returns object of PcepEndPointsObject. - * - * @param cb of channel buffer - * @return object of PcepEndPointsObject - * @throws PcepParseException while parsing channel buffer - */ - public static PcepEndPointsObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader endPointsObjHeader; - int sourceIpAddress; - int destIpAddress; - - endPointsObjHeader = PcepObjectHeader.read(cb); - if (endPointsObjHeader.getObjType() == END_POINTS_OBJ_TYPE - && endPointsObjHeader.getObjClass() == END_POINTS_OBJ_CLASS) { - sourceIpAddress = cb.readInt(); - destIpAddress = cb.readInt(); - } else { - throw new PcepParseException("Expected PcepEndPointsObject."); - } - return new PcepEndPointsObjectVer1(endPointsObjHeader, sourceIpAddress, destIpAddress); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - //write common header - int objLenIndex = endPointsObjHeader.write(cb); - - //write source IPv4 IP - cb.writeInt(sourceIpAddress); - //write destination IPv4 IP - cb.writeInt(destIpAddress); - - int length = cb.writerIndex() - objStartIndex; - //now write EndPoints Object Length - cb.setShort(objLenIndex, (short) length); - //will be helpful during print(). - endPointsObjHeader.setObjLen((short) length); - - return cb.writerIndex(); - - } - - /** - * Builder class for PCEP end points objects. - */ - public static class Builder implements PcepEndPointsObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsSourceIpAddressset = false; - private boolean bIsDestIpAddressset = false; - private PcepObjectHeader endpointsObjHeader; - private int sourceIpAddress; - private int destIpAddress; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepEndPointsObject build() throws PcepParseException { - - PcepObjectHeader endpointsObjHeader = this.bIsHeaderSet ? this.endpointsObjHeader - : DEFAULT_END_POINTS_OBJECT_HEADER; - - if (bIsPFlagSet) { - endpointsObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - endpointsObjHeader.setIFlag(bIFlag); - } - - if (!this.bIsSourceIpAddressset) { - throw new PcepParseException("SourceIpAddress not set while building EndPoints object"); - } - - if (!this.bIsDestIpAddressset) { - throw new PcepParseException("DestIpAddress not set while building EndPoints object"); - } - - return new PcepEndPointsObjectVer1(endpointsObjHeader, this.sourceIpAddress, this.destIpAddress); - } - - @Override - public PcepObjectHeader getEndPointsObjHeader() { - return this.endpointsObjHeader; - } - - @Override - public Builder setEndPointsObjHeader(PcepObjectHeader obj) { - this.endpointsObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getSourceIpAddress() { - return this.sourceIpAddress; - } - - @Override - public Builder setSourceIpAddress(int sourceIpAddress) { - this.sourceIpAddress = sourceIpAddress; - this.bIsSourceIpAddressset = true; - return this; - } - - @Override - public int getDestIpAddress() { - return this.destIpAddress; - } - - @Override - public Builder setDestIpAddress(int destIpAddress) { - this.destIpAddress = destIpAddress; - this.bIsDestIpAddressset = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("sourceIpAddress", sourceIpAddress) - .add("destIpAddress", destIpAddress).toString(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java deleted file mode 100644 index 4d7cb16e..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java +++ /dev/null @@ -1,407 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.types.AutonomousSystemTlv; -import org.onosproject.pcepio.types.IPv4SubObject; -import org.onosproject.pcepio.types.IPv6SubObject; -import org.onosproject.pcepio.types.PathKeySubObject; -import org.onosproject.pcepio.types.PcepErrorDetailInfo; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.SrEroSubObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Ero Object. - */ -public class PcepEroObjectVer1 implements PcepEroObject { - /* - * rfc3209 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // (Subobjects) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - If a Path message contains multiple EXPLICIT_ROUTE objects, only the - first object is meaningful. Subsequent EXPLICIT_ROUTE objects MAY be - ignored and SHOULD NOT be propagated. - - In current implementation, only strict hops are supported. So, - empty ERO with no sub-objects is considered illegal. - - Subobjects: - 0 1 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------//----------------+ - |L| Type | Length | (Subobject contents) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------//----------------+ - - L - - The L bit is an attribute of the subobject. The L bit is set - if the subobject represents a loose hop in the explicit route. - If the bit is not set, the subobject represents a strict hop in - the explicit route. - - Type - - The Type indicates the type of contents of the subobject. - - - Subobject 1: IPv4 address - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | IPv4 address (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 address (continued) | Prefix Length | Resvd | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 2: IPv6 Prefix - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | IPv6 address (16 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | Prefix Length | Resvd | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 3: Autonomous System Number - - The contents of an Autonomous System (AS) number subobject are a 2- - octet AS number. The abstract node represented by this subobject is - the set of nodes belonging to the autonomous system. - - The length of the AS number subobject is 4 octets. - - Subobject 4: PATH_KEY_32_BIT_SUB_OBJ_TYPE: - - Pathkey subobject(RFC 5520): - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | Path-Key | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PCE ID (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 5: SR_ERO_SUB_OBJ_TYPE: - - SR-ERO subobject: (draft-ietf-pce-segment-routing-00) - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | ST | Flags |F|S|C|M| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | SID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // NAI (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepEroObjectVer1.class); - - public static final byte ERO_OBJ_TYPE = 1; - public static final byte ERO_OBJ_CLASS = 7; - public static final byte ERO_OBJECT_VERSION = 1; - public static final short ERO_OBJ_MINIMUM_LENGTH = 12; - public static final byte IPV4_TYPE = 1; - public static final byte PATH_KEY_32_BIT_SUB_OBJ_TYPE = 64; - public static final int LABEL_SUB_OBJ_TYPE = 3; - public static final int SR_ERO_SUB_OBJ_TYPE = 96; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int YTYPE_SHIFT_VALUE = 0x7F; - - static final PcepObjectHeader DEFAULT_ERO_OBJECT_HEADER = new PcepObjectHeader(ERO_OBJ_CLASS, ERO_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, ERO_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader eroObjHeader; - private LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - /** - * reset variables. - */ - public PcepEroObjectVer1() { - this.eroObjHeader = null; - this.llSubObjects = null; - } - - /** - * Constructor to initialize parameters of ERO object. - * - * @param eroObjHeader ERO object header - * @param llSubObjects list of sub objects. - */ - public PcepEroObjectVer1(PcepObjectHeader eroObjHeader, LinkedList<PcepValueType> llSubObjects) { - - this.eroObjHeader = eroObjHeader; - this.llSubObjects = llSubObjects; - } - - /** - * Returns ERO object header. - * - * @return eroObjHeader ERO object header - */ - public PcepObjectHeader getEroObjHeader() { - return this.eroObjHeader; - } - - /** - * Sets Object Header. - * - * @param obj ERO object header - */ - public void setEroObjHeader(PcepObjectHeader obj) { - this.eroObjHeader = obj; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public void setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - } - - /** - * Reads from channel buffer and returns object of PcepEroObject. - * - * @param cb channel buffer. - * @return object of PcepEroObject - * @throws PcepParseException when ERO object is not present in channel buffer - */ - public static PcepEroObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader eroObjHeader; - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - eroObjHeader = PcepObjectHeader.read(cb); - - if (eroObjHeader.getObjClass() != PcepEroObjectVer1.ERO_OBJ_CLASS) { - log.debug("ErrorType:" + PcepErrorDetailInfo.ERROR_TYPE_6 + " ErrorValue:" - + PcepErrorDetailInfo.ERROR_VALUE_9); - throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_6, PcepErrorDetailInfo.ERROR_VALUE_9); - } - - if (eroObjHeader.getObjLen() > OBJECT_HEADER_LENGTH) { - ChannelBuffer tempCb = cb.readBytes(eroObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - llSubObjects = parseSubObjects(tempCb); - } - return new PcepEroObjectVer1(eroObjHeader, llSubObjects); - } - - /** - * Parse list of Sub Objects. - * - * @param cb channel buffer - * @return list of Sub Objects - * @throws PcepParseException when fails to parse sub object list - */ - protected static LinkedList<PcepValueType> parseSubObjects(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - while (0 < cb.readableBytes()) { - - //check the Type of the TLV - byte yType = cb.readByte(); - yType = (byte) (yType & (YTYPE_SHIFT_VALUE)); - byte hLength = cb.readByte(); - - PcepValueType subObj; - - switch (yType) { - - case IPv4SubObject.TYPE: - subObj = IPv4SubObject.read(cb); - break; - case IPv6SubObject.TYPE: - byte[] ipv6Value = new byte[IPv6SubObject.VALUE_LENGTH]; - cb.readBytes(ipv6Value, 0, IPv6SubObject.VALUE_LENGTH); - subObj = new IPv6SubObject(ipv6Value); - break; - case AutonomousSystemTlv.TYPE: - subObj = AutonomousSystemTlv.read(cb); - break; - case PathKeySubObject.TYPE: - subObj = PathKeySubObject.read(cb); - break; - case SrEroSubObject.TYPE: - subObj = SrEroSubObject.read(cb); - break; - default: - throw new PcepParseException("Unexpected sub object. Type: " + (int) yType); - } - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - - llSubObjects.add(subObj); - } - if (0 < cb.readableBytes()) { - throw new PcepParseException("Subobject parsing error. Extra bytes received."); - } - return llSubObjects; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = eroObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write ERO object header. Index " + objLenIndex); - } - - ListIterator<PcepValueType> listIterator = llSubObjects.listIterator(); - - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - cb.setShort(objLenIndex, (short) length); - //will be helpful during print(). - eroObjHeader.setObjLen((short) length); - - //As per RFC the length of object should be multiples of 4 - int pad = length % 4; - - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - - objLenIndex = cb.writerIndex(); - return objLenIndex; - } - - /** - * Builder class for PCEP ERO object. - */ - public static class Builder implements PcepEroObject.Builder { - - private boolean bIsHeaderSet = false; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - private PcepObjectHeader eroObjHeader; - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - @Override - public PcepEroObject build() { - - PcepObjectHeader eroObjHeader = this.bIsHeaderSet ? this.eroObjHeader : DEFAULT_ERO_OBJECT_HEADER; - - if (bIsPFlagSet) { - eroObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - eroObjHeader.setIFlag(bIFlag); - } - - return new PcepEroObjectVer1(eroObjHeader, this.llSubObjects); - } - - @Override - public PcepObjectHeader getEroObjHeader() { - return this.eroObjHeader; - } - - @Override - public Builder setEroObjHeader(PcepObjectHeader obj) { - this.eroObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public Builder setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("EroObjHeader", eroObjHeader).add("SubObjects", llSubObjects) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java deleted file mode 100644 index 594e40c1..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepError; -import org.onosproject.pcepio.protocol.PcepErrorInfo; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepRPObject; -import org.onosproject.pcepio.protocol.PcepTEObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Error Info. - * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02. - */ -public class PcepErrorInfoVer1 implements PcepErrorInfo { - - protected static final Logger log = LoggerFactory.getLogger(PcepErrorInfoVer1.class); - //Error list is optional - private LinkedList<PcepError> errList; - - /** - * Constructor to add PCEP error object to the list. - * - * @param llRPObjList list of PCEP RP object - * @param llTEObjList list of PCEP TE object - * @param llErrObjList list of PCEP error object - */ - public PcepErrorInfoVer1(LinkedList<PcepRPObject> llRPObjList, LinkedList<PcepTEObject> llTEObjList, - LinkedList<PcepErrorObject> llErrObjList) { - this.errList = new LinkedList<>(); - if ((llErrObjList != null) && (!llErrObjList.isEmpty())) { - this.errList.add(new PcepErrorVer1(llRPObjList, llTEObjList, llErrObjList)); - } - } - - /** - * Constructor to initialize error info. - * - * @param errll linked list or pcep error - */ - public PcepErrorInfoVer1(LinkedList<PcepError> errll) { - this.errList = errll; - } - - @Override - public boolean isErrorInfoPresent() { - return !this.errList.isEmpty(); - } - - @Override - public void read(ChannelBuffer cb) throws PcepParseException { - PcepObjectHeader tempObjHeader; - - while (0 < cb.readableBytes()) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - byte yObjClass = tempObjHeader.getObjClass(); - if ((yObjClass != PcepRPObjectVer1.RP_OBJ_CLASS) && (yObjClass != PcepTEObjectVer1.TE_OBJ_CLASS) - && (yObjClass != PcepErrorObjectVer1.ERROR_OBJ_CLASS)) { - throw new PcepParseException("Unknown Object is present in PCEP-ERROR. Object Class: " + yObjClass); - } - - this.errList.add(PcepErrorVer1.read(cb)); - } - } - - @Override - public void write(ChannelBuffer cb) throws PcepParseException { - //write <error> - ListIterator<PcepError> listIterator = errList.listIterator(); - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - - //RP Object list is optional - LinkedList<PcepRPObject> llRPObjList = pcepError.getRPObjList(); - if (llRPObjList != null) { - ListIterator<PcepRPObject> rpListIterator = llRPObjList.listIterator(); - while (rpListIterator.hasNext()) { - rpListIterator.next().write(cb); - } - } - - //TE Object list is optional - LinkedList<PcepTEObject> llTEObjList = pcepError.getTEObjList(); - if (llTEObjList != null) { - ListIterator<PcepTEObject> teListIterator = llTEObjList.listIterator(); - while (teListIterator.hasNext()) { - teListIterator.next().write(cb); - } - } - - // <error-obj-list> is mandatory - boolean bIsErrorObjListFound = false; - - LinkedList<PcepErrorObject> llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator<PcepErrorObject> errObjListIterator = llErrObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObjListIterator.next().write(cb); - bIsErrorObjListFound = true; - } - } - - if (!bIsErrorObjListFound) { - throw new PcepParseException("<error-obj-list> is mandatory."); - } - } - } - - @Override - public LinkedList<Integer> getErrorType() { - LinkedList<Integer> errorType = new LinkedList<>(); - ListIterator<PcepError> listIterator = errList.listIterator(); - PcepErrorObject errObj; - int error; - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - LinkedList<PcepErrorObject> llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator<PcepErrorObject> errObjListIterator = llErrObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObj = errObjListIterator.next(); - error = errObj.getErrorType(); - errorType.add(error); - } - } - } - return errorType; - } - - @Override - public LinkedList<Integer> getErrorValue() { - LinkedList<Integer> errorValue = new LinkedList<>(); - ListIterator<PcepError> listIterator = errList.listIterator(); - PcepErrorObject errObj; - int error; - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - LinkedList<PcepErrorObject> llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator<PcepErrorObject> errObjListIterator = llErrObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObj = errObjListIterator.next(); - error = errObj.getErrorValue(); - errorValue.add(error); - } - } - } - return errorValue; - } - - /** - * Builder class for PCEP error info. - */ - public static class Builder implements PcepErrorInfo.Builder { - private LinkedList<PcepError> errll; - - @Override - public PcepErrorInfo build() { - return new PcepErrorInfoVer1(errll); - } - - @Override - public LinkedList<PcepError> getPcepErrorList() { - return this.errll; - } - - @Override - public Builder setPcepErrorList(LinkedList<PcepError> errll) { - this.errll = errll; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ErrorList", errList).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java deleted file mode 100644 index 927d83d6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java +++ /dev/null @@ -1,383 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepErrorInfo; -import org.onosproject.pcepio.protocol.PcepErrorMsg; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.ErrorObjListWithOpen; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides PCEP Error Message. - */ -public class PcepErrorMsgVer1 implements PcepErrorMsg { - - /* - * PCE Error message format. - - <PCErr Message> ::= <Common Header> - ( <error-obj-list> [<Open>] ) | <error> - [<error-list>] - - <error-obj-list> ::=<PCEP-ERROR>[<error-obj-list>] - - <error> ::=[<request-id-list> | <te-id-list>] - <error-obj-list> - - <request-id-list> ::=<RP>[<request-id-list>] - - <te-id-list> ::=<TE>[<te-id-list>] - - <error-list> ::=<error>[<error-list>] - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepOpenMsgVer1.class); - public static final byte PACKET_VERSION = 1; - public static final int PACKET_MINIMUM_LENGTH = 12; - public static final PcepType MSG_TYPE = PcepType.ERROR; - - //Below either one should be present. - private ErrorObjListWithOpen errObjListWithOpen; //optional ( <error-obj-list> [<Open>] ) - private PcepErrorInfo errInfo; //optional <error> [<error-list>] - - public static final PcepErrorMsgVer1.Reader READER = new Reader(); - - /** - * constructor to initialize variables. - */ - public PcepErrorMsgVer1() { - errObjListWithOpen = null; - errInfo = null; - } - - /** - * Constructor to initialize variables. - * - * @param errObjListWithOpen error-object-list with open object - * @param errInfo error information - */ - public PcepErrorMsgVer1(ErrorObjListWithOpen errObjListWithOpen, PcepErrorInfo errInfo) { - this.errObjListWithOpen = errObjListWithOpen; - this.errInfo = errInfo; - } - - /** - * Reader class for reading PCEP error Message from channel buffer. - */ - public static class Reader implements PcepMessageReader<PcepErrorMsg> { - - ErrorObjListWithOpen errObjListWithOpen; - PcepErrorInfo errInfo; - PcepObjectHeader tempObjHeader; - - @Override - public PcepErrorMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - errObjListWithOpen = null; - errInfo = null; - tempObjHeader = null; - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Packet size is less than the minimum length."); - } - - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version: Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 1 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type: Expected=PcepType.ERROR(6), got=" + type); - } - int length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException( - "Wrong length: Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " + length); - } - - //parse <PCErr Message> - parsePCErrMsg(cb); - - // If other than RP or TE or PCEP-ERROR present then it is error. - if (0 < cb.readableBytes()) { - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - throw new PcepParseException("Unexpected Object found. Object Class : " + tempObjHeader.getObjClass()); - } - - return new PcepErrorMsgVer1(errObjListWithOpen, errInfo); - } - - /** - * Parsing PCErr Message. - * - * @param cb channel buffer. - * @throws PcepParseException if mandatory fields are missing - * output: this.errObjListWithOpen, this.errInfo - */ - public void parsePCErrMsg(ChannelBuffer cb) throws PcepParseException { - //If PCEP-ERROR list is followed by OPEN Object then store into ErrorObjListWithOpen. - // ( <error-obj-list> [<Open>] - //If PCEP-ERROR list is followed by RP or TE Object then store into errInfo. <error> [<error-list>] - //If only PCEP-ERROR list is present then store into ErrorObjListWithOpen. - PcepObjectHeader tempObjHeader; - LinkedList<PcepErrorObject> llErrObjList; - - if (0 >= cb.readableBytes()) { - throw new PcepParseException("PCEP-ERROR message came with empty objects."); - } - - //parse PCEP-ERROR list - llErrObjList = new LinkedList<>(); - tempObjHeader = parseErrorObjectList(llErrObjList, cb); - - //check whether OPEN-OBJECT is present. - if ((tempObjHeader != null) - && (tempObjHeader.getObjClass() == PcepOpenObjectVer1.OPEN_OBJ_CLASS)) { - - if (llErrObjList.isEmpty()) { - throw new PcepParseException("<error-obj-list> should be present if OPEN-OBJECT exists"); - } - - PcepOpenObject pcepOpenObj = PcepOpenObjectVer1.read(cb); - this.errObjListWithOpen = new ErrorObjListWithOpen(llErrObjList, pcepOpenObj); - - } else if ((tempObjHeader != null) //check whether RP or TE Object is present. - && ((tempObjHeader.getObjClass() == PcepRPObjectVer1.RP_OBJ_CLASS) - || (tempObjHeader.getObjClass() == PcepTEObjectVer1.TE_OBJ_CLASS))) { - - this.errInfo = new PcepErrorInfoVer1(null, null, llErrObjList); - this.errInfo.read(cb); - - } else if (!llErrObjList.isEmpty()) { - //If only PCEP-ERROR list is present then store it in errObjListWithOpen. - this.errObjListWithOpen = new ErrorObjListWithOpen(llErrObjList); - } else { - throw new PcepParseException("Empty PCEP-ERROR message."); - } - } - - /** - * Parse error-obj-list. - * - * @param llErrObjList error object list output - * @param cb channel buffer input - * @throws PcepParseException if mandatory fields are missing - * @return error object header - */ - public PcepObjectHeader parseErrorObjectList(LinkedList<PcepErrorObject> llErrObjList, ChannelBuffer cb) - throws PcepParseException { - PcepObjectHeader tempObjHeader = null; - - while (0 < cb.readableBytes()) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - if (tempObjHeader.getObjClass() == PcepErrorObjectVer1.ERROR_OBJ_CLASS) { - llErrObjList.add(PcepErrorObjectVer1.read(cb)); - } else { - break; - } - } - return tempObjHeader; - } - } - - /** - * Builder class for PCEP error message. - */ - public static class Builder implements PcepErrorMsg.Builder { - // Pcep error message fields - - private ErrorObjListWithOpen errObjListWithOpen = null; //optional ( <error-obj-list> [<Open>] ) - private PcepErrorInfo errInfo = null; //optional <error> [<error-list>] - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.ERROR; - } - - @Override - public PcepErrorMsg build() { - return new PcepErrorMsgVer1(this.errObjListWithOpen, this.errInfo); - } - - @Override - public ErrorObjListWithOpen getErrorObjListWithOpen() { - return this.errObjListWithOpen; - } - - @Override - public Builder setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen) { - this.errObjListWithOpen = errObjListWithOpen; - return this; - } - - @Override - public PcepErrorInfo getPcepErrorInfo() { - return this.errInfo; - } - - @Override - public Builder setPcepErrorInfo(PcepErrorInfo errInfo) { - this.errInfo = errInfo; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - public static final Writer WRITER = new Writer(); - - /** - * Writer class for writing PCEP error Message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepErrorMsgVer1> { - @Override - public void write(ChannelBuffer cb, PcepErrorMsgVer1 message) throws PcepParseException { - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type 0xC - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort(0); - ErrorObjListWithOpen errObjListWithOpen = message.getErrorObjListWithOpen(); - PcepErrorInfo errInfo = message.getPcepErrorInfo(); - - // write ( <error-obj-list> [<Open>] ) if exists. - // otherwise write <error> [<error-list>] - - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - errObjListWithOpen.write(cb); - } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - errInfo.write(cb); - } else { - throw new PcepParseException("Empty PCEP-ERROR message."); - } - // PcepErrorMessage message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public ErrorObjListWithOpen getErrorObjListWithOpen() { - return this.errObjListWithOpen; - } - - @Override - public void setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen) { - this.errObjListWithOpen = errObjListWithOpen; - } - - @Override - public PcepErrorInfo getPcepErrorInfo() { - return this.errInfo; - } - - @Override - public void setPcepErrorInfo(PcepErrorInfo errInfo) { - this.errInfo = errInfo; - } - - /** - * Return list of Error types. - * - * @return error types list - */ - public LinkedList<Integer> getErrorType() { - LinkedList<Integer> llErrorType = new LinkedList<>(); - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - llErrorType = errObjListWithOpen.getErrorType(); - } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - llErrorType = errInfo.getErrorType(); - } - - return llErrorType; - } - - /** - * Return list of Error values. - * - * @return error value list - */ - public LinkedList<Integer> getErrorValue() { - LinkedList<Integer> llErrorValue = new LinkedList<>(); - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - llErrorValue = errObjListWithOpen.getErrorValue(); - } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - llErrorValue = errInfo.getErrorValue(); - } - - return llErrorValue; - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - toStrHelper.add("ErrorObjectListWithOpen", errObjListWithOpen); - } - if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - toStrHelper.add("ErrorInfo", errInfo); - } - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java deleted file mode 100644 index 48a337f4..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Error Object. - */ -public class PcepErrorObjectVer1 implements PcepErrorObject { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | Flags | Error-Type | Error-value | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(PcepErrorObjectVer1.class); - - public static final byte ERROR_OBJ_TYPE = 1; - public static final byte ERROR_OBJ_CLASS = 13; - public static final byte ERROR_OBJECT_VERSION = 1; - //ERROR_OBJ_MINIMUM_LENGTH = CommonHeaderLen(4)+ErrorObjectHeaderLen(4) - public static final short ERROR_OBJ_MINIMUM_LENGTH = 8; - public static final int OBJECT_HEADER_LENGTH = 4; - - public static final PcepObjectHeader DEFAULT_ERROR_OBJECT_HEADER = new PcepObjectHeader(ERROR_OBJ_CLASS, - ERROR_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - ERROR_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader errorObjHeader; - private byte yErrorType; - private byte yErrorValue; - private LinkedList<PcepValueType> llOptionalTlv; // Optional TLV - - /** - * Constructor to initialize variables. - * - * @param errorObjHeader ERROR Object header - * @param yErrorType Error Type - * @param yErrorValue Error Value - * @param llOptionalTlv list of optional TLV - */ - - public PcepErrorObjectVer1(PcepObjectHeader errorObjHeader, byte yErrorType, byte yErrorValue, - LinkedList<PcepValueType> llOptionalTlv) { - this.errorObjHeader = errorObjHeader; - this.yErrorType = yErrorType; - this.yErrorValue = yErrorValue; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * sets Object Header. - * - * @param obj Error-Object header - */ - public void setLspObjHeader(PcepObjectHeader obj) { - this.errorObjHeader = obj; - } - - @Override - public void setErrorType(byte yErrorType) { - this.yErrorType = yErrorType; - } - - @Override - public void setErrorValue(byte yErrorValue) { - this.yErrorValue = yErrorValue; - } - - /** - * returns object header. - * - * @return errorObjHeader Error-Object header - */ - public PcepObjectHeader getErrorObjHeader() { - return this.errorObjHeader; - } - - @Override - public int getErrorType() { - return this.yErrorType; - } - - @Override - public byte getErrorValue() { - return this.yErrorValue; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Reads from channel buffer and returns object of PcepErrorObject. - * - * @param cb of channel buffer. - * @return object of PCEP-ERROR-OBJECT - */ - public static PcepErrorObject read(ChannelBuffer cb) { - - PcepObjectHeader errorObjHeader; - byte yErrorType; - byte yErrorValue; - LinkedList<PcepValueType> llOptionalTlv; - - errorObjHeader = PcepObjectHeader.read(cb); - - //take only ErrorObject buffer. - ChannelBuffer tempCb = cb.readBytes(errorObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - tempCb.readByte(); //ignore Reserved - tempCb.readByte(); //ignore Flags - yErrorType = tempCb.readByte(); - yErrorValue = tempCb.readByte(); - - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepErrorObjectVer1(errorObjHeader, yErrorType, yErrorValue, llOptionalTlv); - } - - /** - * returns Linked list of optional tlvs. - * - * @param cb channel buffer. - * @return Linked list of optional tlvs - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - - byte[] yTemp = new byte[cb.readableBytes()]; - cb.readBytes(yTemp); - - return llOutOptionalTlv; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = errorObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("While writing Error Object Header."); - } - - //write Reserved - cb.writeByte(0); - //write Flags - cb.writeByte(0); - //write ErrorType and ErrorValue - cb.writeByte(this.yErrorType); - cb.writeByte(this.yErrorValue); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - //will be helpful during print(). - errorObjHeader.setObjLen((short) length); - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - - cb.setShort(objLenIndex, (short) length); - return length; - } - - /** - * Pack the Optional tlvs. - * - * @param cb channel buffer. - * @return writer index. - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - int startIndex = cb.writerIndex(); - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("TLV is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - } - - return cb.writerIndex() - startIndex; - } - - /** - * Builder class for PCEP error object. - */ - public static class Builder implements PcepErrorObject.Builder { - - private boolean bIsHeaderSet = false; - - private PcepObjectHeader errorObjHeader; - private byte yErrorType; - private byte yErrorValue; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - @Override - public PcepErrorObject build() { - - PcepObjectHeader errorObjHeader = this.bIsHeaderSet ? this.errorObjHeader : DEFAULT_ERROR_OBJECT_HEADER; - - if (bIsPFlagSet) { - errorObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - errorObjHeader.setIFlag(bIFlag); - } - - return new PcepErrorObjectVer1(errorObjHeader, yErrorType, yErrorValue, llOptionalTlv); - } - - @Override - public PcepObjectHeader getErrorObjHeader() { - return this.errorObjHeader; - } - - @Override - public Builder setErrorObjHeader(PcepObjectHeader obj) { - this.errorObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getErrorType() { - return this.yErrorType; - } - - @Override - public Builder setErrorType(byte value) { - this.yErrorType = value; - return this; - } - - @Override - public byte getErrorValue() { - return this.yErrorValue; - } - - @Override - public Builder setErrorValue(byte value) { - this.yErrorValue = value; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectHeader", errorObjHeader).add("ErrorType", yErrorType) - .add("ErrorValue", yErrorValue).add("OptionalTlv", llOptionalTlv).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java deleted file mode 100644 index 0ea51410..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java +++ /dev/null @@ -1,399 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepError; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepRPObject; -import org.onosproject.pcepio.protocol.PcepTEObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcepError list which contains RP or TE objects. - * Reference:PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02. - */ -public class PcepErrorVer1 implements PcepError { - - /* - <error>::=[<request-id-list> | <te-id-list>] - <error-obj-list> - - <request-id-list>::=<RP>[<request-id-list>] - - <te-id-list>::=<TE>[<te-id-list>] - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepErrorVer1.class); - - private boolean isErroInfoSet; - //PcepErrorObject list - private LinkedList<PcepErrorObject> llErrObjList; - //PcepRPObject list - private LinkedList<PcepRPObject> llRPObjList; - //PcepTEObject list - private LinkedList<PcepTEObject> llTEObjList; - private boolean isTEObjListSet; - - public static final int OBJECT_HEADER_LENGTH = 4; - - /** - * Constructor to initialize variable. - */ - public PcepErrorVer1() { - this.llRPObjList = null; - this.llTEObjList = null; - this.llErrObjList = null; - } - - /** - * Constructor to initialize variable. - * - * @param llRPObjList list of PcepRPObject - * @param llTEObjList list of PcepTEObject - * @param llErrObjListObjList list of PcepErrorObject - */ - public PcepErrorVer1(LinkedList<PcepRPObject> llRPObjList, LinkedList<PcepTEObject> llTEObjList, - LinkedList<PcepErrorObject> llErrObjListObjList) { - this.llRPObjList = llRPObjList; - this.llTEObjList = llTEObjList; - this.llErrObjList = llErrObjListObjList; - } - - /** - * Constructor to initialize PcepError. - * - * @param llErrObjList list of PcepErrorObject - */ - public PcepErrorVer1(LinkedList<PcepErrorObject> llErrObjList) { - this.llRPObjList = null; - this.llTEObjList = null; - this.llErrObjList = llErrObjList; - } - - @Override - public LinkedList<PcepRPObject> getRPObjList() { - return this.llRPObjList; - } - - @Override - public LinkedList<PcepTEObject> getTEObjList() { - return this.llTEObjList; - } - - @Override - public LinkedList<PcepErrorObject> getErrorObjList() { - return this.llErrObjList; - } - - /** - * Parse RP List from the channel buffer. - * - * @param cb of type channel buffer - * @throws PcepParseException if mandatory fields are missing - */ - public void parseRPList(ChannelBuffer cb) throws PcepParseException { - byte yObjClass; - byte yObjType; - - llRPObjList = new LinkedList<>(); - - // caller should verify for RP object - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - log.debug("Unable to find RP Object"); - return; - } - - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - PcepRPObject rpObj; - while ((yObjClass == PcepRPObjectVer1.RP_OBJ_CLASS) && (yObjType == PcepRPObjectVer1.RP_OBJ_TYPE)) { - rpObj = PcepRPObjectVer1.read(cb); - llRPObjList.add(rpObj); - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } else { - break; - } - } - } - - /** - * Parse TE List from the channel buffer. - * - * @param cb of type channel buffer - * @throws PcepParseException if mandatory fields are missing - */ - public void parseTEList(ChannelBuffer cb) throws PcepParseException { - byte yObjClass; - byte yObjType; - - llTEObjList = new LinkedList<>(); - - // caller should verify for TE object - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - log.debug("Unable to find TE Object"); - return; - } - - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - PcepTEObject teObj; - while ((yObjClass == PcepTEObjectVer1.TE_OBJ_CLASS) && ((yObjType == PcepTEObjectVer1.TE_OBJ_TYPE_NODE_VALUE) - || (yObjType == PcepTEObjectVer1.TE_OBJ_TYPE_LINK_VALUE))) { - teObj = PcepTEObjectVer1.read(cb); - llTEObjList.add(teObj); - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } else { - break; - } - } - } - - /** - * parseErrObjList from the channel buffer. - * - * @param cb of type channel buffer - * @throws PcepParseException if mandatory fields are missing - */ - public void parseErrObjList(ChannelBuffer cb) throws PcepParseException { - byte yObjClass; - byte yObjType; - boolean bIsErrorObjFound = false; - - llErrObjList = new LinkedList<>(); - - // caller should verify for RP object - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - throw new PcepParseException("Unable to find PCEP-ERROR Object"); - } - - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - PcepErrorObject errorObject; - while ((yObjClass == PcepErrorObjectVer1.ERROR_OBJ_CLASS) && (yObjType == PcepErrorObjectVer1.ERROR_OBJ_TYPE)) { - errorObject = PcepErrorObjectVer1.read(cb); - llErrObjList.add(errorObject); - bIsErrorObjFound = true; - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } else { - break; - } - } - - if (!bIsErrorObjFound) { - throw new PcepParseException("At least one PCEP-ERROR Object should be present."); - } - } - - /** - * Reads the byte stream of PcepError from channel buffer. - * - * @param cb of type channel buffer - * @return PcepError error part of PCEP-ERROR - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepErrorVer1 read(ChannelBuffer cb) throws PcepParseException { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - throw new PcepParseException("Unknown Object"); - } - - PcepErrorVer1 pcepError = new PcepErrorVer1(); - // check whether any PCEP Error Info is present - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - byte yObjClass = tempObjHeader.getObjClass(); - - //If RPlist present then store it.RPList and TEList are optional - if (yObjClass == PcepRPObjectVer1.RP_OBJ_CLASS) { - log.debug("RP_LIST"); - pcepError.parseRPList(cb); - yObjClass = checkNextObject(cb); - } else if (yObjClass == PcepTEObjectVer1.TE_OBJ_CLASS) { - log.debug("TE_LIST"); - pcepError.parseTEList(cb); - yObjClass = checkNextObject(cb); - } - - if (yObjClass == PcepErrorObjectVer1.ERROR_OBJ_CLASS) { - log.debug("PCEP-ERROR obj list"); - pcepError.parseErrObjList(cb); - yObjClass = checkNextObject(cb); - } - - return pcepError; - } - - /** - * Checks Next Object. - * - * @param cb of type channel buffer. - * @return object type class. - */ - private static byte checkNextObject(ChannelBuffer cb) { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - return 0; - } - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - return tempObjHeader.getObjClass(); - } - - /** - * Writes the byte stream of PCEP error to the channel buffer. - * - * @param cb of type channel buffer - * @return object length index - * @throws PcepParseException if mandatory fields are missing - */ - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - int iLenStartIndex = cb.writerIndex(); - - // RPlist is optional - if (this.isErroInfoSet) { - ListIterator<PcepRPObject> rpObjlistIterator = this.llRPObjList.listIterator(); - while (rpObjlistIterator.hasNext()) { - rpObjlistIterator.next().write(cb); - } - } - - // TElist is optional - if (this.isTEObjListSet) { - ListIterator<PcepTEObject> teObjlistIterator = this.llTEObjList.listIterator(); - while (teObjlistIterator.hasNext()) { - teObjlistIterator.next().write(cb); - } - } - //ErrList is mandatory - ListIterator<PcepErrorObject> errlistIterator = this.llErrObjList.listIterator(); - while (errlistIterator.hasNext()) { - errlistIterator.next().write(cb); - } - - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Builder for error part of PCEP-ERROR. - */ - public static class Builder implements PcepError.Builder { - - private LinkedList<PcepRPObject> llRPObjList; - private LinkedList<PcepTEObject> llTEObjList; - private LinkedList<PcepErrorObject> llErrObjList; - - @Override - public PcepError build() { - return new PcepErrorVer1(llRPObjList, llTEObjList, llErrObjList); - } - - @Override - public LinkedList<PcepRPObject> getRPObjList() { - return this.llRPObjList; - } - - @Override - public Builder setRPObjList(LinkedList<PcepRPObject> llRPObjList) { - this.llRPObjList = llRPObjList; - return this; - } - - @Override - public LinkedList<PcepTEObject> getTEObjList() { - return this.llTEObjList; - } - - @Override - public Builder setTEObjList(LinkedList<PcepTEObject> llTEObjList) { - this.llTEObjList = llTEObjList; - return this; - } - - @Override - public LinkedList<PcepErrorObject> getErrorObjList() { - return this.llErrObjList; - } - - @Override - public Builder setErrorObjList(LinkedList<PcepErrorObject> llErrObjList) { - this.llErrObjList = llErrObjList; - return this; - } - - } - - @Override - public void setRPObjList(LinkedList<PcepRPObject> llRPObjList) { - this.llRPObjList = llRPObjList; - } - - @Override - public void setTEObjList(LinkedList<PcepTEObject> llTEObjList) { - this.llTEObjList = llTEObjList; - } - - @Override - public void setErrorObjList(LinkedList<PcepErrorObject> llErrObjList) { - this.llErrObjList = llErrObjList; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("RpObjectList", llRPObjList) - .add("TeObjectList", llTEObjList) - .add("ErrorObjectList", llErrObjList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java deleted file mode 100644 index 6b5d450a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.onosproject.pcepio.protocol.PcInitiatedLspRequest; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepBandwidthObject; -import org.onosproject.pcepio.protocol.PcepCloseMsg; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepErrorInfo; -import org.onosproject.pcepio.protocol.PcepError; -import org.onosproject.pcepio.protocol.PcepErrorMsg; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepFactory; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4Adjacency; -import org.onosproject.pcepio.protocol.PcepInitiateMsg; -import org.onosproject.pcepio.protocol.PcepIroObject; -import org.onosproject.pcepio.protocol.PcepKeepaliveMsg; -import org.onosproject.pcepio.protocol.PcepLabelObject; -import org.onosproject.pcepio.protocol.PcepLabelRangeObject; -import org.onosproject.pcepio.protocol.PcepLabelRangeResvMsg; -import org.onosproject.pcepio.protocol.PcepLabelUpdate; -import org.onosproject.pcepio.protocol.PcepLabelUpdateMsg; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepLspaObject; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMetricObject; -import org.onosproject.pcepio.protocol.PcepMsgPath; -import org.onosproject.pcepio.protocol.PcepOpenMsg; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepReportMsg; -import org.onosproject.pcepio.protocol.PcepRroObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepStateReport; -import org.onosproject.pcepio.protocol.PcepUpdateMsg; -import org.onosproject.pcepio.protocol.PcepUpdateRequest; -import org.onosproject.pcepio.protocol.PcepVersion; - -/** - * Provides PCEP Factory and returns builder classes for all objects and messages. - */ -public class PcepFactoryVer1 implements PcepFactory { - - public static final PcepFactoryVer1 INSTANCE = new PcepFactoryVer1(); - - @Override - public PcepOpenMsg.Builder buildOpenMsg() { - return new PcepOpenMsgVer1.Builder(); - } - - @Override - public PcepOpenObject.Builder buildOpenObject() { - return new PcepOpenObjectVer1.Builder(); - } - - @Override - public PcepKeepaliveMsg.Builder buildKeepaliveMsg() { - return new PcepKeepaliveMsgVer1.Builder(); - } - - @Override - public PcepCloseMsg.Builder buildCloseMsg() { - return new PcepCloseMsgVer1.Builder(); - } - - @Override - public PcepUpdateMsg.Builder buildUpdateMsg() { - return new PcepUpdateMsgVer1.Builder(); - } - - @Override - public PcepReportMsg.Builder buildReportMsg() { - return new PcepReportMsgVer1.Builder(); - } - - @Override - public PcepInitiateMsg.Builder buildPcepInitiateMsg() { - return new PcepInitiateMsgVer1.Builder(); - } - - @Override - public PcepLspObject.Builder buildLspObject() { - return new PcepLspObjectVer1.Builder(); - } - - @Override - public PcepMessageReader<PcepMessage> getReader() { - return PcepMessageVer1.READER; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepSrpObject.Builder buildSrpObject() { - return new PcepSrpObjectVer1.Builder(); - } - - @Override - public PcepEndPointsObject.Builder buildEndPointsObject() { - return new PcepEndPointsObjectVer1.Builder(); - } - - @Override - public PcepEroObject.Builder buildEroObject() { - return new PcepEroObjectVer1.Builder(); - } - - @Override - public PcepRroObject.Builder buildRroObject() { - return new PcepRroObjectVer1.Builder(); - } - - @Override - public PcepLspaObject.Builder buildLspaObject() { - return new PcepLspaObjectVer1.Builder(); - } - - @Override - public PcepIroObject.Builder buildIroObject() { - return new PcepIroObjectVer1.Builder(); - } - - @Override - public PcepMetricObject.Builder buildMetricObject() { - return new PcepMetricObjectVer1.Builder(); - } - - @Override - public PcepBandwidthObject.Builder buildBandwidthObject() { - return new PcepBandwidthObjectVer1.Builder(); - } - - @Override - public PcepMsgPath.Builder buildPcepMsgPath() { - return new PcepMsgPathVer1.Builder(); - } - - @Override - public PcepStateReport.Builder buildPcepStateReport() { - return new PcepStateReportVer1.Builder(); - } - - @Override - public PcepUpdateRequest.Builder buildPcepUpdateRequest() { - return new PcepUpdateRequestVer1.Builder(); - } - - @Override - public PcInitiatedLspRequest.Builder buildPcInitiatedLspRequest() { - return new PcInitiatedLspRequestVer1.Builder(); - } - - @Override - public PcepAttribute.Builder buildPcepAttribute() { - return new PcepAttributeVer1.Builder(); - } - - @Override - public PcepLabelUpdateMsg.Builder buildPcepLabelUpdateMsg() { - return new PcepLabelUpdateMsgVer1.Builder(); - } - - @Override - public PcepLabelUpdate.Builder buildPcepLabelUpdateObject() { - return new PcepLabelUpdateVer1.Builder(); - } - - @Override - public PcepLabelObject.Builder buildLabelObject() { - return new PcepLabelObjectVer1.Builder(); - } - - @Override - public PcepErrorMsg.Builder buildPcepErrorMsg() { - return new PcepErrorMsgVer1.Builder(); - } - - @Override - public PcepErrorObject.Builder buildPcepErrorObject() { - return new PcepErrorObjectVer1.Builder(); - } - - @Override - public PcepFecObjectIPv4Adjacency.Builder buildFecIpv4Adjacency() { - return new PcepFecObjectIPv4AdjacencyVer1.Builder(); - } - - @Override - public PcepErrorInfo.Builder buildPcepErrorInfo() { - return new PcepErrorInfoVer1.Builder(); - } - - @Override - public PcepError.Builder buildPcepError() { - return new PcepErrorVer1.Builder(); - } - - @Override - public PcepLabelRangeObject.Builder buildPcepLabelRangeObject() { - return new PcepLabelRangeObjectVer1.Builder(); - } - - @Override - public PcepLabelRangeResvMsg.Builder buildPcepLabelRangeResvMsg() { - return new PcepLabelRangeResvMsgVer1.Builder(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java deleted file mode 100644 index 51c672d3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4Adjacency; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP fec Object IPv4 Adjacency object. - */ -public class PcepFecObjectIPv4AdjacencyVer1 implements PcepFecObjectIPv4Adjacency { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 3 IPv4 Adjacency - */ - protected static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4AdjacencyVer1.class); - - public static final byte FEC_OBJ_TYPE = 3; - public static final byte FEC_OBJ_CLASS = 36; //to be defined - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 12; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private int localIPv4Address; - private int remoteIPv4Address; - - /** - * Constructor to initialize parameters for PCEP fec object . - * - * @param fecObjHeader FEC Object header - * @param localIPv4Address Local IPv4 Address - * @param remoteIPv4Address Remote IPv4 Address - */ - public PcepFecObjectIPv4AdjacencyVer1(PcepObjectHeader fecObjHeader, int localIPv4Address, int remoteIPv4Address) { - this.fecObjHeader = fecObjHeader; - this.localIPv4Address = localIPv4Address; - this.remoteIPv4Address = remoteIPv4Address; - } - - /** - * Sets Object header. - * - * @param obj Pcep fec Object Header - */ - public void setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public int getLocalIPv4Address() { - return this.localIPv4Address; - } - - @Override - public void seLocalIPv4Address(int value) { - this.localIPv4Address = value; - } - - @Override - public int getRemoteIPv4Address() { - return this.remoteIPv4Address; - } - - @Override - public void seRemoteIPv4Address(int value) { - this.remoteIPv4Address = value; - } - - /** - * Reads from channel buffer and Returns object of PcepFecObjectIPv4Adjacency. - * - * @param cb of channel buffer. - * @return object of PcepFecObjectIPv4Adjacency - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv4Adjacency read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - int localIPv4Address; - int remoteIPv4Address; - - fecObjHeader = PcepObjectHeader.read(cb); - - //take only FEC IPv4 Adjacency Object buffer. - ChannelBuffer tempCb = cb.readBytes(fecObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH); - localIPv4Address = tempCb.readInt(); - remoteIPv4Address = tempCb.readInt(); - - return new PcepFecObjectIPv4AdjacencyVer1(fecObjHeader, localIPv4Address, remoteIPv4Address); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //Write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeInt(localIPv4Address); - cb.writeInt(remoteIPv4Address); - - //Now write FEC IPv4 Adjacency Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec object IPv4 Adjacency. - */ - public static class Builder implements PcepFecObjectIPv4Adjacency.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLocalIPv4Addressset = false; - private boolean bIsRemoteIPv4Addressset = false; - - private PcepObjectHeader fecObjHeader; - int localIPv4Address; - int remoteIPv4Address; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv4Adjacency build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsLocalIPv4Addressset) { - throw new PcepParseException( - "Local IPv4 Address not set while building PcepFecObjectIPv4Adjacency object."); - } - - if (!this.bIsRemoteIPv4Addressset) { - throw new PcepParseException( - " Remote IPv4 Address not set while building PcepFecObjectIPv4Adjacency object."); - } - - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv4AdjacencyVer1(fecObjHeader, this.localIPv4Address, this.remoteIPv4Address); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv4AdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv4AdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getLocalIPv4Address() { - return this.localIPv4Address; - } - - @Override - public Builder seLocalIPv4Address(int value) { - this.localIPv4Address = value; - this.bIsLocalIPv4Addressset = true; - return this; - } - - @Override - public int getRemoteIPv4Address() { - return this.remoteIPv4Address; - } - - @Override - public Builder seRemoteIPv4Address(int value) { - this.remoteIPv4Address = value; - this.bIsRemoteIPv4Addressset = true; - return this; - } - - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("fecObjHeader", fecObjHeader) - .add("localIPv4Address", localIPv4Address) - .add("remoteIPv4Address", remoteIPv4Address).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java deleted file mode 100644 index f2f54cda..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java +++ /dev/null @@ -1,334 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4UnnumberedAdjacency; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv4 Unnumbered Adjacency object. - */ -public class PcepFecObjectIPv4UnnumberedAdjacencyVer1 implements PcepFecObjectIPv4UnnumberedAdjacency { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 5, Unnumbered Adjacency with IPv4 NodeIDs - */ - protected static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4UnnumberedAdjacencyVer1.class); - - public static final byte FEC_OBJ_TYPE = 5; - public static final byte FEC_OBJ_CLASS = 63; //to be defined - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 20; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private int localNodeID; - private int localInterfaceID; - private int remoteNodeID; - private int remoteInterfaceID; - - /** - * Constructor to initialize parameter for PCEP fec object. - * - * @param fecObjHeader fec object header - * @param localNodeID local node ID - * @param localInterfaceID local interface ID - * @param remoteNodeID remote node ID - * @param remoteInterfaceID remote interface ID - */ - public PcepFecObjectIPv4UnnumberedAdjacencyVer1(PcepObjectHeader fecObjHeader, int localNodeID, - int localInterfaceID, int remoteNodeID, int remoteInterfaceID) { - this.fecObjHeader = fecObjHeader; - this.localNodeID = localNodeID; - this.localInterfaceID = localInterfaceID; - this.remoteNodeID = remoteNodeID; - this.remoteInterfaceID = remoteInterfaceID; - } - - /** - * Sets Object Header. - * - * @param obj object header - */ - public void setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public void setLocalNodeID(int localNodeID) { - this.localNodeID = localNodeID; - } - - /** - * Returns Object Header. - * - * @return fecObjHeader fec object header - */ - public PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public int getLocalNodeID() { - return this.localNodeID; - } - - @Override - public int getLocalInterfaceID() { - return this.localInterfaceID; - } - - @Override - public void setLocalInterfaceID(int localInterfaceID) { - this.localInterfaceID = localInterfaceID; - } - - @Override - public int getRemoteNodeID() { - return this.remoteNodeID; - } - - @Override - public void setRemoteNodeID(int remoteNodeID) { - this.remoteNodeID = remoteNodeID; - } - - @Override - public int getRemoteInterfaceID() { - return this.remoteInterfaceID; - } - - @Override - public void setRemoteInterfaceID(int remoteInterfaceID) { - this.remoteInterfaceID = remoteInterfaceID; - } - - /** - * Reads from channel buffer and returns object of PcepFecObjectIPv4UnnumberedAdjacency. - * - * @param cb of channel buffer - * @return object of PcepFecObjectIPv4UnnumberedAdjacency - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv4UnnumberedAdjacency read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - int localNodeID; - int localInterfaceID; - int remoteNodeID; - int remoteInterfaceID; - - fecObjHeader = PcepObjectHeader.read(cb); - - //take only FEC IPv4 Unnumbered Adjacency Object buffer. - ChannelBuffer tempCb = cb.readBytes(fecObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH); - localNodeID = tempCb.readInt(); - localInterfaceID = tempCb.readInt(); - remoteNodeID = tempCb.readInt(); - remoteInterfaceID = tempCb.readInt(); - - return new PcepFecObjectIPv4UnnumberedAdjacencyVer1(fecObjHeader, localNodeID, localInterfaceID, remoteNodeID, - remoteInterfaceID); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //Write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeInt(localNodeID); - cb.writeInt(localInterfaceID); - cb.writeInt(remoteNodeID); - cb.writeInt(remoteInterfaceID); - - //Now write FEC IPv4 Unnumbered Adjacency Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - - return cb.writerIndex(); - } - - /** - * Builder class for PCEP Fec object IPv4 unnumbered Adjacency. - */ - public static class Builder implements PcepFecObjectIPv4UnnumberedAdjacency.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLocalNodeIDset = false; - private boolean bIsLocalInterfaceIDset = false; - private boolean bIsRemoteNodeIDset = false; - private boolean bIsRemoteInterfaceIDset = false; - - private PcepObjectHeader fecObjHeader; - private int localNodeID; - private int localInterfaceID; - private int remoteNodeID; - private int remoteInterfaceID; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv4UnnumberedAdjacency build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsLocalNodeIDset) { - throw new PcepParseException( - " Local Node ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (!this.bIsLocalInterfaceIDset) { - throw new PcepParseException( - " Local Interface ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (!this.bIsRemoteNodeIDset) { - throw new PcepParseException( - " Remote Node ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (!this.bIsRemoteInterfaceIDset) { - throw new PcepParseException( - " Remote Interface ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv4UnnumberedAdjacencyVer1(fecObjHeader, this.localNodeID, this.localInterfaceID, - this.remoteNodeID, this.remoteInterfaceID); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getLocalNodeID() { - return this.localNodeID; - } - - @Override - public Builder setLocalNodeID(int value) { - this.localNodeID = value; - this.bIsLocalNodeIDset = true; - return this; - } - - @Override - public int getLocalInterfaceID() { - return this.localInterfaceID; - } - - @Override - public Builder setLocalInterfaceID(int value) { - this.localInterfaceID = value; - this.bIsLocalInterfaceIDset = true; - return this; - } - - @Override - public int getRemoteNodeID() { - return this.remoteNodeID; - } - - @Override - public Builder setRemoteNodeID(int value) { - this.remoteNodeID = value; - this.bIsRemoteNodeIDset = true; - return this; - } - - @Override - public int getRemoteInterfaceID() { - return this.remoteInterfaceID; - } - - @Override - public Builder setRemoteInterfaceID(int value) { - this.remoteInterfaceID = value; - this.bIsRemoteInterfaceIDset = true; - return this; - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("LocalNodeID: ", localNodeID) - .add("LocalInterfaceID: ", localInterfaceID).add("RemoteNodeID: ", remoteNodeID) - .add("RemoteInterfaceID: ", remoteInterfaceID).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java deleted file mode 100644 index 354547a1..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv4 object. - */ -public class PcepFecObjectIPv4Ver1 implements PcepFecObjectIPv4 { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 Node ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 1 IPv4 Node ID - */ - protected static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4Ver1.class); - - public static final byte FEC_OBJ_TYPE = 1; - public static final byte FEC_OBJ_CLASS = 63; //to be defined - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 8; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private int nodeID; - - /** - * Constructor to initialize parameters for PCEP fec object. - * - * @param fecObjHeader fec object header - * @param nodeID node id - */ - public PcepFecObjectIPv4Ver1(PcepObjectHeader fecObjHeader, int nodeID) { - this.fecObjHeader = fecObjHeader; - this.nodeID = nodeID; - } - - /** - * Sets the Object Header. - * - * @param obj object header - */ - public void setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public void setNodeID(int nodeID) { - this.nodeID = nodeID; - } - - /** - * Returns Object Header. - * - * @return fecObjHeader fec object header - */ - public PcepObjectHeader getFecIpv4ObjHeader() { - return this.fecObjHeader; - } - - @Override - public int getNodeID() { - return this.nodeID; - } - - /** - * Reads from channel buffer and returns object of PcepFecObjectIPv4. - * - * @param cb of channel buffer - * @return object of PcepFecObjectIPv4 - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv4 read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - int nodeID; - fecObjHeader = PcepObjectHeader.read(cb); - nodeID = cb.readInt(); - return new PcepFecObjectIPv4Ver1(fecObjHeader, nodeID); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeInt(nodeID); - - //now write FEC IPv4 Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec pobject IPv4. - */ - public static class Builder implements PcepFecObjectIPv4.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsNodeIdset = false; - - private PcepObjectHeader fecObjHeader; - private int nodeID; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv4 build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsNodeIdset) { - throw new PcepParseException("NodeID not set while building PcepFecObjectIPv4 object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv4Ver1(fecObjHeader, this.nodeID); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv4ObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getNodeID() { - return this.nodeID; - } - - @Override - public Builder setNodeID(int value) { - this.nodeID = value; - this.bIsNodeIdset = true; - return this; - } - - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("fecObjHeader", fecObjHeader) - .add("nodeID: ", nodeID) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java deleted file mode 100644 index f8ea7869..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv6Adjacency; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv6 Adjacency object. - */ -public class PcepFecObjectIPv6AdjacencyVer1 implements PcepFecObjectIPv6Adjacency { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Local IPv6 address (16 bytes) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Remote IPv6 address (16 bytes) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 4 IPv6 Adjacency - */ - protected static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv6AdjacencyVer1.class); - - public static final byte FEC_OBJ_TYPE = 4; - public static final byte FEC_OBJ_CLASS = 63; //to be defined - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 36; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final int IPV6_ADDRESS_LENGTH = 16; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - private byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - - /** - * Constructor to initialize parameters for PCEP fec object. - * - * @param fecObjHeader fec object header - * @param localIPv6Address local IPv6 address - * @param remoteIPv6Address remote IPv6 address - */ - public PcepFecObjectIPv6AdjacencyVer1(PcepObjectHeader fecObjHeader, byte[] localIPv6Address, - byte[] remoteIPv6Address) { - this.fecObjHeader = fecObjHeader; - this.localIPv6Address = localIPv6Address; - this.remoteIPv6Address = remoteIPv6Address; - } - - /** - * Sets Object Header. - * - * @param obj object header - */ - public void setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public byte[] getLocalIPv6Address() { - return this.localIPv6Address; - } - - @Override - public void seLocalIPv6Address(byte[] value) { - this.localIPv6Address = value; - } - - @Override - public byte[] getRemoteIPv6Address() { - return this.remoteIPv6Address; - } - - @Override - public void seRemoteIPv6Address(byte[] value) { - this.remoteIPv6Address = value; - } - - /** - * Reads channel buffer and Returns object of PcepFecObjectIPv6Adjacency. - * - * @param cb of channel buffer - * @return object of PcepFecObjectIPv6Adjacency - * @throws PcepParseException when fails tp read from channel buffer - */ - public static PcepFecObjectIPv6Adjacency read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - fecObjHeader = PcepObjectHeader.read(cb); - cb.readBytes(localIPv6Address, 0, IPV6_ADDRESS_LENGTH); - cb.readBytes(remoteIPv6Address, 0, IPV6_ADDRESS_LENGTH); - return new PcepFecObjectIPv6AdjacencyVer1(fecObjHeader, localIPv6Address, remoteIPv6Address); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeBytes(localIPv6Address); - cb.writeBytes(remoteIPv6Address); - //now write FEC IPv6 Adjacency Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec object IPv6 Adjacency. - */ - public static class Builder implements PcepFecObjectIPv6Adjacency.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLocalIPv6Addressset = false; - private boolean bIsRemoteIPv6Addressset = false; - - private PcepObjectHeader fecObjHeader; - byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv6Adjacency build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsLocalIPv6Addressset) { - throw new PcepParseException( - "Local IPv6 Address not set while building PcepFecObjectIPv6Adjacency object."); - } - if (!this.bIsRemoteIPv6Addressset) { - throw new PcepParseException( - "Remote IPv6 Address not set while building PcepFecObjectIPv6Adjacency object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv6AdjacencyVer1(fecObjHeader, this.localIPv6Address, this.remoteIPv6Address); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv6AdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv6AdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte[] getLocalIPv6Address() { - return this.localIPv6Address; - } - - @Override - public Builder setLocalIPv6Address(byte[] value) { - this.localIPv6Address = value; - this.bIsLocalIPv6Addressset = true; - return this; - } - - @Override - public byte[] getRemoteIPv6Address() { - return this.remoteIPv6Address; - } - - @Override - public Builder setRemoteIPv6Address(byte[] value) { - this.remoteIPv6Address = value; - this.bIsRemoteIPv6Addressset = true; - return this; - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localIPv6Address", localIPv6Address) - .add("remoteIPv6Address: ", remoteIPv6Address) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java deleted file mode 100644 index 240a96f7..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv6; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv6 object. - */ -public class PcepFecObjectIPv6Ver1 implements PcepFecObjectIPv6 { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // IPv6 Node ID (16 bytes) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 2 IPv6 Node ID - */ - protected static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv6Ver1.class); - - public static final byte FEC_OBJ_TYPE = 2; - public static final byte FEC_OBJ_CLASS = 63; //to be defined - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 20; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final int IPV6_ADDRESS_LENGTH = 16; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH]; - - /** - * Constructor to initialize parameters for PCEP fec object. - * - * @param fecObjHeader Fec object header - * @param nodeID node ID - */ - public PcepFecObjectIPv6Ver1(PcepObjectHeader fecObjHeader, byte[] nodeID) { - this.fecObjHeader = fecObjHeader; - this.nodeID = nodeID; - } - - /** - * Sets the Object header. - * - * @param obj object header - */ - public void setFecIpv6ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public void setNodeID(byte[] nodeID) { - this.nodeID = nodeID; - } - - /** - * Returns object header. - * - * @return fec Object Header - */ - public PcepObjectHeader getFecIpv6ObjHeader() { - return this.fecObjHeader; - } - - @Override - public byte[] getNodeID() { - return this.nodeID; - } - - /** - * reads the channel buffer and returns object of PcepFecObjectIPv6. - * - * @param cb of channel buffer. - * @return object of PcepFecObjectIPv6 - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv6 read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH]; - fecObjHeader = PcepObjectHeader.read(cb); - cb.readBytes(nodeID, 0, IPV6_ADDRESS_LENGTH); - return new PcepFecObjectIPv6Ver1(fecObjHeader, nodeID); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeBytes(nodeID); - - //now write FEC IPv4 Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec object IPv6. - */ - public static class Builder implements PcepFecObjectIPv6.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsNodeIdset = false; - - private PcepObjectHeader fecObjHeader; - private byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH]; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv6 build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsNodeIdset) { - throw new PcepParseException(" NodeID not set while building PcepFecObjectIPv6 object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv6Ver1(fecObjHeader, this.nodeID); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv6ObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv6ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte[] getNodeID() { - return this.nodeID; - } - - @Override - public Builder setNodeID(byte[] value) { - this.nodeID = value; - this.bIsNodeIdset = true; - return this; - } - - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("fecObjHeader", fecObjHeader) - .add("NodeID: ", nodeID) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java deleted file mode 100644 index 60d14b07..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java +++ /dev/null @@ -1,332 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcInitiatedLspRequest; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepInitiateMsg; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP initiate message. - */ -class PcepInitiateMsgVer1 implements PcepInitiateMsg { - - protected static final Logger log = LoggerFactory.getLogger(PcepInitiateMsgVer1.class); - - // Ref : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03, section 5.1 - /* <PCInitiate Message> ::= <Common Header> - * <PCE-initiated-lsp-list> - * Where: - * <PCE-initiated-lsp-list> ::= <PCE-initiated-lsp-request>[<PCE-initiated-lsp-list>] - * <PCE-initiated-lsp-request> ::= (<PCE-initiated-lsp-instantiation>|<PCE-initiated-lsp-deletion>) - * <PCE-initiated-lsp-instantiation> ::= <SRP> - * <LSP> - * <END-POINTS> - * <ERO> - * [<attribute-list>] - * <PCE-initiated-lsp-deletion> ::= <SRP> - * <LSP> - */ - - static final byte PACKET_VERSION = 1; - /* considering LspDelete Request PcInitiate msg will contain - * common header - * srp object - * lsp object - * so min length for this can be - * PACKET_MINIMUM_LENGTH = CommonHeaderLen(4)+SrpObjectMinLen(12)+LspObjectMinLen(8) - */ - public static final short PACKET_MINIMUM_LENGTH = 24; - public static final short MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final PcepType MSG_TYPE = PcepType.INITIATE; - private LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList; - public static final PcepInitiateMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading of Pcep initiate message from channel buffer. - */ - static class Reader implements PcepMessageReader<PcepInitiateMsg> { - - LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList; - - @Override - public PcepInitiateMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - return null; - } - - llPcInitiatedLspRequestList = new LinkedList<>(); - - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), received=" + version); - } - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.INITIATE(12), recived=" + type); - } - short length = cb.readShort(); - - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Initiate message length expected to be >= " - + PACKET_MINIMUM_LENGTH + ", but received=" + length); - } - - log.debug("reading PcInitiate message of length " + length); - - // parse Start initiate/deletion list - if (!parsePcInitiatedLspRequestList(cb)) { - throw new PcepParseException("Parsing PCE-initiated-lsp-Request-list failed"); - } - - return new PcepInitiateMsgVer1(llPcInitiatedLspRequestList); - } - - /** - * To parse PcInitiatedLspRequestList from PcInitiate Message. - * - * @param cb of type channel buffer - * @return true if parsing PcInitiatedLspRequestList is success, false otherwise - * @throws PcepParseException while parsing from channel buffer - */ - public boolean parsePcInitiatedLspRequestList(ChannelBuffer cb) throws PcepParseException { - - boolean isDelLspRequest = false; - - if (cb == null) { - throw new PcepParseException("Channel buffer is empty"); - } - - while (0 < cb.readableBytes()) { - PcInitiatedLspRequest pceInitLspReq = new PcInitiatedLspRequestVer1(); - - //store SRP object - PcepSrpObject srpObj; - srpObj = PcepSrpObjectVer1.read(cb); - pceInitLspReq.setSrpObject(srpObj); - isDelLspRequest = srpObj.getRFlag(); - - //store LSP object - PcepLspObject lspObj; - lspObj = PcepLspObjectVer1.read(cb); - pceInitLspReq.setLspObject(lspObj); - - /* if R bit will be set then pcInitiate msg will contain only LSp and SRP objects - * so if R bit is not set then we should read for Ero and EndPoint objects also. - */ - if (!isDelLspRequest) { - - //store EndPoint object - PcepEndPointsObject endPointObj; - endPointObj = PcepEndPointsObjectVer1.read(cb); - pceInitLspReq.setEndPointsObject(endPointObj); - - //store ERO object - PcepEroObject eroObj; - eroObj = PcepEroObjectVer1.read(cb); - pceInitLspReq.setEroObject(eroObj); - - if (cb.readableBytes() > MINIMUM_COMMON_HEADER_LENGTH) { - pceInitLspReq.setPcepAttribute(PcepAttributeVer1.read(cb)); - } - } - llPcInitiatedLspRequestList.add(pceInitLspReq); - } - return true; - } - } - - /** - * Constructor to initialize PcInitiatedLspRequest. - * - * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequest - */ - PcepInitiateMsgVer1(LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList) { - - if (llPcInitiatedLspRequestList == null) { - throw new NullPointerException("PcInitiatedLspRequestList cannot be null."); - } - this.llPcInitiatedLspRequestList = llPcInitiatedLspRequestList; - } - - /** - * Builder class for PCEP initiate message. - */ - static class Builder implements PcepInitiateMsg.Builder { - - // Pcep initiate message fields - LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.INITIATE; - } - - @Override - public PcepInitiateMsg build() { - return new PcepInitiateMsgVer1(this.llPcInitiatedLspRequestList); - } - - @Override - public LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList() { - return this.llPcInitiatedLspRequestList; - } - - @Override - public Builder setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> ll) { - this.llPcInitiatedLspRequestList = ll; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing pcep initiate message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepInitiateMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepInitiateMsgVer1 message) throws PcepParseException { - - boolean isDelLspRequest = false; - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type 0xC - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort(0); - - ListIterator<PcInitiatedLspRequest> listIterator = message.llPcInitiatedLspRequestList.listIterator(); - - while (listIterator.hasNext()) { - - PcInitiatedLspRequest listReq = listIterator.next(); - - //Srp Object is mandatory - PcepSrpObject srpObj = listReq.getSrpObject(); - if (srpObj != null) { - isDelLspRequest = srpObj.getRFlag(); - srpObj.write(cb); - } else { - throw new PcepParseException("SRP Object is mandatory for PcInitiate message."); - } - - //LSP Object is mandatory - PcepLspObject lspObj = listReq.getLspObject(); - if (lspObj != null) { - lspObj.write(cb); - } else { - throw new PcepParseException("LSP Object is mandatory for PcInitiate message."); - } - - /* if R bit will be set then pcInitiate msg will contain only LSp and SRP objects - * so if R bit is not set then we should read for Ero and EndPoint objects also. - */ - - if (!isDelLspRequest) { - - //EndPoints object is mandatory - PcepEndPointsObject endPointObj = listReq.getEndPointsObject(); - if (endPointObj != null) { - endPointObj.write(cb); - } else { - throw new PcepParseException("End points Object is mandatory for PcInitiate message."); - } - - //Ero object is mandatory - PcepEroObject eroObj = listReq.getEroObject(); - if (eroObj != null) { - eroObj.write(cb); - } else { - throw new PcepParseException("ERO Object is mandatory for PcInitiate message."); - } - - //PcepAttribute is optional - PcepAttribute pcepAttribute = listReq.getPcepAttribute(); - if (pcepAttribute != null) { - pcepAttribute.write(cb); - } - } - } - - // PCInitiate message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public LinkedList<PcInitiatedLspRequest> getPcInitiatedLspRequestList() { - return this.llPcInitiatedLspRequestList; - } - - @Override - public void setPcInitiatedLspRequestList(LinkedList<PcInitiatedLspRequest> ll) { - this.llPcInitiatedLspRequestList = ll; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("PcInitiaitedLspRequestList", llPcInitiatedLspRequestList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java deleted file mode 100644 index 5130d9e9..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java +++ /dev/null @@ -1,263 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepInterLayerObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP inter layer object. - */ -public class PcepInterLayerObjectVer1 implements PcepInterLayerObject { - - /* - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved |N|I| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(PcepInterLayerObjectVer1.class); - - public static final byte INTER_LAYER_OBJ_TYPE = 1; - public static final byte INTER_LAYER_OBJ_CLASS = 18; - public static final byte INTER_LAYER_OBJECT_VERSION = 1; - public static final short INTER_LAYER_OBJ_MINIMUM_LENGTH = 8; - public static final boolean DEFAULT_IFLAG = false; - public static final boolean DEFAULT_NFLAG = false; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int NFLAG_SHIFT_VALUE = 0x02; - public static final int IFLAG_SHIFT_VALUE = 0x01; - - static final PcepObjectHeader DEFAULT_INTER_LAYER_OBJECT_HEADER = new PcepObjectHeader(INTER_LAYER_OBJ_CLASS, - INTER_LAYER_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - INTER_LAYER_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader interLayerObjHeader; - private boolean bNFlag; - private boolean bIFlag; - - /** - * Constructor to initialize all parameters for Pcep Inter Layer Object. - * - * @param interLayerObjHeader inter layer object header - * @param bNFlag N flag - * @param bIFlag I flag - */ - public PcepInterLayerObjectVer1(PcepObjectHeader interLayerObjHeader, boolean bNFlag, boolean bIFlag) { - - this.interLayerObjHeader = interLayerObjHeader; - this.bNFlag = bNFlag; - this.bIFlag = bIFlag; - } - - /** - * Sets Object Header. - * - * @param obj object header - */ - public void setInterLayerObjHeader(PcepObjectHeader obj) { - this.interLayerObjHeader = obj; - } - - @Override - public void setbNFlag(boolean bNFlag) { - this.bNFlag = bNFlag; - } - - @Override - public void setbIFlag(boolean bIFlag) { - this.bIFlag = bIFlag; - } - - /** - * Returns object header. - * - * @return inter Layer Object Header - */ - public PcepObjectHeader getInterLayerObjHeader() { - return this.interLayerObjHeader; - } - - @Override - public boolean getbNFlag() { - return this.bNFlag; - } - - @Override - public boolean getbIFlag() { - return this.bIFlag; - } - - /** - * Reads channel buffer and returns object of PcepInterLayerObject. - * - * @param cb of type channel buffer - * @return object of PcepInterLayerObject - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepInterLayerObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader interLayerObjHeader; - boolean bNFlag; - boolean bIFlag; - - interLayerObjHeader = PcepObjectHeader.read(cb); - - //take only InterLayerObject buffer. - ChannelBuffer tempCb = cb.readBytes(interLayerObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - int iTemp = tempCb.readInt(); - bIFlag = ((iTemp & (byte) IFLAG_SHIFT_VALUE) == IFLAG_SHIFT_VALUE); - bNFlag = ((iTemp & (byte) NFLAG_SHIFT_VALUE) == NFLAG_SHIFT_VALUE); - - return new PcepInterLayerObjectVer1(interLayerObjHeader, bNFlag, bIFlag); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = interLayerObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException(" ObjectLength Index is " + objLenIndex); - } - - int iTemp = 0; - - if (bIFlag) { - iTemp = iTemp | (byte) IFLAG_SHIFT_VALUE; - } - if (bNFlag) { - iTemp = iTemp | (byte) NFLAG_SHIFT_VALUE; - } - - cb.writeInt(iTemp); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - //will be helpful during print(). - interLayerObjHeader.setObjLen((short) length); - cb.setShort(objLenIndex, (short) length); - - objLenIndex = cb.writerIndex(); - return objLenIndex; - } - - /** - * Builder class for PCEP inter layer object. - */ - public static class Builder implements PcepInterLayerObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsNFlagset = false; - private boolean bIsIFlagset = false; - - private PcepObjectHeader interLayerObjHeader; - private boolean bNFlag; - private boolean bIFlag; - - private boolean bIsPFlagSet = false; - private boolean bPFalg; - - private boolean bIsIFlagSet = false; - private boolean iFlag; - - @Override - public PcepInterLayerObject build() { - PcepObjectHeader interLayerObjHeader = this.bIsHeaderSet ? this.interLayerObjHeader - : DEFAULT_INTER_LAYER_OBJECT_HEADER; - - boolean bNFlag = this.bIsNFlagset ? this.bNFlag : DEFAULT_NFLAG; - boolean bIFlag = this.bIsIFlagset ? this.bIFlag : DEFAULT_IFLAG; - - if (bIsPFlagSet) { - interLayerObjHeader.setPFlag(bPFalg); - } - - if (bIsIFlagSet) { - interLayerObjHeader.setIFlag(iFlag); - } - return new PcepInterLayerObjectVer1(interLayerObjHeader, bNFlag, bIFlag); - } - - @Override - public PcepObjectHeader getInterLayerObjHeader() { - return this.interLayerObjHeader; - } - - @Override - public Builder setInterLayerObjHeader(PcepObjectHeader obj) { - this.interLayerObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public boolean getbNFlag() { - return this.bNFlag; - } - - @Override - public Builder setbNFlag(boolean value) { - this.bNFlag = value; - this.bIsNFlagset = true; - return this; - } - - @Override - public boolean getbIFlag() { - return this.bIFlag; - } - - @Override - public Builder setbIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagset = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFalg = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.iFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IFlag", bIFlag) - .add("NFlag", bNFlag).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java deleted file mode 100644 index 2e01bdaa..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepIroObject; -import org.onosproject.pcepio.types.IPv4SubObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP iro object. - */ -public class PcepIroObjectVer1 implements PcepIroObject { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // (Sub-objects) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - The IRO Object format - - Each IPV4 suboject - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | IPv4 address (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 address (continued) | Prefix Length | Resvd | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(PcepIroObjectVer1.class); - - public static final byte IRO_OBJ_TYPE = 1; - public static final byte IRO_OBJ_CLASS = 10; - public static final byte IRO_OBJECT_VERSION = 1; - public static final short IRO_OBJ_MINIMUM_LENGTH = 12; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int YTYPE_SHIFT_VALUE = 0x7F; - - public static final PcepObjectHeader DEFAULT_IRO_OBJECT_HEADER = new PcepObjectHeader(IRO_OBJ_CLASS, IRO_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, IRO_OBJ_MINIMUM_LENGTH); - - private short iroObjType = 0; - private byte yLength; - private byte yPrefixLength; - private byte yResvd; - private PcepObjectHeader iroObjHeader; - private LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - /** - * Default constructor. - */ - public PcepIroObjectVer1() { - this.iroObjHeader = null; - this.iroObjType = 0; - this.yLength = 0; - } - - /** - * Constructor to initialize member variables. - * - * @param iroObjHeader IRO object header - * @param llSubObjects list of sub-objects - */ - public PcepIroObjectVer1(PcepObjectHeader iroObjHeader, LinkedList<PcepValueType> llSubObjects) { - this.iroObjHeader = iroObjHeader; - this.llSubObjects = llSubObjects; - } - - /** - * Returns object header. - * - * @return iroObjHeader IRO object header - */ - public PcepObjectHeader getIroObjHeader() { - return this.iroObjHeader; - } - - /** - * Sets IRO Object Header. - * - * @param obj IRO object header - */ - public void setIroObjHeader(PcepObjectHeader obj) { - this.iroObjHeader = obj; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public void setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - } - - /** - * Reads from channel buffer and return object of PcepIroObject. - * - * @param cb of type channel buffer - * @return object of PcepIroObject - * @throws PcepParseException while parsing from channel buffer - */ - public static PcepIroObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader iroObjHeader; - LinkedList<PcepValueType> llSubObjects; - - iroObjHeader = PcepObjectHeader.read(cb); - - //take only IroObject buffer. - ChannelBuffer tempCb = cb.readBytes(iroObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - llSubObjects = parseSubObjects(tempCb); - return new PcepIroObjectVer1(iroObjHeader, llSubObjects); - } - - /** - * Returns linked list of sub objects. - * - * @param cb of type channel buffer - * @return linked list of sub objects - * @throws PcepParseException while parsing subobjects from channel buffer - */ - protected static LinkedList<PcepValueType> parseSubObjects(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - while (0 < cb.readableBytes()) { - - //check the Type of the Subobjects. - byte yType = cb.readByte(); - yType = (byte) (yType & (YTYPE_SHIFT_VALUE)); - byte hLength = cb.readByte(); - - PcepValueType subObj; - switch (yType) { - - case IPv4SubObject.TYPE: - subObj = IPv4SubObject.read(cb); - break; - - default: - throw new PcepParseException("Invalid sub object. Type: " + (int) yType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - llSubObjects.add(subObj); - } - return llSubObjects; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = iroObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException(" ObjectLength is " + objLenIndex); - } - - ListIterator<PcepValueType> listIterator = llSubObjects.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - //will be helpful during print(). - iroObjHeader.setObjLen((short) length); - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - cb.setShort(objLenIndex, (short) length); - objLenIndex = cb.writerIndex(); - return objLenIndex; - } - - /** - * Builder class for PCEP iro object. - */ - public static class Builder implements PcepIroObject.Builder { - - private boolean bIsHeaderSet = false; - - private PcepObjectHeader iroObjHeader; - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepIroObject build() { - - PcepObjectHeader iroObjHeader = this.bIsHeaderSet ? this.iroObjHeader : DEFAULT_IRO_OBJECT_HEADER; - - if (bIsPFlagSet) { - iroObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - iroObjHeader.setIFlag(bIFlag); - } - - return new PcepIroObjectVer1(iroObjHeader, this.llSubObjects); - } - - @Override - public PcepObjectHeader getIroObjHeader() { - return this.iroObjHeader; - } - - @Override - public Builder setIroObjHeader(PcepObjectHeader obj) { - this.iroObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public Builder setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IroObjectHeader", iroObjHeader) - .add("SubObjects", llSubObjects).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java deleted file mode 100644 index 8b6e9382..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepKeepaliveMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP keep alive message. - */ -class PcepKeepaliveMsgVer1 implements PcepKeepaliveMsg { - - /* - <Keepalive Message>::= <Common Header> - - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Ver | Flags | Message-Type | Message-Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepKeepaliveMsgVer1.class); - // Pcep version: 1 - public static final byte PACKET_VERSION = 1; - public static final int PACKET_MINIMUM_LENGTH = 4; - public static final PcepType MSG_TYPE = PcepType.KEEP_ALIVE; - - public static final PcepKeepaliveMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading PCEP keepalive message from channel buffer. - */ - static class Reader implements PcepMessageReader<PcepKeepaliveMsg> { - - @Override - public PcepKeepaliveMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Packet size is less than the minimum required length."); - } - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version: Expected=PcepVersion.KEEP_ALIVE_1(2), got=" + version); - } - // fixed value property type == 2 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type: Expected=PcepType.KEEP_ALIVE_1(2), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length: Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " - + length); - } - return new PcepKeepaliveMsgVer1(); - } - } - - /** - * Default constructor. - */ - PcepKeepaliveMsgVer1() { - } - - /** - * Builder class for PCEP keepalive message. - */ - static class Builder implements PcepKeepaliveMsg.Builder { - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.KEEP_ALIVE; - } - - @Override - public PcepKeepaliveMsg build() { - return new PcepKeepaliveMsgVer1(); - } - } - - @Override - public void writeTo(ChannelBuffer cb) { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing the PCEP keepalive message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepKeepaliveMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepKeepaliveMsgVer1 message) { - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort((short) 0); - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java deleted file mode 100644 index a4ac87c3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java +++ /dev/null @@ -1,370 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLabelObject; -import org.onosproject.pcepio.types.NexthopIPv4addressTlv; -import org.onosproject.pcepio.types.NexthopIPv6addressTlv; -import org.onosproject.pcepio.types.NexthopUnnumberedIPv4IDTlv; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP label object. - */ -public class PcepLabelObjectVer1 implements PcepLabelObject { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.4. - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | Flags |O| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Label | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLV // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - The LABEL Object format - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLspObjectVer1.class); - - public static final byte LABEL_OBJ_TYPE = 1; - public static final byte LABEL_OBJ_CLASS = 35; //TBD : to be defined - public static final byte LABEL_OBJECT_VERSION = 1; - public static final byte OBJECT_HEADER_LENGTH = 4; - public static final boolean DEFAULT_OFLAG = false; - - // LSP_OBJ_MINIMUM_LENGTH = CommonHeaderLen(4)+ LspObjectHeaderLen(8) - public static final short LABEL_OBJ_MINIMUM_LENGTH = 12; - - public static final int OFLAG_SET = 1; - public static final int OFLAG_RESET = 0; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_LABEL_OBJECT_HEADER = new PcepObjectHeader(LABEL_OBJ_CLASS, LABEL_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, LABEL_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader labelObjHeader; - private boolean bOFlag; - private int label; - // Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Constructor to initialize parameters for PCEP label object. - * - * @param labelObjHeader label object header - * @param bOFlag O flag - * @param label label - * @param llOptionalTlv list of optional tlvs - */ - public PcepLabelObjectVer1(PcepObjectHeader labelObjHeader, boolean bOFlag, int label, - LinkedList<PcepValueType> llOptionalTlv) { - this.labelObjHeader = labelObjHeader; - this.bOFlag = bOFlag; - this.label = label; - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public boolean getOFlag() { - return this.bOFlag; - } - - @Override - public void setOFlag(boolean value) { - this.bOFlag = value; - } - - @Override - public int getLabel() { - return this.label; - } - - @Override - public void setLabel(int value) { - this.label = value; - } - - /** - * Reads form channel buffer and returns objects of PcepLabelObject. - * - * @param cb of type channel buffer - * @return objects of PcepLabelObject - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepLabelObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader labelObjHeader; - - boolean bOFlag; - int label; - - // Optional TLV - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - labelObjHeader = PcepObjectHeader.read(cb); - - //take only LspObject buffer. - ChannelBuffer tempCb = cb.readBytes(labelObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - int iTemp = tempCb.readInt(); - bOFlag = (iTemp & (byte) 0x01) == 1; - label = tempCb.readInt(); - - // parse optional TLV - llOptionalTlv = parseOptionalTlv(tempCb); - return new PcepLabelObjectVer1(labelObjHeader, bOFlag, label, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - int objLenIndex = labelObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException(" ObjectLength Index is " + objLenIndex); - } - - byte oFlag; - - oFlag = (byte) ((bOFlag) ? OFLAG_SET : OFLAG_RESET); - cb.writeInt(oFlag); - cb.writeInt(label); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - - //will be helpful during print(). - labelObjHeader.setObjLen((short) length); - cb.setShort(objLenIndex, (short) length); - return cb.writerIndex(); - } - - /** - * Returns list of optional tlvs. - * - * @param cb of type channel buffer - * @return list of optional tlvs. - * @throws PcepParseException when fails to parse list of optional tlvs - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - int iValue = 0; - - switch (hType) { - - case NexthopIPv4addressTlv.TYPE: - iValue = cb.readInt(); - tlv = new NexthopIPv4addressTlv(iValue); - break; - case NexthopIPv6addressTlv.TYPE: - byte[] ipv6Value = new byte[NexthopIPv6addressTlv.VALUE_LENGTH]; - cb.readBytes(ipv6Value, 0, NexthopIPv6addressTlv.VALUE_LENGTH); - tlv = new NexthopIPv6addressTlv(ipv6Value); - break; - case NexthopUnnumberedIPv4IDTlv.TYPE: - tlv = NexthopUnnumberedIPv4IDTlv.read(cb); - break; - default: - throw new PcepParseException("Unsupported TLV type :" + hType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - - llOutOptionalTlv.add(tlv); - } - - if (0 < cb.readableBytes()) { - - throw new PcepParseException("Optional Tlv parsing error. Extra bytes received."); - } - return llOutOptionalTlv; - } - - /** - * Returns the writer index. - * - * @param cb of channel buffer. - * @return writer index - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("tlv is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - } - return cb.writerIndex(); - } - - /** - * Builder class for PCEP label object. - */ - public static class Builder implements PcepLabelObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsOFlagSet = false; - private boolean bIsLabelSet = false; - - private PcepObjectHeader labelObjHeader; - private boolean bOFlag; - private int label; - - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepLabelObject build() throws PcepParseException { - PcepObjectHeader labelObjHeader = this.bIsHeaderSet ? this.labelObjHeader : DEFAULT_LABEL_OBJECT_HEADER; - boolean bOFlag = this.bIsOFlagSet ? this.bOFlag : DEFAULT_OFLAG; - - if (!this.bIsLabelSet) { - throw new PcepParseException(" Label NOT Set while building PcepLabelObject."); - } - if (bIsPFlagSet) { - labelObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - labelObjHeader.setIFlag(bIFlag); - } - return new PcepLabelObjectVer1(labelObjHeader, bOFlag, this.label, this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getLabelObjHeader() { - return this.labelObjHeader; - } - - @Override - public Builder setLabelObjHeader(PcepObjectHeader obj) { - this.labelObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public boolean getOFlag() { - return this.bOFlag; - } - - @Override - public Builder setOFlag(boolean value) { - this.bOFlag = value; - this.bIsOFlagSet = true; - return this; - } - - @Override - public int getLabel() { - return this.label; - } - - @Override - public Builder setLabel(int value) { - this.label = value; - this.bIsLabelSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("OFlag", bOFlag) - .add("label", label) - .add("OptionalTlvList", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java deleted file mode 100644 index 9e4be911..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java +++ /dev/null @@ -1,377 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLabelRangeObject; -import org.onosproject.pcepio.types.PathSetupTypeTlv; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP label range object. - */ -public class PcepLabelRangeObjectVer1 implements PcepLabelRangeObject { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01, section : 7.2 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | label type | range size | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | label base | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - LABEL-RANGE Object - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLabelRangeObjectVer1.class); - - public static final byte LABEL_RANGE_OBJ_TYPE = 1; - public static final byte LABEL_RANGE_OBJ_CLASS = 60; //to be defined - public static final byte LABEL_RANGE_OBJECT_VERSION = 1; - public static final short LABEL_RANGE_OBJ_MINIMUM_LENGTH = 12; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - //P flag and I flag must be set to 0 - static final PcepObjectHeader DEFAULT_LABELRANGE_OBJECT_HEADER = new PcepObjectHeader(LABEL_RANGE_OBJ_CLASS, - LABEL_RANGE_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - LABEL_RANGE_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader labelRangeObjHeader; - private byte labelType; - private int rangeSize; - private int labelBase; - //Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Constructor to initialize parameters for PCEP label range object. - * - * @param labelRangeObjHeader label range object header - * @param labelType label type - * @param rangeSize range size - * @param labelBase label base - * @param llOptionalTlv list of optional tlvs - */ - public PcepLabelRangeObjectVer1(PcepObjectHeader labelRangeObjHeader, byte labelType, int rangeSize, int labelBase, - LinkedList<PcepValueType> llOptionalTlv) { - this.labelRangeObjHeader = labelRangeObjHeader; - this.labelType = labelType; - this.rangeSize = rangeSize; - this.llOptionalTlv = llOptionalTlv; - this.labelBase = labelBase; - } - - @Override - public void setLabelRangeObjHeader(PcepObjectHeader obj) { - this.labelRangeObjHeader = obj; - } - - @Override - public void setLabelType(byte labelType) { - this.labelType = labelType; - } - - @Override - public void setRangeSize(int rangeSize) { - this.rangeSize = rangeSize; - } - - @Override - public void setLabelBase(int labelBase) { - this.labelBase = labelBase; - } - - @Override - public PcepObjectHeader getLabelRangeObjHeader() { - return this.labelRangeObjHeader; - } - - @Override - public byte getLabelType() { - return this.labelType; - } - - @Override - public int getRangeSize() { - return this.rangeSize; - } - - @Override - public int getLabelBase() { - return this.labelBase; - } - - /** - * Reads from the channel buffer and returns object of PcepLabelRangeObject. - * - * @param cb of type channel buffer - * @return object of PcepLabelRangeObject - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepLabelRangeObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader labelRangeObjHeader; - byte labelType; - int rangeSize; - int labelBase; - - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - labelRangeObjHeader = PcepObjectHeader.read(cb); - - //take only LabelRangeObject buffer. - ChannelBuffer tempCb = cb.readBytes(labelRangeObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH); - int temp = 0; - temp = tempCb.readInt(); - rangeSize = temp & 0x00FFFFFF; - labelType = (byte) (temp >> 24); - labelBase = tempCb.readInt(); - llOptionalTlv = parseOptionalTlv(tempCb); - return new PcepLabelRangeObjectVer1(labelRangeObjHeader, labelType, rangeSize, labelBase, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = labelRangeObjHeader.write(cb); - int temp = 0; - temp = labelType; - temp = temp << 24; - temp = temp | rangeSize; - cb.writeInt(temp); - - // Add optional TLV - if (!packOptionalTlv(cb)) { - throw new PcepParseException("Error while writing Optional tlv."); - } - - //now write LabelRange Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex() - objStartIndex; - } - - /** - * Returns list of optional tlvs. - * - * @param cb of type channle buffer - * @return list of optional tlvs - * @throws PcepParseException whne fails to parse list of optional tlvs - */ - public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - int iValue; - short hType = cb.readShort(); - short hLength = cb.readShort(); - - switch (hType) { - - case PathSetupTypeTlv.TYPE: - iValue = cb.readInt(); - tlv = new PathSetupTypeTlv(iValue); - break; - - default: - throw new PcepParseException("Unsupported TLV in LabelRange Object."); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - llOutOptionalTlv.add(tlv); - } - return llOutOptionalTlv; - } - - /** - * Pack optional tlvs. - * - * @param cb of channel buffer - * @return true - */ - protected boolean packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("tlv is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - return true; - } - - /** - * Builder class for PCEP label range object. - */ - public static class Builder implements PcepLabelRangeObject.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLabelType = false; - private boolean bIsRangeSize = false; - private boolean bIsLabelBase = false; - - byte labelType; - int rangeSize; - int labelBase; - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - private PcepObjectHeader labelRangeObjHeader; - - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - @Override - public PcepLabelRangeObject build() throws PcepParseException { - PcepObjectHeader labelRangeObjHeader = this.bIsHeaderSet ? this.labelRangeObjHeader - : DEFAULT_LABELRANGE_OBJECT_HEADER; - - if (!this.bIsLabelType) { - throw new PcepParseException("LabelType NOT Set while building label range object."); - } - - if (!this.bIsRangeSize) { - throw new PcepParseException("RangeSize NOT Set while building label range object."); - } - - if (!this.bIsLabelBase) { - throw new PcepParseException("LabelBase NOT Set while building label range object."); - } - - if (bIsPFlagSet) { - labelRangeObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - labelRangeObjHeader.setIFlag(bIFlag); - } - return new PcepLabelRangeObjectVer1(labelRangeObjHeader, this.labelType, this.rangeSize, this.labelBase, - this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getLabelRangeObjHeader() { - return this.labelRangeObjHeader; - } - - @Override - public Builder setLabelRangeObjHeader(PcepObjectHeader obj) { - this.labelRangeObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte getLabelType() { - return this.labelType; - } - - @Override - public Builder setLabelType(byte labelType) { - this.labelType = labelType; - this.bIsLabelType = true; - return this; - } - - @Override - public int getRangeSize() { - return this.rangeSize; - } - - @Override - public Builder setRangeSize(int rangeSize) { - this.rangeSize = rangeSize; - this.bIsRangeSize = true; - return this; - } - - @Override - public int getLabelBase() { - return this.labelBase; - } - - @Override - public Builder setLabelBase(int labelBase) { - this.labelBase = labelBase; - this.bIsLabelBase = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("LabelType", labelType) - .add("rangeSize", rangeSize) - .add("labelBase", labelBase) - .add("optionalTlvList", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java deleted file mode 100644 index 6f3648af..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLabelRange; -import org.onosproject.pcepio.protocol.PcepLabelRangeResvMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP label range reserve message. - */ -class PcepLabelRangeResvMsgVer1 implements PcepLabelRangeResvMsg { - - // Pcep version: 1 - - /* - The format of a PCLRResv message is as follows: - - PCLRResv Message>::= <Common Header> - <label-range> - Where: - - <label-range> ::= <SRP> - <labelrange-list> - - Where - <labelrange-list>::=<LABEL-RANGE>[<labelrange-list>] - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLabelRangeResvMsgVer1.class); - - public static final byte PACKET_VERSION = 1; - // LabelRangeResvMsgMinLength = COMMON-HEADER(4)+SrpObjMinLentgh(12)+LABEL-RANGE-MIN-LENGTH(12) - public static final int PACKET_MINIMUM_LENGTH = 28; - public static final PcepType MSG_TYPE = PcepType.LABEL_RANGE_RESERV; - //<label-range> - PcepLabelRange labelRange; - - public static final PcepLabelRangeResvMsgVer1.Reader READER = new Reader(); - - /** - * Reader reads LabelRangeResv Message from the channel. - */ - static class Reader implements PcepMessageReader<PcepLabelRangeResvMsg> { - - @Override - public PcepLabelRangeResvMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Channel buffer has less readable bytes than Packet minimum length."); - } - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 15 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.LABEL_RANGE_RESERV(15), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length.Expected to be >= " + PACKET_MINIMUM_LENGTH + ", is: " - + length); - } - // parse <label-range> - PcepLabelRange labelRange = PcepLabelRangeVer1.read(cb); - return new PcepLabelRangeResvMsgVer1(labelRange); - } - } - - /** - * Constructor to initialize PCEP label range. - * - * @param labelRange PCEP label range - */ - PcepLabelRangeResvMsgVer1(PcepLabelRange labelRange) { - this.labelRange = labelRange; - } - - /** - * Builder class for PCEP label range reserve message. - */ - static class Builder implements PcepLabelRangeResvMsg.Builder { - - PcepLabelRange labelRange = new PcepLabelRangeVer1(); - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.LABEL_RANGE_RESERV; - } - - @Override - public PcepLabelRangeResvMsg build() { - return new PcepLabelRangeResvMsgVer1(this.labelRange); - } - - @Override - public PcepLabelRange getLabelRange() { - return this.labelRange; - } - - @Override - public Builder setLabelRange(PcepLabelRange labelRange) { - this.labelRange = labelRange; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer writes LabelRangeResv Message to the channel. - */ - static class Writer implements PcepMessageWriter<PcepLabelRangeResvMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepLabelRangeResvMsgVer1 message) throws PcepParseException { - - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - // Length will be set after calculating length, but currently set it as 0. - int msgLenIndex = cb.writerIndex(); - - cb.writeShort((short) 0); - //write Label Range - message.labelRange.write(cb); - - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public PcepLabelRange getLabelRange() { - return this.labelRange; - } - - @Override - public void setLabelRange(PcepLabelRange lr) { - this.labelRange = lr; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("labelRange", labelRange) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java deleted file mode 100644 index 411c9604..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLabelRange; -import org.onosproject.pcepio.protocol.PcepLabelRangeObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Label Range. - */ -public class PcepLabelRangeVer1 implements PcepLabelRange { - - protected static final Logger log = LoggerFactory.getLogger(PcepLabelRangeVer1.class); - - /* - <label-range> ::= <SRP> - <labelrange-list> - Where - <labelrange-list>::=<LABEL-RANGE>[<labelrange-list>] - */ - - // PCEP SRP Object - private PcepSrpObject srpObject; - //<labelrange-list> of type PcepLabelRangeObject. - private LinkedList<PcepLabelRangeObject> llLabelRangeList; - - /** - * Default Constructor. - */ - public PcepLabelRangeVer1() { - srpObject = null; - llLabelRangeList = null; - } - - /** - * Constructor to initialize objects. - * - * @param srpObj PCEP Srp object. - * @param llLabelRangeList list of PcepLabelRangeObject. - */ - PcepLabelRangeVer1(PcepSrpObject srpObj, LinkedList<PcepLabelRangeObject> llLabelRangeList) { - this.srpObject = srpObj; - this.llLabelRangeList = llLabelRangeList; - } - - @Override - public PcepSrpObject getSrpObject() { - return srpObject; - } - - @Override - public void setSrpObject(PcepSrpObject srpObject) { - this.srpObject = srpObject; - - } - - @Override - public LinkedList<PcepLabelRangeObject> getLabelRangeList() { - return llLabelRangeList; - } - - @Override - public void setLabelRangeList(LinkedList<PcepLabelRangeObject> ll) { - this.llLabelRangeList = ll; - } - - /** - * Reads channel buffer and returns object of PcepLabelRange. - * - * @param cb of type channel buffer. - * @return object of PcepLabelRange - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepLabelRange read(ChannelBuffer cb) throws PcepParseException { - - //parse and store SRP mandatory object - PcepSrpObject srpObj = null; - srpObj = PcepSrpObjectVer1.read(cb); - if (srpObj == null) { - throw new PcepParseException("Exception while parsing srp object"); - } - - LinkedList<PcepLabelRangeObject> llLabelRangeList = new LinkedList<>(); - boolean bFoundLabelRangeObj = false; - while (0 < cb.readableBytes()) { - //parse and store <labelrange-list> - PcepLabelRangeObject lrObj; - lrObj = PcepLabelRangeObjectVer1.read(cb); - if (lrObj == null) { - throw new PcepParseException("Exception while parsing label range object"); - } else { - llLabelRangeList.add(lrObj); - bFoundLabelRangeObj = true; - } - } - - if (!bFoundLabelRangeObj) { - throw new PcepParseException("At least one LABEL-RANGE MUST be present."); - } - return new PcepLabelRangeVer1(srpObj, llLabelRangeList); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - //write Object header - int objStartIndex = cb.writerIndex(); - - //write <SRP> - int objLenIndex = srpObject.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("bjectLength is " + objLenIndex); - } - - //write <labelrange-list> - ListIterator<PcepLabelRangeObject> listIterator = llLabelRangeList.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - cb.setShort(objLenIndex, (short) length); - return length; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("srpObject", srpObject) - .add("LabelRangeList", llLabelRangeList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java deleted file mode 100644 index 89347f42..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLabelUpdate; -import org.onosproject.pcepio.protocol.PcepLabelUpdateMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP lable update message. - */ -class PcepLabelUpdateMsgVer1 implements PcepLabelUpdateMsg { - - // Pcep version: 1 - - /* - The format of the PCLabelUpd message: - - <PCLabelUpd Message> ::= <Common Header> - <pce-label-update-list> - Where: - - <pce-label-update-list> ::= <pce-label-update> - [<pce-label-update-list>] - <pce-label-update> ::= (<pce-label-download>|<pce-label-map>) - - Where: - <pce-label-download> ::= <SRP> - <LSP> - <label-list> - - <pce-label-map> ::= <SRP> - <LABEL> - <FEC> - - <label-list > ::= <LABEL> - [<label-list>] - - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLabelUpdateMsgVer1.class); - - public static final byte PACKET_VERSION = 1; - - //LabelUpdateMsgMinLength = COMMON-HEADER(4)+SrpObjMinLentgh(12)+LabelObjectMinLength(12)+FECType1Object(8) - public static final int PACKET_MINIMUM_LENGTH = 36; - public static final PcepType MSG_TYPE = PcepType.LABEL_UPDATE; - //pce-label-update-list - private LinkedList<PcepLabelUpdate> llPcLabelUpdateList; - - static final PcepLabelUpdateMsgVer1.Reader READER = new Reader(); - - /** - * Reader reads LabelUpdate Message from the channel. - */ - static class Reader implements PcepMessageReader<PcepLabelUpdateMsg> { - - @Override - public PcepLabelUpdateMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Readable bytes are less than Packet minimum length."); - } - - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version.Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 13 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.LABEL_UPDATE(13), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", is: " - + length); - } - // parse <pce-label-download> / <pce-label-map> - LinkedList<PcepLabelUpdate> llPcLabelUpdateList = parsePcLabelUpdateList(cb); - return new PcepLabelUpdateMsgVer1(llPcLabelUpdateList); - } - - /** - * Returns list of PCEP Label Update object. - * - * @param cb of type channel buffer - * @return llPcLabelUpdateList list of PCEP label update object - * @throws PcepParseException when fails to parse list of PCEP label update object - */ - public LinkedList<PcepLabelUpdate> parsePcLabelUpdateList(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepLabelUpdate> llPcLabelUpdateList; - llPcLabelUpdateList = new LinkedList<>(); - - while (0 < cb.readableBytes()) { - llPcLabelUpdateList.add(PcepLabelUpdateVer1.read(cb)); - } - return llPcLabelUpdateList; - } - } - - /** - * Constructor to initialize PCEP Label Update List. - * - * @param llPcLabelUpdateList list of PCEP Label Update object - */ - PcepLabelUpdateMsgVer1(LinkedList<PcepLabelUpdate> llPcLabelUpdateList) { - this.llPcLabelUpdateList = llPcLabelUpdateList; - } - - /** - * Builder class for PCEP label update message. - */ - static class Builder implements PcepLabelUpdateMsg.Builder { - - LinkedList<PcepLabelUpdate> llPcLabelUpdateList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.LABEL_UPDATE; - } - - @Override - public PcepLabelUpdateMsg build() { - return new PcepLabelUpdateMsgVer1(this.llPcLabelUpdateList); - } - - @Override - public LinkedList<PcepLabelUpdate> getPcLabelUpdateList() { - return this.llPcLabelUpdateList; - } - - @Override - public Builder setPcLabelUpdateList(LinkedList<PcepLabelUpdate> ll) { - this.llPcLabelUpdateList = ll; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer writes LabelUpdate Message to the channel. - */ - static class Writer implements PcepMessageWriter<PcepLabelUpdateMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepLabelUpdateMsgVer1 message) throws PcepParseException { - - int startIndex = cb.writerIndex(); - - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - - // message type - cb.writeByte(MSG_TYPE.getType()); - - // Length will be set after calculating length, but currently set it as 0. - int msgLenIndex = cb.writerIndex(); - - cb.writeShort((short) 0); - ListIterator<PcepLabelUpdate> listIterator = message.llPcLabelUpdateList.listIterator(); - - while (listIterator.hasNext()) { - PcepLabelUpdate labelUpdate = listIterator.next(); - labelUpdate.write(cb); - } - - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public LinkedList<PcepLabelUpdate> getPcLabelUpdateList() { - return this.llPcLabelUpdateList; - } - - @Override - public void setPcLabelUpdateList(LinkedList<PcepLabelUpdate> ll) { - this.llPcLabelUpdateList = ll; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("PcLabelUpdateList", llPcLabelUpdateList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateVer1.java deleted file mode 100644 index a2293d35..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateVer1.java +++ /dev/null @@ -1,356 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObject; -import org.onosproject.pcepio.protocol.PcepLabelObject; -import org.onosproject.pcepio.protocol.PcepLabelUpdate; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.types.PcepLabelDownload; -import org.onosproject.pcepio.types.PcepLabelMap; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP LABEL update . - * Reference :draft-zhao-pce-pcep-extension-for-pce-controller-01. - */ -public class PcepLabelUpdateVer1 implements PcepLabelUpdate { - - /* - * <pce-label-update> ::= (<pce-label-download>|<pce-label-map>) - - Where: - <pce-label-download> ::= <SRP> - <LSP> - <label-list> - - <pce-label-map> ::= <SRP> - <LABEL> - <FEC> - - <label-list > ::= <LABEL> - [<label-list>] - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLabelUpdateVer1.class); - - //Either PceLabelDownload or PceLabelMap is mandatory. - //label Download - private PcepLabelDownload labelDownload; - private boolean isLabelDownloadSet; - //label Map - private PcepLabelMap labelMap; - private boolean isLabelMapSet; - - /** - * Constructor to reset parameters. - */ - public PcepLabelUpdateVer1() { - this.labelDownload = null; - this.isLabelDownloadSet = false; - this.labelMap = null; - this.isLabelMapSet = false; - } - - /** - * Constructor to initialize PCEP label download. - * - * @param labelDownload PCEP label download - */ - public PcepLabelUpdateVer1(PcepLabelDownload labelDownload) { - this.labelDownload = labelDownload; - this.isLabelDownloadSet = true; - this.labelMap = null; - this.isLabelMapSet = false; - } - - /** - * Constructor to initialize PCEP label map. - * - * @param labelMap PCEP label map - */ - public PcepLabelUpdateVer1(PcepLabelMap labelMap) { - this.labelDownload = null; - this.isLabelDownloadSet = false; - this.labelMap = labelMap; - this.isLabelMapSet = true; - } - - /** - * builder class for PCEP label update. - */ - static class Builder implements PcepLabelUpdate.Builder { - - private PcepLabelDownload labelDownload; - private boolean isLabelDownloadSet; - private PcepLabelMap labelMap; - private boolean isLabelMapSet; - - @Override - public PcepLabelUpdate build() throws PcepParseException { - - if (isLabelDownloadSet) { - return new PcepLabelUpdateVer1(labelDownload); - } - if (isLabelMapSet) { - return new PcepLabelUpdateVer1(labelMap); - } - if (!isLabelDownloadSet && !isLabelMapSet) { - throw new PcepParseException( - "Label Download or Label Map is not set while building PcepLabelUpdate Message"); - } - return new PcepLabelUpdateVer1(); - } - - @Override - public Builder setLabelDownload(PcepLabelDownload labelDownload) { - this.labelDownload = labelDownload; - this.isLabelDownloadSet = true; - return this; - } - - @Override - public PcepLabelDownload getLabelDownload() { - return labelDownload; - } - - @Override - public Builder setLabelMap(PcepLabelMap labelMap) { - this.labelMap = labelMap; - this.isLabelMapSet = true; - return this; - } - - @Override - public PcepLabelMap getLabelMap() { - return labelMap; - } - } - - /** - * Reads PcepLabels from the byte stream received from channel buffer. - * - * @param cb of type channel buffer. - * @return PcepLabelUpdate object. - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepLabelUpdate read(ChannelBuffer cb) throws PcepParseException { - - PcepLabelUpdateVer1 pceLabelUpdate = new PcepLabelUpdateVer1(); - - PcepSrpObject srpObject; - PcepObjectHeader tempObjHeader; - - //read SRP mandatory Object - srpObject = PcepSrpObjectVer1.read(cb); - - //checking next object - cb.markReaderIndex(); - - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - - if (tempObjHeader.getObjClass() == PcepLspObjectVer1.LSP_OBJ_CLASS) { - - //now it is belong to <pce-label-download> - PcepLabelDownload labelDownload = new PcepLabelDownload(); - - //set SRP - labelDownload.setSrpObject(srpObject); - - //read and set LSP - labelDownload.setLspObject(PcepLspObjectVer1.read(cb)); - - //<label-list> - LinkedList<PcepLabelObject> llLabelList = new LinkedList<>(); - PcepLabelObject labelObject; - - while (0 < cb.readableBytes()) { - - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - - if (tempObjHeader.getObjClass() != PcepLabelObjectVer1.LABEL_OBJ_CLASS) { - break; - } - labelObject = PcepLabelObjectVer1.read(cb); - llLabelList.add(labelObject); - } - labelDownload.setLabelList(llLabelList); - pceLabelUpdate.setLabelDownload(labelDownload); - } else if (tempObjHeader.getObjClass() == PcepLabelObjectVer1.LABEL_OBJ_CLASS) { - //belong to <pce-label-map> - PcepLabelMap labelMap = new PcepLabelMap(); - - //set SRP Object - labelMap.setSrpObject(srpObject); - - //read and set Label Object - labelMap.setLabelObject(PcepLabelObjectVer1.read(cb)); - - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - - PcepFecObject fecObject = null; - switch (tempObjHeader.getObjType()) { - case PcepFecObjectIPv4Ver1.FEC_OBJ_TYPE: - fecObject = PcepFecObjectIPv4Ver1.read(cb); - break; - case PcepFecObjectIPv6Ver1.FEC_OBJ_TYPE: - fecObject = PcepFecObjectIPv6Ver1.read(cb); - break; - case PcepFecObjectIPv4AdjacencyVer1.FEC_OBJ_TYPE: - fecObject = PcepFecObjectIPv4AdjacencyVer1.read(cb); - break; - case PcepFecObjectIPv6AdjacencyVer1.FEC_OBJ_TYPE: - fecObject = PcepFecObjectIPv6AdjacencyVer1.read(cb); - break; - case PcepFecObjectIPv4UnnumberedAdjacencyVer1.FEC_OBJ_TYPE: - fecObject = PcepFecObjectIPv4UnnumberedAdjacencyVer1.read(cb); - break; - default: - throw new PcepParseException("Unkown FEC object type " + tempObjHeader.getObjType()); - } - labelMap.setFECObject(fecObject); - pceLabelUpdate.setLabelMap(labelMap); - } else { - throw new PcepParseException( - "Either <pce-label-download> or <pce-label-map> should be present. Received Class: " - + tempObjHeader.getObjClass()); - } - return pceLabelUpdate; - } - - @Override - public void write(ChannelBuffer cb) throws PcepParseException { - - if ((labelDownload != null) && (labelMap != null)) { - throw new PcepParseException("Label Download and Label Map both can't be present."); - } - - if ((labelDownload == null) && (labelMap == null)) { - throw new PcepParseException("Either Label Download or Label Map should be present."); - } - - if (labelDownload != null) { - - PcepLspObject lspObject; - PcepSrpObject srpObject; - PcepLabelObject labelObject; - LinkedList<PcepLabelObject> llLabelList; - - srpObject = labelDownload.getSrpObject(); - if (srpObject == null) { - throw new PcepParseException("SRP Object is mandatory object for Label Download."); - } else { - srpObject.write(cb); - } - - lspObject = labelDownload.getLspObject(); - if (lspObject == null) { - throw new PcepParseException("LSP Object is mandatory object for Label Download."); - } else { - lspObject.write(cb); - } - - llLabelList = labelDownload.getLabelList(); - if (llLabelList == null) { - throw new PcepParseException("Label list is mandatory object for Label Download."); - } else { - ListIterator<PcepLabelObject> listIterator = llLabelList.listIterator(); - while (listIterator.hasNext()) { - labelObject = listIterator.next(); - labelObject.write(cb); - } - } - } - - if (labelMap != null) { - - PcepSrpObject srpObject; - PcepLabelObject labelObject; - PcepFecObject fecObject; - - srpObject = labelMap.getSrpObject(); - if (srpObject == null) { - throw new PcepParseException("SRP Object is mandatory object for Label map."); - } else { - srpObject.write(cb); - } - labelObject = labelMap.getLabelObject(); - if (labelObject == null) { - throw new PcepParseException("label Object is mandatory object for Label map."); - } else { - labelObject.write(cb); - } - fecObject = labelMap.getFECObject(); - if (fecObject == null) { - throw new PcepParseException("fec Object is mandatory object for Label map."); - } else { - fecObject.write(cb); - } - } - } - - @Override - public void setLabelDownload(PcepLabelDownload labelDownload) { - if (this.isLabelMapSet) { - return; - } - this.labelDownload = labelDownload; - this.isLabelDownloadSet = true; - } - - @Override - public PcepLabelDownload getLabelDownload() { - return this.labelDownload; - } - - @Override - public void setLabelMap(PcepLabelMap labelMap) { - if (this.isLabelDownloadSet) { - return; - } - this.labelMap = labelMap; - this.isLabelMapSet = true; - } - - @Override - public PcepLabelMap getLabelMap() { - return this.labelMap; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("LabelDownload", labelDownload) - .add("LabelMap", labelMap) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java deleted file mode 100644 index 2b319c12..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java +++ /dev/null @@ -1,575 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.types.PcepErrorDetailInfo; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.StatefulIPv4LspIdentidiersTlv; -import org.onosproject.pcepio.types.StatefulLspDbVerTlv; -import org.onosproject.pcepio.types.StatefulLspErrorCodeTlv; -import org.onosproject.pcepio.types.StatefulRsvpErrorSpecTlv; -import org.onosproject.pcepio.types.SymbolicPathNameTlv; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP lsp object. - */ -public class PcepLspObjectVer1 implements PcepLspObject { - - /* - message format. - Reference : draft-ietf-pce-stateful-pce-11, section 7.3. - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PLSP-ID | Flag | O|A|R|S|D| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - The LSP Object format - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLspObjectVer1.class); - - public static final byte LSP_OBJ_TYPE = 1; - public static final byte LSP_OBJ_CLASS = 32; - public static final byte LSP_OBJECT_VERSION = 1; - - // LSP_OBJ_MINIMUM_LENGTH = CommonHeaderLen(4)+ LspObjectHeaderLen(4)+TlvAssumedMinLength(8) - public static final short LSP_OBJ_MINIMUM_LENGTH = 16; - - public static final int DEFAULT_PLSPID = 0; - public static final byte DEFAULT_OFLAG = 1; - public static final boolean DEFAULT_AFLAG = false; - public static final boolean DEFAULT_RFLAG = false; - public static final boolean DEFAULT_SFLAG = false; - public static final boolean DEFAULT_DFLAG = false; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int PLSPID_SHIFT_VALUE = 12; - public static final int OFLAG_SHIFT_VALUE = 4; - public static final int AFLAG_SHIFT_VALUE = 3; - public static final int RFLAG_SHIFT_VALUE = 2; - public static final int SFLAG_SHIFT_VALUE = 1; - public static final int PLSPID_TEMP_SHIFT_VALUE = 0xFFFFF000; - public static final int OFLAG_TEMP_SHIFT_VALUE = 0x70; - public static final int AFLAG_TEMP_SHIFT_VALUE = 0x08; - public static final int RFLAG_TEMP_SHIFT_VALUE = 0x04; - public static final int SFLAG_TEMP_SHIFT_VALUE = 0x02; - public static final int DFLAG_TEMP_SHIFT_VALUE = 0x01; - public static final int BIT_SET = 1; - public static final int BIT_RESET = 0; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_LSP_OBJECT_HEADER = new PcepObjectHeader(LSP_OBJ_CLASS, LSP_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, LSP_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader lspObjHeader; - private int iPlspId; - // 3-bits - private byte yOFlag; - private boolean bAFlag; - private boolean bRFlag; - private boolean bSFlag; - private boolean bDFlag; - - // Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Constructor to initialize all the member variables. - * - * @param lspObjHeader lsp object header - * @param iPlspId plsp id - * @param yOFlag O flag - * @param bAFlag A flag - * @param bRFlag R flag - * @param bSFlag S flag - * @param bDFlag D flag - * @param llOptionalTlv list of optional tlv - */ - public PcepLspObjectVer1(PcepObjectHeader lspObjHeader, int iPlspId, byte yOFlag, boolean bAFlag, boolean bRFlag, - boolean bSFlag, boolean bDFlag, LinkedList<PcepValueType> llOptionalTlv) { - - this.lspObjHeader = lspObjHeader; - this.iPlspId = iPlspId; - this.yOFlag = yOFlag; - this.bAFlag = bAFlag; - this.bRFlag = bRFlag; - this.bSFlag = bSFlag; - this.bDFlag = bDFlag; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Sets lsp Object Header. - * - * @param obj lsp object header - */ - public void setLspObjHeader(PcepObjectHeader obj) { - this.lspObjHeader = obj; - } - - @Override - public void setPlspId(int iPlspId) { - this.iPlspId = iPlspId; - } - - @Override - public void setOFlag(byte yOFlag) { - this.yOFlag = yOFlag; - } - - @Override - public void setAFlag(boolean bAFlag) { - this.bAFlag = bAFlag; - } - - @Override - public void setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - } - - @Override - public void setSFlag(boolean bSFlag) { - this.bSFlag = bSFlag; - } - - @Override - public void setDFlag(boolean bDFlag) { - this.bDFlag = bDFlag; - } - - /** - * Returns lsp object header. - * - * @return lspObjHeader - */ - public PcepObjectHeader getLspObjHeader() { - return this.lspObjHeader; - } - - @Override - public int getPlspId() { - return this.iPlspId; - } - - @Override - public byte getOFlag() { - return this.yOFlag; - } - - @Override - public boolean getAFlag() { - return this.bAFlag; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public boolean getSFlag() { - return this.bSFlag; - } - - @Override - public boolean getDFlag() { - return this.bDFlag; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Parse channel buffer and returns object of PcepLspObject. - * - * @param cb of type channel buffer - * @return object of PcepLspObject - * @throws PcepParseException when lsp object is not present in channel buffer - */ - public static PcepLspObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader lspObjHeader; - int iPlspId; - // 3-bits - byte yOFlag; - boolean bAFlag; - boolean bRFlag; - boolean bSFlag; - boolean bDFlag; - - // Optional TLV - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - lspObjHeader = PcepObjectHeader.read(cb); - - if (lspObjHeader.getObjClass() != PcepLspObjectVer1.LSP_OBJ_CLASS) { - throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_6, PcepErrorDetailInfo.ERROR_VALUE_8); - } - //take only LspObject buffer. - ChannelBuffer tempCb = cb.readBytes(lspObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - Integer iTemp = tempCb.readInt(); - iPlspId = (iTemp & PLSPID_TEMP_SHIFT_VALUE) >> PLSPID_SHIFT_VALUE; - Integer iX = (iTemp & OFLAG_TEMP_SHIFT_VALUE) >> OFLAG_SHIFT_VALUE; - yOFlag = iX.byteValue(); - iX = (iTemp & AFLAG_TEMP_SHIFT_VALUE) >> AFLAG_SHIFT_VALUE; - bAFlag = iX > 0; - iX = (iTemp & RFLAG_TEMP_SHIFT_VALUE) >> RFLAG_SHIFT_VALUE; - bRFlag = iX > 0; - iX = (iTemp & SFLAG_TEMP_SHIFT_VALUE) >> SFLAG_SHIFT_VALUE; - bSFlag = iX > 0; - iX = iTemp & DFLAG_TEMP_SHIFT_VALUE; - bDFlag = iX > 0; - - // parse optional TLV - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepLspObjectVer1(lspObjHeader, iPlspId, yOFlag, bAFlag, bRFlag, bSFlag, bDFlag, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = lspObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write lsp object header. Index " + objLenIndex); - } - - int iTemp = iPlspId << PLSPID_SHIFT_VALUE; - iTemp = iTemp | (yOFlag << OFLAG_SHIFT_VALUE); - byte bFlag; - iTemp = bAFlag ? (iTemp | AFLAG_TEMP_SHIFT_VALUE) : iTemp; - - bFlag = (bRFlag) ? (byte) BIT_SET : BIT_RESET; - iTemp = iTemp | (bFlag << RFLAG_SHIFT_VALUE); - bFlag = (bSFlag) ? (byte) BIT_SET : BIT_RESET; - iTemp = iTemp | (bFlag << SFLAG_SHIFT_VALUE); - bFlag = (bDFlag) ? (byte) BIT_SET : BIT_RESET; - iTemp = iTemp | bFlag; - cb.writeInt(iTemp); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - //will be helpful during print(). - lspObjHeader.setObjLen((short) length); - // As per RFC the length of object should be - // multiples of 4 - - cb.setShort(objLenIndex, (short) length); - - return length; - } - - /** - * Returns Linked list of optional tlvs. - * - * @param cb of channel buffer. - * @return list of optional tlvs - * @throws PcepParseException when unsupported tlv is received - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv; - - llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - int iValue = 0; - - switch (hType) { - - case StatefulIPv4LspIdentidiersTlv.TYPE: - tlv = StatefulIPv4LspIdentidiersTlv.read(cb); - break; - case StatefulLspErrorCodeTlv.TYPE: - iValue = cb.readInt(); - tlv = new StatefulLspErrorCodeTlv(iValue); - break; - case StatefulRsvpErrorSpecTlv.TYPE: - tlv = StatefulRsvpErrorSpecTlv.read(cb); - break; - case SymbolicPathNameTlv.TYPE: - tlv = SymbolicPathNameTlv.read(cb, hLength); - break; - case StatefulLspDbVerTlv.TYPE: - tlv = StatefulLspDbVerTlv.read(cb); - break; - default: - throw new PcepParseException("Received unsupported TLV type :" + hType); - } - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - - llOutOptionalTlv.add(tlv); - } - - if (0 < cb.readableBytes()) { - - throw new PcepParseException("Optional Tlv parsing error. Extra bytes received."); - } - return llOutOptionalTlv; - } - - /** - * returns writer index. - * - * @param cb of type channel buffer - * @return length of bytes written to channel buffer - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - int startIndex = cb.writerIndex(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("tlv is null from OptionalTlv list"); - continue; - } - - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - - return cb.writerIndex() - startIndex; - } - - /** - * Builder class for PCEP lsp Object. - */ - public static class Builder implements PcepLspObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsPlspIdSet = false; - private boolean bIsOFlagSet = false; - private boolean bIsRFlagSet = false; - private boolean bIsAFlagSet = false; - private boolean bIsDFlagSet = false; - private boolean bIsSFlagSet = false; - - private PcepObjectHeader lspObjHeader; - private byte yOFlag; - private boolean bAFlag; - private boolean bDFlag; - private boolean bSFlag; - private boolean bRFlag; - LinkedList<PcepValueType> llOptionalTlv = null; - - private int plspId; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepLspObject build() { - PcepObjectHeader lspObjHeader = this.bIsHeaderSet ? this.lspObjHeader : DEFAULT_LSP_OBJECT_HEADER; - - int plspId = this.bIsPlspIdSet ? this.plspId : DEFAULT_PLSPID; - byte yOFlag = this.bIsOFlagSet ? this.yOFlag : DEFAULT_OFLAG; - boolean bAFlag = this.bIsAFlagSet ? this.bAFlag : DEFAULT_AFLAG; - boolean bRFlag = this.bIsRFlagSet ? this.bRFlag : DEFAULT_RFLAG; - boolean bSFlag = this.bIsSFlagSet ? this.bSFlag : DEFAULT_SFLAG; - boolean bDFlag = this.bIsDFlagSet ? this.bDFlag : DEFAULT_DFLAG; - - if (bIsPFlagSet) { - lspObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - lspObjHeader.setIFlag(bIFlag); - } - - return new PcepLspObjectVer1(lspObjHeader, plspId, yOFlag, bAFlag, bRFlag, bSFlag, bDFlag, llOptionalTlv); - } - - @Override - public PcepObjectHeader getLspObjHeader() { - return this.lspObjHeader; - } - - @Override - public Builder setLspObjHeader(PcepObjectHeader obj) { - this.lspObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getPlspId() { - return this.plspId; - } - - @Override - public Builder setPlspId(int value) { - this.plspId = value; - this.bIsPlspIdSet = true; - return this; - } - - @Override - public byte getOFlag() { - return this.yOFlag; - } - - @Override - public Builder setOFlag(byte value) { - this.yOFlag = value; - this.bIsOFlagSet = true; - return this; - } - - @Override - public boolean getAFlag() { - return this.bAFlag; - } - - @Override - public Builder setAFlag(boolean value) { - this.bAFlag = value; - this.bIsAFlagSet = true; - return this; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public Builder setRFlag(boolean value) { - this.bRFlag = value; - this.bIsRFlagSet = true; - return this; - } - - @Override - public boolean getSFlag() { - return this.bSFlag; - } - - @Override - public Builder setSFlag(boolean value) { - this.bSFlag = value; - this.bIsSFlagSet = true; - return this; - } - - @Override - public boolean getDFlag() { - return this.bDFlag; - } - - @Override - public Builder setDFlag(boolean value) { - this.bDFlag = value; - this.bIsDFlagSet = true; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("PlspIDValue", iPlspId) - .add("OFlag", yOFlag) - .add("AFlag", bAFlag) - .add("RFlag", bRFlag) - .add("SFlag", bSFlag) - .add("DFlag", bDFlag) - .add("OptionalTlvList", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspaObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspaObjectVer1.java deleted file mode 100644 index f4000509..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspaObjectVer1.java +++ /dev/null @@ -1,529 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLspaObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP label Object . - */ -public class PcepLspaObjectVer1 implements PcepLspaObject { - - /* LSPA Object Body Format - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Exclude-any | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Include-any | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Include-all | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Setup Prio | Holding Prio | Flags |L| Reserved | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - | Optional TLVs | - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepLspaObjectVer1.class); - - public static final byte LSPA_OBJ_TYPE = 1; - public static final byte LSPA_OBJ_CLASS = 9; - public static final byte LSPA_OBJECT_VERSION = 1; - public static final short LSPA_OBJ_MINIMUM_LENGTH = 20; - public static final int OBJECT_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_LSPA_OBJECT_HEADER = new PcepObjectHeader(LSPA_OBJ_CLASS, LSPA_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, LSPA_OBJ_MINIMUM_LENGTH); - - public static final int SETUP_PRIORITY_SHIFT_VALUE = 24; - public static final int HOLD_PRIORITY_SHIFT_VALUE = 16; - public static final int BFLAG_SHIFT_VALUE = 8; - public static final int LFLAG_SET = 1; - public static final int LFLAG_RESET = 0; - private PcepObjectHeader lspaObjHeader; - private int iExcludeAny; - private int iIncludeAny; - private int iIncludeAll; - private byte cSetupPriority; - private byte cHoldPriority; - private boolean bLFlag; - private LinkedList<PcepValueType> llOptionalTlv; //Optional TLV - - /** - * Constructor to initialize member variables. - * - * @param lspaObjHeader lspa object header - * @param bLFlag b l flag - * @param iExcludeAny excludeAny value - * @param iIncludeAny includeAny value - * @param iIncludeAll includeAll value - * @param cSetupPriority setup priority value - * @param cHoldPriority hold priority value - * @param llOptionalTlv list of optional tlv - */ - public PcepLspaObjectVer1(PcepObjectHeader lspaObjHeader, boolean bLFlag, int iExcludeAny, int iIncludeAny, - int iIncludeAll, byte cSetupPriority, byte cHoldPriority, LinkedList<PcepValueType> llOptionalTlv) { - - this.lspaObjHeader = lspaObjHeader; - this.bLFlag = bLFlag; - this.iExcludeAny = iExcludeAny; - this.iIncludeAny = iIncludeAny; - this.iIncludeAll = iIncludeAll; - this.cSetupPriority = cSetupPriority; - this.cHoldPriority = cHoldPriority; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Sets Object Header. - * - * @param obj lspa object header - */ - public void setLspaObjHeader(PcepObjectHeader obj) { - this.lspaObjHeader = obj; - } - - @Override - public void setExcludeAny(int iExcludeAny) { - this.iExcludeAny = iExcludeAny; - } - - @Override - public void setIncludeAny(int iIncludeAny) { - this.iIncludeAny = iIncludeAny; - } - - @Override - public void setSetupPriority(byte cSetupPriority) { - this.cSetupPriority = cSetupPriority; - } - - @Override - public void setHoldPriority(byte cHoldPriority) { - this.cHoldPriority = cHoldPriority; - } - - @Override - public void setLFlag(boolean bLFlag) { - this.bLFlag = bLFlag; - } - - /** - * Returns lspa Object Header. - * - * @return lspa Object Header - */ - public PcepObjectHeader getLspaObjHeader() { - return this.lspaObjHeader; - } - - @Override - public int getExcludeAny() { - return this.iExcludeAny; - } - - @Override - public int getIncludeAny() { - return this.iIncludeAny; - } - - @Override - public int getIncludeAll() { - return this.iIncludeAll; - } - - @Override - public byte getSetupPriority() { - return this.cSetupPriority; - } - - @Override - public byte getHoldPriority() { - return this.cHoldPriority; - } - - @Override - public boolean getLFlag() { - return this.bLFlag; - } - - @Override - public void setIncludeAll(int value) { - this.iIncludeAll = value; - - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - - } - - /** - * Reads channel buffer and returns object of PcepLspaObject. - * - * @param cb of type channel buffer. - * @return object of PcepLspaObject - * @throws PcepParseException while parsing lspa object from channel buffer - */ - public static PcepLspaObject read(ChannelBuffer cb) throws PcepParseException { - - log.debug("LspaObject::read"); - PcepObjectHeader lspaObjHeader; - int iExcludeAny; - int iIncludeAny; - int iIncludeAll; - byte cSetupPriority; - byte cHoldPriority; - boolean bLFlag; - byte flags; - - // Optional TLV - LinkedList<PcepValueType> llOptionalTlv; - - lspaObjHeader = PcepObjectHeader.read(cb); - - //take only Lspa Object buffer. - ChannelBuffer tempCb = cb.readBytes(lspaObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - iExcludeAny = tempCb.readInt(); - iIncludeAny = tempCb.readInt(); - iIncludeAll = tempCb.readInt(); - cSetupPriority = tempCb.readByte(); - cHoldPriority = tempCb.readByte(); - flags = tempCb.readByte(); - tempCb.readByte(); - - bLFlag = (flags & (byte) LFLAG_SET) == LFLAG_SET; - - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepLspaObjectVer1(lspaObjHeader, bLFlag, iExcludeAny, iIncludeAny, iIncludeAll, cSetupPriority, - cHoldPriority, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = lspaObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write lspa object header. Index " + objLenIndex); - } - - cb.writeInt(iExcludeAny); - cb.writeInt(iIncludeAny); - cb.writeInt(iIncludeAll); - - int iTemp = cSetupPriority << SETUP_PRIORITY_SHIFT_VALUE; - iTemp = iTemp | (cHoldPriority << HOLD_PRIORITY_SHIFT_VALUE); - byte bFlag; - bFlag = (bLFlag) ? (byte) LFLAG_SET : LFLAG_RESET; - iTemp = iTemp | (bFlag << BFLAG_SHIFT_VALUE); - cb.writeInt(iTemp); - - // Add optional TLV - if (!packOptionalTlv(cb)) { - throw new PcepParseException("Faild to write lspa objects tlv to channel buffer"); - } - - short length = (short) (cb.writerIndex() - objStartIndex); - - lspaObjHeader.setObjLen(length); //will be helpful during print(). - - //As per RFC the length of object should be multiples of 4 - short pad = (short) (length % 4); - - if (pad != 0) { - pad = (short) (4 - pad); - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = (short) (length + pad); - } - cb.setShort(objLenIndex, length); - return cb.writerIndex(); - } - - /** - * Parse list of optional tlvs. - * - * @param cb channel buffer - * @return list of optional tlvs. - * @throws PcepParseException when fails to parse optional tlv list. - */ - public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - - return llOutOptionalTlv; - } - - /** - * Writes optional tlvs to channel buffer. - * - * @param cb channel buffer - * @return true - */ - protected boolean packOptionalTlv(ChannelBuffer cb) { - int hTlvType; - int hTlvLength; - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - if (tlv == null) { - log.debug("Warning: tlv is null from OptionalTlv list"); - continue; - } - hTlvType = tlv.getType(); - hTlvLength = tlv.getLength(); - if (0 == hTlvLength) { - log.debug("Warning: invalid length in tlv of OptionalTlv list"); - continue; - } - - cb.writeShort(hTlvType); - cb.writeShort(hTlvLength); - - switch (hTlvType) { - //TODO: optional TLV for LSPA to be added - - default: - log.debug("Warning: PcepLspaObject: unknown tlv"); - } - - // As per RFC the length of object should - // be multiples of 4 - int pad = hTlvLength % 4; - - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - } - return true; - } - - /** - * Builder class for PCEP lspa object. - */ - public static class Builder implements PcepLspaObject.Builder { - private boolean bIsHeaderSet = false; - - private PcepObjectHeader lspaObjHeader; - - private boolean bLFlag; - private int iExcludeAny; - private boolean bIsExcludeAnySet = false; - private int iIncludeAny; - private boolean bIsIncludeAnySet = false; - private int iIncludeAll; - private boolean bIsIncludeAllSet = false; - private byte cSetupPriority; - private boolean bIsSetupPrioritySet = false; - private byte cHoldPriority; - private boolean bIsHoldPrioritySet = false; - private LinkedList<PcepValueType> llOptionalTlv; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepLspaObject build() throws PcepParseException { - - PcepObjectHeader lspaObjHeader = this.bIsHeaderSet ? this.lspaObjHeader : DEFAULT_LSPA_OBJECT_HEADER; - - if (!this.bIsExcludeAnySet) { - throw new PcepParseException("ExcludeAny NOT Set while building PcepLspaObject."); - } - if (!this.bIsIncludeAnySet) { - throw new PcepParseException("IncludeAny NOT Set while building PcepLspaObject."); - } - if (!this.bIsIncludeAllSet) { - throw new PcepParseException("IncludeAll NOT Set while building PcepLspaObject."); - } - if (!this.bIsSetupPrioritySet) { - throw new PcepParseException("Setup Priority NOT Set while building PcepLspaObject."); - } - if (!this.bIsHoldPrioritySet) { - throw new PcepParseException("Hold Priority NOT Set while building PcepLspaObject."); - } - - if (bIsPFlagSet) { - lspaObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - lspaObjHeader.setIFlag(bIFlag); - } - - return new PcepLspaObjectVer1(lspaObjHeader, bLFlag, iExcludeAny, iIncludeAny, iIncludeAll, cSetupPriority, - cHoldPriority, llOptionalTlv); - } - - @Override - public PcepObjectHeader getLspaObjHeader() { - return this.lspaObjHeader; - } - - @Override - public Builder setLspaObjHeader(PcepObjectHeader obj) { - this.lspaObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public boolean getLFlag() { - return this.bLFlag; - } - - @Override - public Builder setLFlag(boolean value) { - this.bLFlag = value; - return this; - } - - @Override - public int getExcludeAny() { - return this.iExcludeAny; - } - - @Override - public Builder setExcludeAny(int value) { - this.iExcludeAny = value; - this.bIsExcludeAnySet = true; - return this; - } - - @Override - public int getIncludeAny() { - return this.iIncludeAny; - } - - @Override - public Builder setIncludeAny(int value) { - this.iIncludeAny = value; - this.bIsIncludeAnySet = true; - return this; - } - - @Override - public int getIncludeAll() { - return this.iIncludeAll; - } - - @Override - public Builder setIncludeAll(int value) { - this.iIncludeAll = value; - this.bIsIncludeAllSet = true; - return this; - } - - @Override - public byte getSetupPriority() { - return this.cSetupPriority; - } - - @Override - public Builder setSetupPriority(byte value) { - this.cSetupPriority = value; - this.bIsSetupPrioritySet = true; - return this; - } - - @Override - public byte getHoldPriority() { - return this.cHoldPriority; - } - - @Override - public Builder setHoldPriority(byte value) { - this.cHoldPriority = value; - this.bIsHoldPrioritySet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("LFlag", bLFlag) - .add("SetupPriority", cSetupPriority) - .add("HoldPriority", cHoldPriority) - .add("IncludeAll", iIncludeAll) - .add("IncludeAny", iIncludeAny) - .add("ExcludeAny", iExcludeAny) - .add("OptionalTlvList", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMessageVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMessageVer1.java deleted file mode 100644 index 2169a673..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMessageVer1.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFactories; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.types.PcepErrorDetailInfo; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Provides PCEP messages. - */ -public abstract class PcepMessageVer1 { - - protected static final Logger log = LoggerFactory.getLogger(PcepFactories.class); - - // version: 1.0 - static final byte WIRE_VERSION = 1; - static final int MINIMUM_LENGTH = 4; - static final int PACKET_VERSION = 1; - static final byte OPEN_MSG_TYPE = 0x1; - static final byte KEEPALIVE_MSG_TYPE = 0x2; - static final byte REPORT_MSG_TYPE = 0xa; - static final byte TE_REPORT_MSG_TYPE = 0xe; - static final byte UPDATE_MSG_TYPE = 0xb; - static final byte INITIATE_MSG_TYPE = 0xc; - static final byte CLOSE_MSG_TYPE = 0x7; - static final byte ERROR_MSG_TYPE = 0x6; - static final byte LABEL_UPDATE_MSG_TYPE = 0xD; - static final byte LABEL_RANGE_RESV_MSG_TYPE = 0xF; - public static final int SHIFT_FLAG = 5; - static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - public static final PcepMessageVer1.Reader READER = new Reader(); - - /** - * Reader class for reading PCEP messages from channel buffer. - */ - static class Reader implements PcepMessageReader<PcepMessage> { - @Override - public PcepMessage readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < MINIMUM_LENGTH) { - throw new PcepParseException("Packet should have minimum length: " + MINIMUM_LENGTH); - } - - try { - int start = cb.readerIndex(); - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != (byte) PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.Message_1(1), got=" + version); - } - - byte type = cb.readByte(); - short length = cb.readShort(); - cb.readerIndex(start); - - switch (type) { - - case OPEN_MSG_TYPE: - log.debug("OPEN MESSAGE is received"); - // message type value 1 means it is open message - return PcepOpenMsgVer1.READER.readFrom(cb.readBytes(length)); - case KEEPALIVE_MSG_TYPE: - log.debug("KEEPALIVE MESSAGE is received"); - // message type value 2 means it is Keepalive message - return PcepKeepaliveMsgVer1.READER.readFrom(cb.readBytes(length)); - case ERROR_MSG_TYPE: - log.debug("ERROR MESSAGE is received"); - // message type value 6 means it is error message - return PcepErrorMsgVer1.READER.readFrom(cb.readBytes(length)); - case REPORT_MSG_TYPE: - log.debug("REPORT MESSAGE is received"); - // message type value 10 means it is Report message - // return - return PcepReportMsgVer1.READER.readFrom(cb.readBytes(length)); - case UPDATE_MSG_TYPE: - log.debug("UPDATE MESSAGE is received"); - //message type value 11 means it is Update message - return PcepUpdateMsgVer1.READER.readFrom(cb.readBytes(length)); - case INITIATE_MSG_TYPE: - log.debug("INITIATE MESSAGE is received"); - //message type value 12 means it is PcInitiate message - return PcepInitiateMsgVer1.READER.readFrom(cb.readBytes(length)); - case CLOSE_MSG_TYPE: - log.debug("CLOSE MESSAGE is received"); - // message type value 7 means it is Close message - return PcepCloseMsgVer1.READER.readFrom(cb.readBytes(length)); - case TE_REPORT_MSG_TYPE: - log.debug("TE REPORT MESSAGE is received"); - // message type value 14 means it is TE REPORT message - // return - return PcepTEReportMsgVer1.READER.readFrom(cb.readBytes(length)); - case LABEL_UPDATE_MSG_TYPE: - log.debug("LABEL UPDATE MESSAGE is received"); - // message type value 13 means it is LABEL UPDATE message - // return - return PcepLabelUpdateMsgVer1.READER.readFrom(cb.readBytes(length)); - case LABEL_RANGE_RESV_MSG_TYPE: - log.debug("LABEL RANGE RESERVE MESSAGE is received"); - // message type value 15 means it is LABEL RANGE RESERVE message - // return - return PcepLabelRangeResvMsgVer1.READER.readFrom(cb.readBytes(length)); - default: - throw new PcepParseException("ERROR: UNKNOWN MESSAGE is received. Msg Type: " + type); - } - } catch (IndexOutOfBoundsException e) { - throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_1); - } - } - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMetricObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMetricObjectVer1.java deleted file mode 100644 index 31c27870..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMetricObjectVer1.java +++ /dev/null @@ -1,376 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepMetricObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP metric object. - */ -public class PcepMetricObjectVer1 implements PcepMetricObject { - - /* - METRIC Object Body Format. - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | Flags |C|B| T | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | metric-value | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepMetricObjectVer1.class); - - public static final byte METRIC_OBJ_TYPE = 1; - public static final byte METRIC_OBJ_CLASS = 6; - public static final byte METRIC_OBJECT_VERSION = 1; - public static final short METRIC_OBJ_MINIMUM_LENGTH = 12; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int IFLAG_SHIFT_VALUE = 9; - public static final int BTYPE_SHIFT_VALUE = 8; - public static final int CFLAG_SET = 1; - public static final int CFLAG_RESET = 0; - public static final int BFLAG_SET = 1; - public static final int BFLAG_RESET = 0; - public static final byte CFLAG_CHECK = 0x02; - - static final PcepObjectHeader DEFAULT_METRIC_OBJECT_HEADER = new PcepObjectHeader(METRIC_OBJ_CLASS, - METRIC_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - METRIC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader metricObjHeader; - private int iMetricVal; - private byte yFlag; // 6-flags - private boolean bCFlag; - private boolean bBFlag; - private byte bType; - - /** - * Default constructor. - */ - public PcepMetricObjectVer1() { - this.metricObjHeader = null; - this.iMetricVal = 0; - this.yFlag = 0; - this.bCFlag = false; - this.bBFlag = false; - this.bType = 0; - - } - - /** - * Constructor to initialize all member variables. - * - * @param metricObjHeader metric object header - * @param iMetricVal metric value - * @param yFlag Y flag - * @param bCFlag C flag - * @param bBFlag B flag - * @param bType Type value - */ - public PcepMetricObjectVer1(PcepObjectHeader metricObjHeader, int iMetricVal, byte yFlag, boolean bCFlag, - boolean bBFlag, byte bType) { - - this.metricObjHeader = metricObjHeader; - this.iMetricVal = iMetricVal; - this.yFlag = yFlag; - this.bCFlag = bCFlag; - this.bBFlag = bBFlag; - this.bType = bType; - - } - - @Override - public void setMetricVal(int value) { - this.iMetricVal = value; - - } - - @Override - public int getMetricVal() { - return this.iMetricVal; - } - - @Override - public byte getYFlag() { - return this.yFlag; - } - - @Override - public void setYFlag(byte value) { - this.yFlag = value; - } - - @Override - public boolean getCFlag() { - return this.bCFlag; - } - - @Override - public void setCFlag(boolean value) { - this.bCFlag = value; - } - - @Override - public boolean getBFlag() { - return this.bBFlag; - } - - @Override - public void setBFlag(boolean value) { - this.bBFlag = value; - } - - @Override - public byte getBType() { - return this.bType; - } - - @Override - public void setBType(byte value) { - this.bType = value; - } - - /** - * Sets metric Object Header. - * - * @param obj metric object header - */ - public void setMetricObjHeader(PcepObjectHeader obj) { - this.metricObjHeader = obj; - } - - /** - * Returns metric Object Header. - * - * @return metricObjHeader - */ - public PcepObjectHeader getMetricObjHeader() { - return this.metricObjHeader; - } - - /** - * Reads from channel buffer and returns object of PcepMetricObject. - * - * @param cb of channel buffer. - * @return object of PcepMetricObject - * @throws PcepParseException when metric object is not present in channel buffer - */ - public static PcepMetricObject read(ChannelBuffer cb) throws PcepParseException { - - log.debug("MetricObject::read"); - PcepObjectHeader metricObjHeader; - int iMetricVal; - byte yFlag; // 6-flags - boolean bCFlag; - boolean bBFlag; - byte bType; - - metricObjHeader = PcepObjectHeader.read(cb); - - if (metricObjHeader.getObjClass() != METRIC_OBJ_CLASS) { - throw new PcepParseException("This object is not a Metric Object. Object Class: " - + metricObjHeader.getObjClass()); - } - - //take only metric buffer. - ChannelBuffer tempCb = cb.readBytes(metricObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - tempCb.readShort(); - yFlag = tempCb.readByte(); - bType = tempCb.readByte(); - bCFlag = (yFlag & CFLAG_CHECK) == CFLAG_CHECK; - bBFlag = (yFlag & BFLAG_SET) == BFLAG_SET; - iMetricVal = tempCb.readInt(); - - return new PcepMetricObjectVer1(metricObjHeader, iMetricVal, yFlag, bCFlag, bBFlag, bType); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = metricObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Error: ObjectLength is " + objLenIndex); - } - - int iFlag = (bCFlag) ? CFLAG_SET : CFLAG_RESET; - int iTemp = iFlag << IFLAG_SHIFT_VALUE; - iFlag = (bBFlag) ? BFLAG_SET : BFLAG_RESET; - iTemp = iTemp | (iFlag << BTYPE_SHIFT_VALUE); - iTemp = iTemp | bType; - cb.writeInt(iTemp); - cb.writeInt(iMetricVal); - - short hLength = (short) (cb.writerIndex() - objStartIndex); - cb.setShort(objLenIndex, hLength); - //will be helpful during print(). - metricObjHeader.setObjLen(hLength); - return hLength; - } - - /** - * Builder class for PCEP metric object. - */ - public static class Builder implements PcepMetricObject.Builder { - - private boolean bIsHeaderSet = false; - private PcepObjectHeader metricObjHeader; - private int iMetricVal; - private boolean bIsMetricValSet = false; - private byte yFlag; // 6-flags - private boolean bCFlag; - private boolean bBFlag; - private byte bType; - private boolean bIsbTypeSet = false; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepMetricObject build() throws PcepParseException { - - PcepObjectHeader metricObjHeader = this.bIsHeaderSet ? this.metricObjHeader : DEFAULT_METRIC_OBJECT_HEADER; - - if (!this.bIsMetricValSet) { - throw new PcepParseException(" Metric Value NOT Set while building PcepMetricObject."); - } - if (!this.bIsbTypeSet) { - throw new PcepParseException(" Type NOT Set while building PcepMetricObject."); - } - - if (bIsPFlagSet) { - metricObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - metricObjHeader.setIFlag(bIFlag); - } - - return new PcepMetricObjectVer1(metricObjHeader, iMetricVal, yFlag, bCFlag, bBFlag, bType); - } - - @Override - public PcepObjectHeader getMetricObjHeader() { - return this.metricObjHeader; - } - - @Override - public Builder setMetricObjHeader(PcepObjectHeader obj) { - this.metricObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getMetricVal() { - return this.iMetricVal; - } - - @Override - public Builder setMetricVal(int value) { - this.iMetricVal = value; - this.bIsMetricValSet = true; - return this; - } - - @Override - public byte getYFlag() { - return this.yFlag; - } - - @Override - public Builder setYFlag(byte value) { - this.yFlag = value; - return this; - } - - @Override - public boolean getCFlag() { - return this.bCFlag; - } - - @Override - public Builder setCFlag(boolean value) { - this.bCFlag = value; - return this; - } - - @Override - public boolean getBFlag() { - return this.bBFlag; - } - - @Override - public Builder setBFlag(boolean value) { - this.bBFlag = value; - return this; - } - - @Override - public byte getBType() { - return this.bType; - } - - @Override - public Builder setBType(byte value) { - this.bType = value; - this.bIsbTypeSet = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("MetricValue", iMetricVal) - .add("BFlag", bBFlag) - .add("CFlag", bCFlag) - .add("BType", bType) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMsgPathVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMsgPathVer1.java deleted file mode 100644 index 49c738fc..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMsgPathVer1.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepMsgPath; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Message PAth for update message. - * Reference :PCE extensions for stateful draft-ietf-pce-stateful-pce-10. - */ -public class PcepMsgPathVer1 implements PcepMsgPath { - - /* - * <path> ::= <ERO><attribute-list> - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepMsgPathVer1.class); - //PcepEroObject - private PcepEroObject eroObj; - private boolean isEroObjectSet; - // PcepAttribute - private PcepAttribute attrList; - private boolean isAttributeListSet; - - /** - * constructor to initialize objects. - */ - public PcepMsgPathVer1() { - eroObj = null; - attrList = null; - isEroObjectSet = false; - isAttributeListSet = false; - } - - @Override - public PcepEroObject getEroObject() { - return eroObj; - } - - @Override - public PcepAttribute getPcepAttribute() { - return attrList; - } - - @Override - public void setEroObject(PcepEroObject eroObj) { - this.eroObj = eroObj; - } - - @Override - public void setPcepAttribute(PcepAttribute attrList) { - this.attrList = attrList; - } - - /** - * constructor to initialize member variables. - * - * @param eroObj pcep ero object - * @param attrList pcep attribute - */ - public PcepMsgPathVer1(PcepEroObject eroObj, PcepAttribute attrList) { - this.eroObj = eroObj; - isEroObjectSet = true; - this.attrList = attrList; - if (attrList == null) { - isAttributeListSet = false; - } else { - isAttributeListSet = true; - } - } - - @Override - public PcepMsgPath read(ChannelBuffer cb) throws PcepParseException { - PcepEroObject eroObj; - PcepAttribute attrList; - - eroObj = PcepEroObjectVer1.read(cb); - attrList = PcepAttributeVer1.read(cb); - - return new PcepMsgPathVer1(eroObj, attrList); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - int iLenStartIndex = cb.writerIndex(); - - //write Object header - if (this.isEroObjectSet) { - this.eroObj.write(cb); - } - if (this.isAttributeListSet) { - attrList.write(cb); - } - - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Builder class for PCEP Message path. - */ - public static class Builder implements PcepMsgPath.Builder { - - private boolean bIsEROObjectSet = false; - private boolean bIsPcepAttributeSet = false; - - //PCEP ERO Object - private PcepEroObject eroObject; - //PCEP Attribute list - private PcepAttribute pcepAttribute; - - @Override - public PcepMsgPath build() throws PcepParseException { - - //PCEP ERO Object - PcepEroObject eroObject = null; - //PCEP Attribute list - PcepAttribute pcepAttribute = null; - - if (!this.bIsEROObjectSet) { - throw new PcepParseException("ERO Object NOT Set while building PcepMsgPath."); - } else { - eroObject = this.eroObject; - } - if (!this.bIsPcepAttributeSet) { - throw new PcepParseException("Pcep Attributes NOT Set while building PcepMsgPath."); - } else { - pcepAttribute = this.pcepAttribute; - } - - return new PcepMsgPathVer1(eroObject, pcepAttribute); - } - - @Override - public PcepEroObject getEroObject() { - return this.eroObject; - } - - @Override - public PcepAttribute getPcepAttribute() { - return this.pcepAttribute; - } - - @Override - public Builder setEroObject(PcepEroObject eroObject) { - this.eroObject = eroObject; - this.bIsEROObjectSet = true; - return this; - } - - @Override - public Builder setPcepAttribute(PcepAttribute pcepAttribute) { - this.pcepAttribute = pcepAttribute; - this.bIsPcepAttributeSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("EroObject", eroObj) - .add("AttributeList", attrList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenMsgVer1.java deleted file mode 100644 index 902226e9..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenMsgVer1.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepOpenMsg; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepErrorDetailInfo; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP open message. - */ -public class PcepOpenMsgVer1 implements PcepOpenMsg { - - /* - * <Open Message>::= <Common Header> <OPEN> - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Ver | Flags | Message-Type | Message-Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Ver | Flags | Keepalive | DeadTimer | SID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepOpenMsgVer1.class); - - public static final byte PACKET_VERSION = 1; - public static final int PACKET_MINIMUM_LENGTH = 12; - public static final PcepType MSG_TYPE = PcepType.OPEN; - private PcepOpenObject pcepOpenObj; - - public static final PcepOpenMsgVer1.Reader READER = new Reader(); - - /** - * Constructor to initialize PcepOpenObject. - * - * @param pcepOpenObj PCEP-OPEN-OBJECT - */ - public PcepOpenMsgVer1(PcepOpenObject pcepOpenObj) { - this.pcepOpenObj = pcepOpenObj; - } - - @Override - public PcepOpenObject getPcepOpenObject() { - return this.pcepOpenObj; - } - - @Override - public void setPcepOpenObject(PcepOpenObject pcepOpenObj) { - this.pcepOpenObj = pcepOpenObj; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - /** - * Reader class for reading PCEP open message from channel buffer. - */ - public static class Reader implements PcepMessageReader<PcepOpenMsg> { - - @Override - public PcepOpenMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Packet size is less than the minimum length."); - } - - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - log.error("[readFrom] Invalid version: " + version); - throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_1); - } - // fixed value property type == 1 - byte type = cb.readByte(); - - if (type != MSG_TYPE.getType()) { - log.error("[readFrom] Unexpected type: " + type); - throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_1, PcepErrorDetailInfo.ERROR_VALUE_1); - } - int length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException( - "Wrong length: Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " + length); - } - return new PcepOpenMsgVer1(PcepOpenObjectVer1.read(cb)); - } - } - - /** - * Builder class for PCEP open message. - */ - static class Builder implements PcepOpenMsg.Builder { - - private PcepOpenObject pcepOpenObj; - - @Override - public PcepOpenMsg build() throws PcepParseException { - if (!(pcepOpenObj instanceof PcepOpenObjectVer1)) { - throw new NullPointerException("PcepOpenObject is null."); - } - return new PcepOpenMsgVer1(pcepOpenObj); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.OPEN; - } - - @Override - public PcepOpenObject getPcepOpenObj() { - return this.pcepOpenObj; - } - - @Override - public Builder setPcepOpenObj(PcepOpenObject obj) { - this.pcepOpenObj = obj; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - public static final Writer WRITER = new Writer(); - - /** - * Writer class for writing PCEP opne message to channel buffer. - */ - public static class Writer implements PcepMessageWriter<PcepOpenMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepOpenMsgVer1 message) throws PcepParseException { - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - - int msgLenIndex = cb.writerIndex(); - cb.writeShort(0); - - message.getPcepOpenObject().write(cb); - - // update message length field - int iLength = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) iLength); - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("OpenObject", pcepOpenObj) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenObjectVer1.java deleted file mode 100644 index d5e58694..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenObjectVer1.java +++ /dev/null @@ -1,491 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.GmplsCapabilityTlv; -import org.onosproject.pcepio.types.PceccCapabilityTlv; -import org.onosproject.pcepio.types.PcepLabelDbVerTlv; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.StatefulLspDbVerTlv; -import org.onosproject.pcepio.types.StatefulPceCapabilityTlv; -import org.onosproject.pcepio.types.TedCapabilityTlv; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP open object. - */ -public class PcepOpenObjectVer1 implements PcepOpenObject { - - /* - message format. - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Ver | Flags | Keepalive | DeadTimer | SID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - The OPEN Object format - */ - protected static final Logger log = LoggerFactory.getLogger(PcepOpenObjectVer1.class); - - public static final PcepType MSG_TYPE = PcepType.OPEN; - public static final byte OPEN_OBJECT_VERSION = 1; - public static final byte OPEN_OBJ_TYPE = 1; - public static final byte OPEN_OBJ_CLASS = 1; - public static final byte DEFAULT_KEEPALIVE_TIME = 30; - public static final byte DEFAULT_DEAD_TIME = 120; - public static final short OPEN_OBJ_MINIMUM_LENGTH = 8; - public static final int DEFAULT_GMPLS_CAPABILITY_TLV_IVALUE = 0X0; - public static final int DEFAULT_STATEFUL_PCE_CAPABILITY_TLV_IVALUE = 0xf; - public static final int DEFAULT_PCECC_CAPABILITY_TLV_IVALUE = 0x7; - public static final int DEFAULT_PCEP_LABEL_DB_VER_TLV_IVALUE = 0X0; - - public static final PcepObjectHeader DEFAULT_OPEN_HEADER = new PcepObjectHeader(OPEN_OBJ_CLASS, OPEN_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, OPEN_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader openObjHeader; - private byte keepAliveTime; - private byte deadTime; - private byte sessionId; - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Default constructor. - */ - public PcepOpenObjectVer1() { - this.openObjHeader = null; - this.keepAliveTime = 0; - this.deadTime = 0; - this.sessionId = 0; - this.llOptionalTlv = null; - } - - /** - * Constructor to initialize all member variables. - * - * @param openObjHeader Open Object Header - * @param keepAliveTime Keepalive timer value - * @param deadTime Dead timer value - * @param sessionID session id - * @param llOptionalTlv Optional TLV - */ - public PcepOpenObjectVer1(PcepObjectHeader openObjHeader, byte keepAliveTime, byte deadTime, byte sessionID, - LinkedList<PcepValueType> llOptionalTlv) { - this.openObjHeader = openObjHeader; - this.keepAliveTime = keepAliveTime; - this.deadTime = deadTime; - this.sessionId = sessionID; - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public PcepObjectHeader getOpenObjHeader() { - return this.openObjHeader; - } - - @Override - public void setOpenObjHeader(PcepObjectHeader obj) { - this.openObjHeader = obj; - } - - @Override - public byte getKeepAliveTime() { - return this.keepAliveTime; - } - - @Override - public void setKeepAliveTime(byte value) { - this.keepAliveTime = value; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public byte getDeadTime() { - return this.deadTime; - } - - @Override - public void setDeadTime(byte value) { - this.deadTime = value; - } - - @Override - public byte getSessionId() { - return this.sessionId; - } - - @Override - public void setSessionId(byte value) { - this.sessionId = value; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Reads from channel buffer and returns object of PcepOpenObject. - * - * @param cb of type channel buffer - * @return object of PcepOpenObject - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepOpenObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader openObjHeader; - byte version; - byte keepAliveTime; - byte deadTime; - byte sessionID; - LinkedList<PcepValueType> llOptionalTlv; - - openObjHeader = PcepObjectHeader.read(cb); - version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != OPEN_OBJECT_VERSION) { - throw new PcepParseException("Wrong version: Expected=PcepVersion.PCEP_1(1), got=" + version); - } - /* Keepalive */ - keepAliveTime = cb.readByte(); - - /* DeadTimer */ - deadTime = cb.readByte(); - - /* SID */ - sessionID = cb.readByte(); - - // Optional TLV - llOptionalTlv = parseOptionalTlv(cb); - - return new PcepOpenObjectVer1(openObjHeader, keepAliveTime, deadTime, sessionID, llOptionalTlv); - } - - /** - * Returns linkedlist of optional tlvs. - * - * @param cb of type channel buffer - * @return llOptionalTlv Optional TLV - * @throws PcepParseException if mandatory fields are missing - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOptionalTlv; - - llOptionalTlv = new LinkedList<>(); - - while (4 <= cb.readableBytes()) { - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - - switch (hType) { - case GmplsCapabilityTlv.TYPE: - log.debug("GmplsCapabilityTlv"); - if (GmplsCapabilityTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length received for Gmpls_Capability_Tlv."); - } - int iValue = cb.readInt(); - tlv = new GmplsCapabilityTlv(iValue); - break; - case StatefulPceCapabilityTlv.TYPE: - log.debug("StatefulPceCapabilityTlv"); - if (StatefulPceCapabilityTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length received for StatefulPceCapabilityTlv."); - } - tlv = StatefulPceCapabilityTlv.read(cb); - break; - case PceccCapabilityTlv.TYPE: - log.debug("PceccCapabilityTlv"); - if (PceccCapabilityTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length for PceccCapabilityTlv."); - } - iValue = cb.readInt(); - tlv = new PceccCapabilityTlv(iValue); - break; - case StatefulLspDbVerTlv.TYPE: - log.debug("StatefulLspDbVerTlv"); - if (StatefulLspDbVerTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length received for StatefulLspDbVerTlv."); - } - long lValue = cb.readLong(); - tlv = new StatefulLspDbVerTlv(lValue); - break; - case TedCapabilityTlv.TYPE: - log.debug("TedCapabilityTlv"); - if (TedCapabilityTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length received for TedCapabilityTlv."); - } - iValue = cb.readInt(); - tlv = new TedCapabilityTlv(iValue); - break; - case PcepLabelDbVerTlv.TYPE: - log.debug("PcepLabelDbVerTlv"); - if (PcepLabelDbVerTlv.LENGTH != hLength) { - throw new PcepParseException("Invalid length received for PcepLabelDbVerTlv."); - } - lValue = cb.readLong(); - tlv = new PcepLabelDbVerTlv(lValue); - break; - default: - log.debug("Unsupported TLV: " + hType); - cb.skipBytes(hLength); - continue; - } - - llOptionalTlv.add(tlv); - } - - if (0 < cb.readableBytes()) { - throw new PcepParseException("Optional Tlv parsing error. Extra bytes received."); - } - - return llOptionalTlv; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = openObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Unable to write Open object header."); - } - - cb.writeByte((byte) (OPEN_OBJECT_VERSION << PcepMessageVer1.SHIFT_FLAG)); - cb.writeByte(this.keepAliveTime); - cb.writeByte(this.deadTime); - cb.writeByte(this.sessionId); - - //Pack optional TLV - packOptionalTlv(cb); - - //now write OPEN Object Length - int length = cb.writerIndex() - objStartIndex; - cb.setShort(objLenIndex, (short) length); - //will be helpful during print(). - this.openObjHeader.setObjLen((short) length); - - return length; - } - - /** - * Returns writer index. - * - * @param cb of type channel buffer. - * @return writer index - */ - protected int packOptionalTlv(ChannelBuffer cb) { - int startIndex = cb.writerIndex(); - - LinkedList<PcepValueType> llOptionalTlv = this.llOptionalTlv; - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - if (tlv == null) { - log.debug("TLV is null from OptionalTlv list"); - continue; - } - - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - return cb.writerIndex() - startIndex; - } - - /** - * Builder class for PCPE open object. - */ - public static class Builder implements PcepOpenObject.Builder { - // Pcep open message fields - private boolean bIsHeaderSet = false; - private PcepObjectHeader openObjHeader; - private boolean bIsKeepAliveTimeSet = false; - private byte keepAliveTime; - private boolean bIsDeadTimeSet = false; - private byte deadTime; - private boolean bIsSessionIDSet = false; - private byte sessionID; - private boolean bIsOptionalTlvSet = false; - private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepOpenObject build() throws PcepParseException { - PcepObjectHeader openObjHeader = this.bIsHeaderSet ? this.openObjHeader : DEFAULT_OPEN_HEADER; - byte keepAliveTime = this.bIsKeepAliveTimeSet ? this.keepAliveTime : DEFAULT_KEEPALIVE_TIME; - byte deadTime = this.bIsDeadTimeSet ? this.deadTime : DEFAULT_DEAD_TIME; - - if (!this.bIsSessionIDSet) { - throw new PcepParseException("SessionID is not set (mandatory)"); - } - if (!this.bIsOptionalTlvSet) { - //Add tlv to list - //Add GmplsCapabilityTlv - PcepValueType tlv; - int iValue = DEFAULT_GMPLS_CAPABILITY_TLV_IVALUE; - tlv = new GmplsCapabilityTlv(iValue); - this.llOptionalTlv.add(tlv); - - //Add StatefulPceCapabilityTlv - iValue = DEFAULT_STATEFUL_PCE_CAPABILITY_TLV_IVALUE; - tlv = new StatefulPceCapabilityTlv(iValue); - this.llOptionalTlv.add(tlv); - - } - - if (bIsPFlagSet) { - openObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - openObjHeader.setIFlag(bIFlag); - } - - return new PcepOpenObjectVer1(openObjHeader, keepAliveTime, deadTime, this.sessionID, this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getOpenObjHeader() { - return this.openObjHeader; - } - - @Override - public Builder setOpenObjHeader(PcepObjectHeader obj) { - this.openObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte getKeepAliveTime() { - return this.keepAliveTime; - } - - @Override - public Builder setKeepAliveTime(byte value) { - this.keepAliveTime = value; - this.bIsKeepAliveTimeSet = true; - return this; - } - - @Override - public byte getDeadTime() { - return this.deadTime; - } - - @Override - public Builder setDeadTime(byte value) { - this.deadTime = value; - this.bIsDeadTimeSet = true; - return this; - } - - @Override - public byte getSessionId() { - return this.sessionID; - } - - @Override - public Builder setSessionId(byte value) { - this.sessionID = value; - this.bIsSessionIDSet = true; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - this.bIsOptionalTlvSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectHeader", openObjHeader) - .add("Keepalive", keepAliveTime) - .add("DeadTimer", deadTime) - .add("SessionId", sessionId) - .add("OptionalTlv", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRPObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRPObjectVer1.java deleted file mode 100644 index 7234a467..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRPObjectVer1.java +++ /dev/null @@ -1,445 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepRPObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP RP object. - */ -public class PcepRPObjectVer1 implements PcepRPObject { - - /* - * RP Object. - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags |O|B|R| Pri | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Request-ID-number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepRPObjectVer1.class); - - public static final byte RP_OBJ_TYPE = 1; - public static final byte RP_OBJ_CLASS = 2; - public static final byte RP_OBJECT_VERSION = 1; - public static final short RP_OBJ_MINIMUM_LENGTH = 12; - - public static final int DEFAULT_REQUEST_ID_NUM = 0; - //Signalled , all default values to be checked. - public static final boolean DEFAULT_OFLAG = false; - public static final boolean DEFAULT_BFLAG = false; - public static final boolean DEFAULT_RFLAG = false; - public static final byte DEFAULT_PRIFLAG = 0; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int OFLAG_SHIFT_VALUE = 5; - public static final int BFLAG_SHIFT_VALUE = 4; - public static final int RFLAG_SHIFT_VALUE = 3; - public static final int OFLAG_TEMP_SHIFT_VALUE = 0x20; - public static final int BFLAG_TEMP_SHIFT_VALUE = 0x10; - public static final int RFLAG_TEMP_SHIFT_VALUE = 0x08; - public static final int PRIFLAG_TEMP_SHIFT_VALUE = 0x07; - public static final int BIT_SET = 1; - public static final int BIT_RESET = 0; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - public static final PcepObjectHeader DEFAULT_RP_OBJECT_HEADER = new PcepObjectHeader(RP_OBJ_CLASS, RP_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, RP_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader rpObjHeader; - private int iRequestIdNum; - private boolean bOFlag; - private boolean bBFlag; - private boolean bRFlag; - private byte yPriFlag; // 3bytes - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Constructor to initialize variables. - * - * @param rpObjHeader RP-OBJECT header - * @param iRequestIdNum Request-ID-number - * @param bOFlag O-flag - * @param bBFlag B-flag - * @param bRFlag R-flag - * @param yPriFlag Pri-flag - * @param llOptionalTlv linked list of Optional TLV - */ - public PcepRPObjectVer1(PcepObjectHeader rpObjHeader, int iRequestIdNum, boolean bOFlag, boolean bBFlag, - boolean bRFlag, byte yPriFlag, LinkedList<PcepValueType> llOptionalTlv) { - this.rpObjHeader = rpObjHeader; - this.iRequestIdNum = iRequestIdNum; - this.bOFlag = bOFlag; - this.bBFlag = bBFlag; - this.bRFlag = bRFlag; - this.yPriFlag = yPriFlag; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Sets RP Object header. - * - * @param obj RP Object header - */ - public void setRPObjHeader(PcepObjectHeader obj) { - this.rpObjHeader = obj; - } - - @Override - public void setRequestIdNum(int iRequestIdNum) { - this.iRequestIdNum = iRequestIdNum; - } - - @Override - public void setOFlag(boolean bOFlag) { - this.bOFlag = bOFlag; - } - - @Override - public void setBFlag(boolean bBFlag) { - this.bBFlag = bBFlag; - } - - @Override - public void setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - } - - @Override - public void setPriFlag(byte yPriFlag) { - this.yPriFlag = yPriFlag; - } - - /** - * Returns RP Object header. - * - * @return rpObjHeader - */ - public PcepObjectHeader getRPObjHeader() { - return this.rpObjHeader; - } - - @Override - public int getRequestIdNum() { - return this.iRequestIdNum; - } - - @Override - public boolean getOFlag() { - return this.bOFlag; - } - - @Override - public boolean getBFlag() { - return this.bBFlag; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public byte getPriFlag() { - return this.yPriFlag; - } - - /** - * Reads the channel buffer and returns the object of PcepRPObject. - * - * @param cb of type channel buffer - * @return the object of PcepRPObject - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepRPObject read(ChannelBuffer cb) throws PcepParseException { - log.debug("read"); - PcepObjectHeader rpObjHeader; - int iRequestIdNum; - boolean bOFlag; - boolean bBFlag; - boolean bRFlag; - byte yPriFlag; // 3bytes - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - rpObjHeader = PcepObjectHeader.read(cb); - - //take only LspObject buffer. - ChannelBuffer tempCb = cb.readBytes(rpObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - int iTemp = tempCb.readInt(); - yPriFlag = (byte) (iTemp & PRIFLAG_TEMP_SHIFT_VALUE); - bOFlag = (iTemp & OFLAG_TEMP_SHIFT_VALUE) == OFLAG_TEMP_SHIFT_VALUE; - bBFlag = (iTemp & BFLAG_TEMP_SHIFT_VALUE) == BFLAG_TEMP_SHIFT_VALUE; - bRFlag = (iTemp & RFLAG_TEMP_SHIFT_VALUE) == RFLAG_TEMP_SHIFT_VALUE; - - iRequestIdNum = tempCb.readInt(); - - // parse optional TLV - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepRPObjectVer1(rpObjHeader, iRequestIdNum, bOFlag, bBFlag, bRFlag, yPriFlag, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = rpObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("ObjectLength Index is " + objLenIndex); - } - int iTemp; - iTemp = (yPriFlag); - - iTemp = (bOFlag) ? (iTemp | OFLAG_SHIFT_VALUE) : iTemp; - iTemp = (bBFlag) ? (iTemp | BFLAG_SHIFT_VALUE) : iTemp; - iTemp = (bRFlag) ? (iTemp | RFLAG_SHIFT_VALUE) : iTemp; - - cb.writeInt(iTemp); - cb.writeInt(iRequestIdNum); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - - //will be helpful during print(). - rpObjHeader.setObjLen((short) length); - - cb.setShort(objLenIndex, (short) length); - return cb.writerIndex(); - } - - /** - * Returns list of optional tlvs. - * - * @param cb of type channel buffer. - * @return llOutOptionalTlv linked list of Optional TLV - * @throws PcepParseException if mandatory fields are missing - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - //Currently no optional TLvs, will be added based on requirements. - return llOutOptionalTlv; - } - - /** - * Returns optional tlvs. - * - * @param cb of type channel buffer - * @return llOptionalTlv linked list of Optional TLV - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - return cb.writerIndex(); - } - - /** - * Builder class for PCEP rp object. - */ - public static class Builder implements PcepRPObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsRequestIdNumSet = false; - private boolean bIsOFlagSet = false; - private boolean bIsRFlagset = false; - private boolean bIsBFlagSet = false; - private boolean bIsPriFlagSet = false; - - private PcepObjectHeader rpObjHeader; - private int requestIdNum; - private boolean bOFlag; - private boolean bBFlag; - private boolean bRFlag; - private byte yPriFlag; - private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepRPObject build() { - PcepObjectHeader lspObjHeader = this.bIsHeaderSet ? this.rpObjHeader : DEFAULT_RP_OBJECT_HEADER; - - int requestIdNum = this.bIsRequestIdNumSet ? this.requestIdNum : DEFAULT_REQUEST_ID_NUM; - boolean bOFlag = this.bIsOFlagSet ? this.bOFlag : DEFAULT_OFLAG; - boolean bBFlag = this.bIsBFlagSet ? this.bBFlag : DEFAULT_BFLAG; - boolean bRFlag = this.bIsRFlagset ? this.bRFlag : DEFAULT_RFLAG; - byte yPriFlag = this.bIsPriFlagSet ? this.yPriFlag : DEFAULT_PRIFLAG; - - if (bIsPFlagSet) { - lspObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - lspObjHeader.setIFlag(bIFlag); - } - - return new PcepRPObjectVer1(lspObjHeader, requestIdNum, bOFlag, bBFlag, bRFlag, yPriFlag, llOptionalTlv); - } - - @Override - public PcepObjectHeader getRPObjHeader() { - return this.rpObjHeader; - } - - @Override - public Builder setRPObjHeader(PcepObjectHeader obj) { - this.rpObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getRequestIdNum() { - return this.requestIdNum; - } - - @Override - public Builder setRequestIdNum(int value) { - this.requestIdNum = value; - this.bIsRequestIdNumSet = true; - return this; - } - - @Override - public Builder setOFlag(boolean value) { - this.bOFlag = value; - this.bIsOFlagSet = true; - return this; - } - - @Override - public boolean getBFlag() { - return this.bBFlag; - } - - @Override - public Builder setBFlag(boolean value) { - this.bBFlag = value; - this.bIsBFlagSet = true; - return this; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public Builder setRFlag(boolean value) { - this.bRFlag = value; - this.bIsRFlagset = true; - return this; - } - - @Override - public byte getPriFlag() { - return this.yPriFlag; - } - - @Override - public Builder setPriFlag(byte value) { - this.yPriFlag = value; - this.bIsPriFlagSet = true; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public boolean getOFlag() { - return this.bOFlag; - } - - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectHeader", rpObjHeader) - .add("OFlag", (bOFlag) ? 1 : 0) - .add("BFlag", (bBFlag) ? 1 : 0) - .add("RFlag", (bRFlag) ? 1 : 0) - .add("PriFlag", yPriFlag) - .add("RequestIdNumber", iRequestIdNum) - .add("OptionalTlv", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepReportMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepReportMsgVer1.java deleted file mode 100644 index 26e48dbd..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepReportMsgVer1.java +++ /dev/null @@ -1,309 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepReportMsg; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepStateReport; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP report message. - */ -class PcepReportMsgVer1 implements PcepReportMsg { - - // Pcep version: 1 - - /* - * The format of the PCRpt message is as follows: - * <PCRpt Message> ::= <Common Header> - * <state-report-list> - *Where: - * <state-report-list> ::= <state-report>[<state-report-list>] - * <state-report> ::= [<SRP>] - * <LSP> - * <path> - * Where: - * <path> ::= <ERO><attribute-list>[<RRO>] - * Where: - * <attribute-list> is defined in [RFC5440] and extended by PCEP extensions. - * where: - * <attribute-list> ::=[<LSPA>] - * [<BANDWIDTH>] - * [<metric-list>] - * [<IRO>] - * <metric-list> ::=<METRIC>[<metric-list>] - */ - protected static final Logger log = LoggerFactory.getLogger(PcepReportMsgVer1.class); - - public static final byte PACKET_VERSION = 1; - //PACKET_MINIMUM_LENGTH = CommonHeaderLen(4)+LspObjMinLen(8)+EroObjMinLen(12) - public static final int PACKET_MINIMUM_LENGTH = 24; - public static final PcepType MSG_TYPE = PcepType.REPORT; - public static final byte REPORT_OBJ_TYPE = 1; - //Optional TLV - private LinkedList<PcepStateReport> llStateReportList; - - public static final PcepReportMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading PCEP report message from channel buffer. - */ - static class Reader implements PcepMessageReader<PcepReportMsg> { - - LinkedList<PcepStateReport> llStateReportList; - - @Override - public PcepReportMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Received packet size " + cb.readableBytes() - + " is less than the expected size: " + PACKET_MINIMUM_LENGTH); - } - llStateReportList = new LinkedList<>(); - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - - if (version != PACKET_VERSION) { - throw new PcepParseException(" Invalid version: " + version); - } - - byte type = cb.readByte(); - - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Unexpected type: " + type); - } - - short length = cb.readShort(); - - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " - + length); - } - // parse state report list - parseStateReportList(cb); - return new PcepReportMsgVer1(llStateReportList); - } - - // Parse State Report list - public void parseStateReportList(ChannelBuffer cb) throws PcepParseException { - - /* - <state-report-list> - Where: - <state-report-list> ::= <state-report>[<state-report-list>] - <state-report> ::= [<SRP>] - <LSP> - <path> - Where: - <path> ::= <ERO><attribute-list>[<RRO>] - Where: - <attribute-list> is defined in [RFC5440] and extended by PCEP extensions. - - */ - - while (0 < cb.readableBytes()) { - - PcepStateReport pcestateReq = new PcepStateReportVer1(); - - /* - * SRP is optional - * Check whether SRP Object is available, if yes store it. - * First read common object header and check the Object Class whether it is SRP or LSP - * If it is LSP then store only LSP. So, SRP is optional. then read path and store. - * If it is SRP then store SRP and then read LSP, path and store them. - */ - - //mark the reader index to reset - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - - byte yObjectClass = tempObjHeader.getObjClass(); - byte yObjectType = tempObjHeader.getObjType(); - - //reset reader index - cb.resetReaderIndex(); - //If SRP present then store it. - if ((PcepSrpObjectVer1.SRP_OBJ_CLASS == yObjectClass) - && (PcepSrpObjectVer1.SRP_OBJ_TYPE == yObjectType)) { - PcepSrpObject srpObj; - srpObj = PcepSrpObjectVer1.read(cb); - pcestateReq.setSrpObject(srpObj); - } - - //store LSP object - PcepLspObject lspObj; - lspObj = PcepLspObjectVer1.read(cb); - pcestateReq.setLspObject(lspObj); - - //store path - PcepStateReport.PcepMsgPath msgPath = new PcepStateReportVer1().new PcepMsgPath().read(cb); - pcestateReq.setMsgPath(msgPath); - - llStateReportList.add(pcestateReq); - } - } - } - - /** - * Constructor to initialize State Report List. - * - * @param llStateReportList list of type Pcep state report - */ - PcepReportMsgVer1(LinkedList<PcepStateReport> llStateReportList) { - this.llStateReportList = llStateReportList; - } - - /** - * Builder class for PCEP Report message. - */ - static class Builder implements PcepReportMsg.Builder { - // Pcep report message fields - LinkedList<PcepStateReport> llStateReportList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.REPORT; - } - - @Override - public PcepReportMsg build() { - return new PcepReportMsgVer1(this.llStateReportList); - } - - @Override - public LinkedList<PcepStateReport> getStateReportList() { - return this.llStateReportList; - } - - @Override - public Builder setStateReportList(LinkedList<PcepStateReport> ll) { - this.llStateReportList = ll; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing PCEP report message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepReportMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepReportMsgVer1 message) throws PcepParseException { - - int startIndex = cb.writerIndex(); - - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - - // message type - cb.writeByte(MSG_TYPE.getType()); - - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - - cb.writeShort((short) 0); - ListIterator<PcepStateReport> listIterator = message.llStateReportList.listIterator(); - - while (listIterator.hasNext()) { - - PcepStateReport stateRpt = listIterator.next(); - PcepSrpObject srpObj = stateRpt.getSrpObject(); - - //SRP object is optional - if (srpObj != null) { - srpObj.write(cb); - } - - //LSP object is mandatory - PcepLspObject lspObj = stateRpt.getLspObject(); - if (lspObj == null) { - throw new PcepParseException("LSP Object is mandatory object for PcRpt message."); - } else { - lspObj.write(cb); - } - - //path is mandatory - PcepStateReport.PcepMsgPath msgPath = stateRpt.getMsgPath(); - if (msgPath == null) { - throw new PcepParseException("Message path is mandatory object for PcRpt message."); - } else { - msgPath.write(cb); - } - } - - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public LinkedList<PcepStateReport> getStateReportList() { - return this.llStateReportList; - } - - @Override - public void setStateReportList(LinkedList<PcepStateReport> ll) { - this.llStateReportList = ll; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("StateReportList", llStateReportList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java deleted file mode 100644 index 4df42e05..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java +++ /dev/null @@ -1,345 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepRroObject; -import org.onosproject.pcepio.types.IPv4SubObject; -import org.onosproject.pcepio.types.IPv6SubObject; -import org.onosproject.pcepio.types.LabelSubObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP RRO object. - */ -public class PcepRroObjectVer1 implements PcepRroObject { - - /* - * rfc3209 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // (Subobjects) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Each subobject has its own Length - field. The length contains the total length of the subobject in - bytes, including the Type and Length fields. The length MUST always - be a multiple of 4, and at least 4. - - An empty RRO with no subobjects is considered illegal. - Three kinds of subobjects are currently defined. - - Subobject 1: IPv4 address - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | IPv4 address (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 address (continued) | Prefix Length | Flags | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 2: IPv6 address - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | IPv6 address (16 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | Prefix Length | Flags | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 3, Label - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | Flags | C-Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Contents of Label Object | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(PcepRroObjectVer1.class); - - public static final byte RRO_OBJ_TYPE = 1; - public static final byte RRO_OBJ_CLASS = 8; - public static final byte RRO_OBJECT_VERSION = 1; - public static final short RRO_OBJ_MINIMUM_LENGTH = 12; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int YTYPE_SHIFT_VALUE = 0x7F; - - static final PcepObjectHeader DEFAULT_RRO_OBJECT_HEADER = new PcepObjectHeader(RRO_OBJ_CLASS, RRO_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, RRO_OBJ_MINIMUM_LENGTH); - - private short rroObjType = 0; - private byte length; - private byte prefixLength; - private byte resvd; - PcepObjectHeader rroObjHeader; - private LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - /** - * Reset variables. - */ - public PcepRroObjectVer1() { - this.rroObjHeader = null; - this.rroObjType = 0; - this.length = 0; - } - - /** - * constructor to initialize parameters for RRO object. - * - * @param rroObjHeader RRO object header - * @param llSubObjects list of sub objects - */ - public PcepRroObjectVer1(PcepObjectHeader rroObjHeader, LinkedList<PcepValueType> llSubObjects) { - this.rroObjHeader = rroObjHeader; - this.llSubObjects = llSubObjects; - } - - /** - * Returns PCEP RRO Object Header. - * - * @return rroObjHeader RRO Object header - */ - public PcepObjectHeader getRroObjHeader() { - return this.rroObjHeader; - } - - /** - * Sets PCEP RRO Object Header. - * - * @param obj Object header - */ - public void setRroObjHeader(PcepObjectHeader obj) { - this.rroObjHeader = obj; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public void setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - } - - /** - * Reads the channel buffer and returns object of PcepRroObject. - * - * @param cb of type channel buffer - * @return object of PcepRroObject - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepRroObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader rroObjHeader; - LinkedList<PcepValueType> llSubObjects; - rroObjHeader = PcepObjectHeader.read(cb); - - //take only RroObject buffer. - ChannelBuffer tempCb = cb.readBytes(rroObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - llSubObjects = parseSubObjects(tempCb); - - return new PcepRroObjectVer1(rroObjHeader, llSubObjects); - } - - /** - * Returns list of sub objects. - * - * @param cb of type channel buffer - * @return list of sub objects - * @throws PcepParseException when fails to parse list of sub objects - */ - protected static LinkedList<PcepValueType> parseSubObjects(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - while (0 < cb.readableBytes()) { - - //check the Type of the Sub objects - byte yType = cb.readByte(); - yType = (byte) (yType & (YTYPE_SHIFT_VALUE)); - byte hLength = cb.readByte(); - - PcepValueType subObj; - - switch (yType) { - - case IPv4SubObject.TYPE: - subObj = IPv4SubObject.read(cb); - break; - case IPv6SubObject.TYPE: - byte[] ipv6Value = new byte[IPv6SubObject.VALUE_LENGTH]; - cb.readBytes(ipv6Value, 0, IPv6SubObject.VALUE_LENGTH); - subObj = new IPv6SubObject(ipv6Value); - break; - case LabelSubObject.TYPE: - subObj = LabelSubObject.read(cb); - break; - default: - throw new PcepParseException(" Unexpected sub object. Type: " + (int) yType); - } - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - llSubObjects.add(subObj); - } - - return llSubObjects; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = rroObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException(" object Length Index" + objLenIndex); - } - - ListIterator<PcepValueType> listIterator = llSubObjects.listIterator(); - - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - cb.setShort(objLenIndex, (short) length); - //will be helpful during print(). - rroObjHeader.setObjLen((short) length); - - //As per RFC the length of object should be multiples of 4 - int pad = length % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - objLenIndex = cb.writerIndex(); - return objLenIndex; - } - - /** - * Builder class for PCEP RRO object. - */ - public static class Builder implements PcepRroObject.Builder { - private boolean bIsHeaderSet = false; - - private PcepObjectHeader rroObjHeader; - LinkedList<PcepValueType> llSubObjects = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepRroObject build() { - - PcepObjectHeader rroObjHeader = this.bIsHeaderSet ? this.rroObjHeader : DEFAULT_RRO_OBJECT_HEADER; - - if (bIsPFlagSet) { - rroObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - rroObjHeader.setIFlag(bIFlag); - } - return new PcepRroObjectVer1(rroObjHeader, this.llSubObjects); - } - - @Override - public PcepObjectHeader getRroObjHeader() { - return this.rroObjHeader; - } - - @Override - public Builder setRroObjHeader(PcepObjectHeader obj) { - this.rroObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getSubObjects() { - return this.llSubObjects; - } - - @Override - public Builder setSubObjects(LinkedList<PcepValueType> llSubObjects) { - this.llSubObjects = llSubObjects; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("SubObjects", llSubObjects) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepSrpObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepSrpObjectVer1.java deleted file mode 100644 index 9c75b3a6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepSrpObjectVer1.java +++ /dev/null @@ -1,392 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.SymbolicPathNameTlv; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP SRP obejct. - */ -public class PcepSrpObjectVer1 implements PcepSrpObject { - - /* - * ref : draft-ietf-pce-stateful-pce-10, section : 7.2 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags |R| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | SRP-ID-number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(PcepSrpObjectVer1.class); - - public static final byte SRP_OBJ_TYPE = 1; - public static final byte SRP_OBJ_CLASS = 33; - public static final byte SRP_OBJECT_VERSION = 1; - public static final short SRP_OBJ_MINIMUM_LENGTH = 12; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final boolean DEFAULT_RFLAG = false; - - static final PcepObjectHeader DEFAULT_SRP_OBJECT_HEADER = new PcepObjectHeader(SRP_OBJ_CLASS, SRP_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, SRP_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader srpObjHeader; - private static int flags; - private boolean bRFlag; - private int srpId; - - //Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - public static final byte BBIT_SET = 1; - public static final byte BBIT_RESET = 0; - - /** - * Constructor to initialize member variables. - * - * @param srpObjHeader srp object header - * @param bRFlag R flag - * @param srpID srp Id - * @param llOptionalTlv list of optional tlv - */ - public PcepSrpObjectVer1(PcepObjectHeader srpObjHeader, boolean bRFlag, int srpID, - LinkedList<PcepValueType> llOptionalTlv) { - - this.srpObjHeader = srpObjHeader; - this.bRFlag = bRFlag; - this.srpId = srpID; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * sets the SRP object header. - * - * @param obj srp object header - */ - public void setSrpObjHeader(PcepObjectHeader obj) { - this.srpObjHeader = obj; - } - - @Override - public void setSrpID(int srpID) { - this.srpId = srpID; - } - - @Override - public void setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - } - - /** - * Returns SRP object header. - * - * @return srpObjHeader - */ - public PcepObjectHeader getSrpObjHeader() { - return this.srpObjHeader; - } - - @Override - public int getSrpID() { - return this.srpId; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - /** - * Reads from channel buffer and returns instance of PCEP SRP object. - * - * @param cb of channel buffer. - * @return PCEP SRP object - * @throws PcepParseException when srp object is not received in channel buffer - */ - public static PcepSrpObject read(ChannelBuffer cb) throws PcepParseException { - - log.debug("SrpObject::read"); - PcepObjectHeader srpObjHeader; - boolean bRFlag; - - int srpID; - int flags; - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - srpObjHeader = PcepObjectHeader.read(cb); - - if (srpObjHeader.getObjClass() != SRP_OBJ_CLASS) { - throw new PcepParseException("SRP object expected. But received " + srpObjHeader.getObjClass()); - } - - //take only SrpObject buffer. - ChannelBuffer tempCb = cb.readBytes(srpObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH); - flags = tempCb.readInt(); - bRFlag = 0 < flags; - srpID = tempCb.readInt(); - - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepSrpObjectVer1(srpObjHeader, bRFlag, srpID, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = srpObjHeader.write(cb); - - //write Flags - byte bFlag; - - bFlag = (bRFlag) ? BBIT_SET : BBIT_RESET; - - cb.writeInt(bFlag); - - //write SrpId - cb.writeInt(srpId); - - // Add optional TLV - if (!packOptionalTlv(cb)) { - throw new PcepParseException("Failed to write srp tlv to channel buffer."); - } - - //now write SRP Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - - return cb.writerIndex(); - } - - /** - * Parse Optional TLvs from the channel buffer. - * - * @param cb of type channel buffer - * @return list of optional tlvs - * @throws PcepParseException when unsupported tlv is received in srp object - */ - public static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - - switch (hType) { - - case SymbolicPathNameTlv.TYPE: - tlv = SymbolicPathNameTlv.read(cb, hLength); - cb.skipBytes(hLength); - break; - - default: - throw new PcepParseException("Unsupported TLV received in SRP Object."); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - llOutOptionalTlv.add(tlv); - } - - return llOutOptionalTlv; - } - - /** - * Writes optional tlvs to channel buffer. - * - * @param cb of type channel buffer - * @return true if writing optional tlv to channel buffer is success. - */ - protected boolean packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("tlv is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - - return true; - } - - /** - * Builder class for PCEP srp Object. - */ - public static class Builder implements PcepSrpObject.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsSrpIdset = false; - private boolean bIsRFlagSet = false; - - private PcepObjectHeader srpObjHeader; - private int srpId; - private boolean bRFlag; - LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepSrpObject build() throws PcepParseException { - PcepObjectHeader srpObjHeader = this.bIsHeaderSet ? this.srpObjHeader : DEFAULT_SRP_OBJECT_HEADER; - - boolean bRFlag = this.bIsRFlagSet ? this.bRFlag : DEFAULT_RFLAG; - - if (!this.bIsSrpIdset) { - throw new PcepParseException("SrpID not set while building SRP Object."); - } - - if (bIsPFlagSet) { - srpObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - srpObjHeader.setIFlag(bIFlag); - } - - return new PcepSrpObjectVer1(srpObjHeader, bRFlag, this.srpId, this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getSrpObjHeader() { - return this.srpObjHeader; - } - - @Override - public Builder setSrpObjHeader(PcepObjectHeader obj) { - this.srpObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getSrpID() { - return this.srpId; - } - - @Override - public Builder setSrpID(int srpID) { - this.srpId = srpID; - this.bIsSrpIdset = true; - return this; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public Builder setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - this.bIsRFlagSet = true; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("RFlag", bRFlag) - .add("SRPID", srpId) - .add("OptionalTlvList", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepStateReportVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepStateReportVer1.java deleted file mode 100644 index ce589bc0..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepStateReportVer1.java +++ /dev/null @@ -1,421 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepBandwidthObject; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepRroObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepStateReport; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provide the State Report for the Pcep Report Message. - * Reference :PCE extensions for stateful draft-ietf-pce-stateful-pce-10. - */ -public class PcepStateReportVer1 implements PcepStateReport { - /* - * <state-report> ::= [<SRP>] - <LSP> - <path> - Where: - <path> ::= <ERO><attribute-list>[<RRO>] - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepStateReport.class); - - public static final int OBJECT_HEADER_LENGTH = 4; - - /** - * Provides PCEP Message path for report message. - */ - public class PcepMsgPath implements PcepStateReport.PcepMsgPath { - - /* - * <path> ::= <ERO><attribute-list>[<RRO>] - */ - - //PcepEroObject - private PcepEroObject eroObj; - private boolean isEroObjectSet; - //PcepAttribute List - private PcepAttribute attrList; - private boolean isAttributeListSet; - //PcepRroObject - private PcepRroObject rroObj; - private boolean isRroObjectSet; - private PcepBandwidthObject bandwidth; - private boolean isBandwidthObjectSet; - - /** - * Constructor to reset the parameters. - */ - public PcepMsgPath() { - eroObj = null; - attrList = null; - rroObj = null; - this.isEroObjectSet = false; - this.isAttributeListSet = false; - this.isRroObjectSet = false; - this.isBandwidthObjectSet = false; - } - - /** - * Constructor to initialize the parameters from PCEP Message path. - * - * @param eroObj PCEP ERO Object - * @param attrList PCEP Attribute - * @param rroObj PCEP Rro Object - * @param bandwidth PCEP bandwidth object - */ - public PcepMsgPath(PcepEroObject eroObj, PcepAttribute attrList, PcepRroObject rroObj, - PcepBandwidthObject bandwidth) { - - this.eroObj = eroObj; - this.attrList = attrList; - this.rroObj = rroObj; - this.bandwidth = bandwidth; - if (rroObj == null) { - this.isRroObjectSet = false; - } else { - this.isRroObjectSet = true; - } - if (eroObj == null) { - this.isEroObjectSet = false; - } else { - this.isEroObjectSet = true; - } - if (attrList == null) { - this.isAttributeListSet = false; - } else { - this.isAttributeListSet = true; - } - if (bandwidth == null) { - this.isBandwidthObjectSet = false; - } else { - this.isBandwidthObjectSet = true; - } - } - - /** - * Returns PcepEroObject. - * - * @return eroObj PCEP ERO Object - */ - @Override - public PcepEroObject getEroObject() { - return this.eroObj; - } - - /** - * Returns PCEP Attribute. - * - * @return attrList Attribute list - */ - @Override - public PcepAttribute getPcepAttribute() { - return this.attrList; - } - - /** - * Returns PcepRroObject. - * - * @return rroObj PCEP RRO Object - */ - @Override - public PcepRroObject getRroObject() { - return this.rroObj; - } - - @Override - public PcepBandwidthObject getBandwidthObject() { - return this.bandwidth; - } - - @Override - public void setEroObject(PcepEroObject eroObj) { - this.eroObj = eroObj; - } - - @Override - public void setPcepAttribute(PcepAttribute attrList) { - this.attrList = attrList; - } - - @Override - public void setRroObject(PcepRroObject rroObj) { - this.rroObj = rroObj; - } - - @Override - public void setBandwidthObject(PcepBandwidthObject bandwidth) { - this.bandwidth = bandwidth; - } - - /** - * Reads all the Objects for PCEP Message Path. - * - * @param bb of type channel buffer - * @return PCEP Message path - * @throws PcepParseException when fails to read pcep message path - */ - @Override - public PcepMsgPath read(ChannelBuffer bb) throws PcepParseException { - - PcepEroObject eroObj; - PcepAttribute attrList; - PcepRroObject rroObj = null; - PcepBandwidthObject bandwidth = null; - - eroObj = PcepEroObjectVer1.read(bb); - attrList = PcepAttributeVer1.read(bb); - - boolean bBreakWhile = false; - while (0 < bb.readableBytes()) { - - if (bb.readableBytes() < OBJECT_HEADER_LENGTH) { - break; - } - bb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(bb); - bb.resetReaderIndex(); - byte yObjClass = tempObjHeader.getObjClass(); - - switch (yObjClass) { - case PcepRroObjectVer1.RRO_OBJ_CLASS: - rroObj = PcepRroObjectVer1.read(bb); - break; - case PcepInterLayerObjectVer1.INTER_LAYER_OBJ_CLASS: - bb.skipBytes(tempObjHeader.getObjLen()); - break; - case PcepBandwidthObjectVer1.BANDWIDTH_OBJ_CLASS: - bandwidth = PcepBandwidthObjectVer1.read(bb); - break; - default: - //Otherthan above objects handle those objects in caller. - bBreakWhile = true; - break; - } - if (bBreakWhile) { - break; - } - } - return new PcepMsgPath(eroObj, attrList, rroObj, bandwidth); - } - - /** - * Writes all the objects for PCEP message path. - * - * @param bb of type channel buffer. - * @return object length index - * @throws PcepParseException when fails to write to channel buffer - */ - @Override - public int write(ChannelBuffer bb) throws PcepParseException { - int iLenStartIndex = bb.writerIndex(); - - //write Object header - if (this.isEroObjectSet) { - this.eroObj.write(bb); - } else { - throw new PcepParseException("Ero object is not set in path"); - } - - if (this.isAttributeListSet) { - this.attrList.write(bb); - } - - // RRO is optional check and read - if (this.isRroObjectSet) { - this.rroObj.write(bb); - // bandwidth should come along with RRO. - if (this.isBandwidthObjectSet) { - this.bandwidth.write(bb); - } - } - return bb.writerIndex() - iLenStartIndex; - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - if (attrList != null) { - toStrHelper.add("AttributeList", attrList); - } - if (rroObj instanceof PcepRroObjectVer1) { - toStrHelper.add("RroObject", rroObj); - } - if (bandwidth instanceof PcepBandwidthObjectVer1) { - toStrHelper.add("bandwidthObject", bandwidth); - } - return toStrHelper.toString(); - } - } - - //SRP Object - private PcepSrpObject srpObject; - //LSP Object - private PcepLspObject lspObject; - //PcepMsgPath - private PcepStateReport.PcepMsgPath msgPath; - - /** - * Constructor to reset objects. - */ - public PcepStateReportVer1() { - this.srpObject = null; - this.lspObject = null; - this.msgPath = null; - } - - public PcepStateReportVer1(PcepSrpObject srpObject, PcepLspObject lspObject, PcepStateReport.PcepMsgPath msgPath) { - this.srpObject = srpObject; - this.lspObject = lspObject; - this.msgPath = msgPath; - } - - @Override - public PcepSrpObject getSrpObject() { - return srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return lspObject; - } - - @Override - public PcepStateReport.PcepMsgPath getMsgPath() { - return msgPath; - } - - @Override - public void setSrpObject(PcepSrpObject srpObj) { - this.srpObject = srpObj; - } - - @Override - public void setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - } - - @Override - public void setMsgPath(PcepStateReport.PcepMsgPath msgPath) { - this.msgPath = msgPath; - } - - /** - * Builder class for PCEP state report. - */ - public static class Builder implements PcepStateReport.Builder { - - private boolean bIsSRPObjectSet = false; - private boolean bIsLSPObjectSet = false; - private boolean bIsPcepMsgPathSet = false; - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP Attribute list - private PcepStateReport.PcepMsgPath msgPath; - - @Override - public PcepStateReport build() throws PcepParseException { - - //PCEP SRP Object - PcepSrpObject srpObject = null; - //PCEP LSP Object - PcepLspObject lspObject = null; - //PCEP Attribute list - PcepStateReport.PcepMsgPath msgPath = null; - - if (this.bIsSRPObjectSet) { - srpObject = this.srpObject; - } - - if (!this.bIsLSPObjectSet) { - throw new PcepParseException(" LSP Object NOT Set while building PcepStateReport."); - } else { - lspObject = this.lspObject; - } - if (!this.bIsPcepMsgPathSet) { - throw new PcepParseException(" Message Path NOT Set while building PcepStateReport."); - } else { - msgPath = this.msgPath; - } - - return new PcepStateReportVer1(srpObject, lspObject, msgPath); - } - - @Override - public PcepSrpObject getSrpObject() { - return this.srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return this.lspObject; - } - - @Override - public PcepStateReport.PcepMsgPath getMsgPath() { - return this.msgPath; - } - - @Override - public Builder setSrpObject(PcepSrpObject srpobj) { - this.srpObject = srpobj; - this.bIsSRPObjectSet = true; - return this; - } - - @Override - public Builder setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - this.bIsLSPObjectSet = true; - return this; - } - - @Override - public Builder setMsgPath(PcepStateReport.PcepMsgPath msgPath) { - this.msgPath = msgPath; - this.bIsPcepMsgPathSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("SrpObject", srpObject) - .add("LspObject", lspObject) - .add("MsgPath", msgPath) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEObjectVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEObjectVer1.java deleted file mode 100644 index b1c69406..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEObjectVer1.java +++ /dev/null @@ -1,506 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepTEObject; -import org.onosproject.pcepio.types.LocalTENodeDescriptorsTlv; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.RemoteTENodeDescriptorsTlv; -import org.onosproject.pcepio.types.RoutingUniverseTlv; -import org.onosproject.pcepio.types.TELinkAttributesTlv; -import org.onosproject.pcepio.types.TELinkDescriptorsTlv; -import org.onosproject.pcepio.types.TENodeAttributesTlv; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP TE Object. - */ -public class PcepTEObjectVer1 implements PcepTEObject { - /* - * - reference: PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02. - TE Object-Class is [TBD6]. - - Two Object-Type values are defined for the TE object: - - o TE Node: TE Object-Type is 1. - - o TE Link: TE Object-Type is 2. - - The format of the TE object body is as follows: - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Protocol-ID | Flag |R|S| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | TE-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepTEObjectVer1.class); - - public static final byte TE_OBJ_TYPE_NODE_VALUE = 1; - public static final byte TE_OBJ_TYPE_LINK_VALUE = 2; - - public static final byte TE_OBJ_CLASS = 101; //TBD6 in RFC. - public static final byte TE_OBJECT_VERSION = 1; - - // TE_OBJ_MINIMUM_LENGTH = TEObjectHeaderLen(4)+ TEObjectLen(8) - public static final short TE_OBJ_MINIMUM_LENGTH = 12; - - // Signaled ,all default values to be checked. - public static final byte DEFAULT_PROTOCOL_ID = 1; //IS-IS Level 1 - public static final boolean DEFAULT_R_FLAG = false; - public static final boolean DEFAULT_S_FLAG = false; - public static final int DEFAULT_TE_ID = 0; - - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int RIGHT_SHIFT_ONE = 1; - public static final int RIGHT_FIRST_FLAG = 0x1; - public static final int FLAG_SET_R_FLAG = 0x2; - public static final int FLAG_SET_S_FLAG = 0x1; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final int MINIMUM_TLV_HEADER_LENGTH = 4; - - public static final PcepObjectHeader DEFAULT_TE_OBJECT_HEADER = new PcepObjectHeader(TE_OBJ_CLASS, - TE_OBJ_TYPE_NODE_VALUE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - TE_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader teObjHeader; - private byte yProtocolId; - // 2-flags - private boolean bRFlag; - private boolean bSFlag; - private int iTEId; - // Optional TLV - private LinkedList<PcepValueType> llOptionalTlv; - - /** - * Constructor to initialize variables. - * - * @param teObjHeader TE Object header - * @param yProtocolId Protocol-ID - * @param bRFlag R-flag - * @param bSFlag S-flag - * @param iTEId TE-ID - * @param llOptionalTlv linked list of Optional TLV - */ - public PcepTEObjectVer1(PcepObjectHeader teObjHeader, byte yProtocolId, boolean bRFlag, boolean bSFlag, int iTEId, - LinkedList<PcepValueType> llOptionalTlv) { - - this.teObjHeader = teObjHeader; - this.yProtocolId = yProtocolId; - this.bRFlag = bRFlag; - this.bSFlag = bSFlag; - this.iTEId = iTEId; - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public PcepObjectHeader getTEObjHeader() { - return this.teObjHeader; - } - - @Override - public void setTEObjHeader(PcepObjectHeader obj) { - this.teObjHeader = obj; - } - - @Override - public byte getProtocolId() { - return this.yProtocolId; - } - - @Override - public void setProtocolId(byte yProtId) { - this.yProtocolId = yProtId; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public void setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - } - - @Override - public boolean getSFlag() { - return this.bSFlag; - } - - @Override - public void setSFlag(boolean bSFlag) { - this.bSFlag = bSFlag; - } - - @Override - public int getTEId() { - return this.iTEId; - } - - @Override - public void setTEId(int iTEId) { - this.iTEId = iTEId; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Reads from the channel buffer and returns Object of PcepTEObject. - * - * @param cb of type channel buffer - * @return Object of PcepTEObject - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepTEObject read(ChannelBuffer cb) throws PcepParseException { - log.debug("read"); - - PcepObjectHeader teObjHeader; - byte yProtocolId; - // 2-flags - boolean bRFlag; - boolean bSFlag; - int iTEId; - LinkedList<PcepValueType> llOptionalTlv; - - teObjHeader = PcepObjectHeader.read(cb); - - //take only TEObject buffer. - ChannelBuffer tempCb = cb.readBytes(teObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - yProtocolId = tempCb.readByte(); - //ignore first two bytes of Flags - tempCb.readShort(); - - Integer iTemp = (int) tempCb.readByte(); //read 3rd byte Flag - bSFlag = (iTemp & FLAG_SET_S_FLAG) == FLAG_SET_S_FLAG; - bRFlag = (iTemp & FLAG_SET_R_FLAG) == FLAG_SET_R_FLAG; - - iTEId = tempCb.readInt(); - - // parse optional TLV - llOptionalTlv = parseOptionalTlv(tempCb); - - return new PcepTEObjectVer1(teObjHeader, yProtocolId, bRFlag, bSFlag, iTEId, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - int objLenIndex = teObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("ObjectLength Index is " + objLenIndex); - } - - //write Protocol ID - cb.writeByte(this.yProtocolId); - - //write Flag - cb.writeShort(0); - - byte bTemp = 0; - if (bSFlag) { - bTemp = FLAG_SET_S_FLAG; - } - - if (bRFlag) { - bTemp = (byte) (bTemp | FLAG_SET_R_FLAG); - } - cb.writeByte(bTemp); - - //write TEId - cb.writeInt(iTEId); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - - //will be helpful during print(). - teObjHeader.setObjLen((short) length); - - cb.setShort(objLenIndex, (short) length); - - return cb.writerIndex(); - } - - /** - * Returns Linked list of PCEP Value Type. - * - * @param cb of channel buffer - * @return Linked list of PCEP Value Type - * @throws PcepParseException if mandatory fields are missing - */ - protected static LinkedList<PcepValueType> parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList<PcepValueType> llOutOptionalTlv; - - llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_TLV_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - long lValue = 0; - - switch (hType) { - - case RoutingUniverseTlv.TYPE: - lValue = cb.readLong(); - tlv = new RoutingUniverseTlv(lValue); - break; - case LocalTENodeDescriptorsTlv.TYPE: - tlv = LocalTENodeDescriptorsTlv.read(cb, hLength); - break; - case RemoteTENodeDescriptorsTlv.TYPE: - tlv = RemoteTENodeDescriptorsTlv.read(cb, hLength); - break; - case TELinkDescriptorsTlv.TYPE: - tlv = TELinkDescriptorsTlv.read(cb, hLength); - break; - case TENodeAttributesTlv.TYPE: - tlv = TENodeAttributesTlv.read(cb, hLength); - break; - case TELinkAttributesTlv.TYPE: - tlv = TELinkAttributesTlv.read(cb, hLength); - break; - default: - throw new PcepParseException("Unsupported TLV type :" + hType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - - llOutOptionalTlv.add(tlv); - } - - if (0 < cb.readableBytes()) { - - throw new PcepParseException("Optional Tlv parsing error. Extra bytes received."); - } - return llOutOptionalTlv; - } - - /** - * Returns the writer index. - * - * @param cb of type channel buffer - * @return the writer index. - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator<PcepValueType> listIterator = llOptionalTlv.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("TLV is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - return cb.writerIndex(); - } - - /** - * Builder class for PCEP te object. - */ - public static class Builder implements PcepTEObject.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsProtocolIdSet = false; - private boolean bIsRFlagSet = false; - private boolean bIsSFlagSet = false; - private boolean bIsTEIdSet = false; - - private PcepObjectHeader teObjHeader; - private byte yProtocolId; - private boolean bRFlag; - private boolean bSFlag; - private int iTEId; - private LinkedList<PcepValueType> llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepTEObject build() { - PcepObjectHeader teObjHeader = this.bIsHeaderSet ? this.teObjHeader : DEFAULT_TE_OBJECT_HEADER; - - byte yProtocolId = this.bIsProtocolIdSet ? this.yProtocolId : DEFAULT_PROTOCOL_ID; - boolean bRFlag = this.bIsRFlagSet ? this.bRFlag : DEFAULT_R_FLAG; - boolean bSFlag = this.bIsSFlagSet ? this.bSFlag : DEFAULT_S_FLAG; - int iTEId = this.bIsTEIdSet ? this.iTEId : DEFAULT_TE_ID; - - if (bIsPFlagSet) { - teObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - teObjHeader.setIFlag(bIFlag); - } - - return new PcepTEObjectVer1(teObjHeader, yProtocolId, bRFlag, bSFlag, iTEId, llOptionalTlv); - - } - - @Override - public PcepObjectHeader getTEObjHeader() { - return this.teObjHeader; - } - - @Override - public Builder setTEObjHeader(PcepObjectHeader obj) { - this.teObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte getProtocolId() { - return this.yProtocolId; - } - - @Override - public Builder setProtocolId(byte yProtId) { - this.yProtocolId = yProtId; - this.bIsProtocolIdSet = true; - return this; - } - - @Override - public boolean getRFlag() { - return this.bRFlag; - } - - @Override - public Builder setRFlag(boolean bRFlag) { - this.bRFlag = bRFlag; - this.bIsRFlagSet = true; - return this; - } - - @Override - public boolean getSFlag() { - return this.bSFlag; - } - - @Override - public Builder setSFlag(boolean bSFlag) { - this.bSFlag = bSFlag; - this.bIsSFlagSet = true; - return this; - } - - @Override - public int getTEId() { - return this.iTEId; - } - - @Override - public Builder setTEId(int iTEId) { - this.iTEId = iTEId; - this.bIsTEIdSet = true; - return this; - } - - @Override - public LinkedList<PcepValueType> getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectHeader", teObjHeader) - .add("ProtocolId", yProtocolId) - .add("RFlag", (bRFlag) ? 1 : 0) - .add("SFlag", (bSFlag) ? 1 : 0) - .add("TeId", iTEId) - .add("OptionalTlv", llOptionalTlv) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEReportMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEReportMsgVer1.java deleted file mode 100644 index 92833080..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEReportMsgVer1.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepTEObject; -import org.onosproject.pcepio.protocol.PcepTEReportMsg; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP TE Report Message. - */ -class PcepTEReportMsgVer1 implements PcepTEReportMsg { - - /* - * Ref : draft-dhodylee-pce-pcep-te-data-extn-02, section 8.1 - - <TERpt Message> ::= <Common Header> - <te-report-list> - Where: - <te-report-list> ::= <TE>[<te-report-list>] - */ - - private static final Logger log = LoggerFactory.getLogger(PcepTEReportMsgVer1.class); - //PACKET_MINIMUM_LENGTH = CommonHeaderLen(4)+TEObjMinLen(12) - public static final int PACKET_MINIMUM_LENGTH = 16; - public static final PcepType MSG_TYPE = PcepType.TE_REPORT; - // <te-report-list> - private LinkedList<PcepTEObject> teReportList; - - public static final PcepTEReportMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading PCPE te report message form channel buffer. - */ - static class Reader implements PcepMessageReader<PcepTEReportMsg> { - - LinkedList<PcepTEObject> teReportList; - - @Override - public PcepTEReportMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - return null; - } - - teReportList = new LinkedList<>(); - - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PcepMessageVer1.PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version); - } - - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.TE_REPORT(14), got=" + type); - } - - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException( - "Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", is: " + length); - } - - // Parse state report list - parseTEReportList(cb); - - return new PcepTEReportMsgVer1(teReportList); - } - - /** - * Parse te-report-list. - * - * @param cb input Channel Buffer - * @throws PcepParseException when fails to parse TE Report list. - */ - public void parseTEReportList(ChannelBuffer cb) throws PcepParseException { - // <te-report-list> ::= <TE>[<te-report-list>] - - while (0 < cb.readableBytes()) { - //store TE objectS - if (!teReportList.add(PcepTEObjectVer1.read(cb))) { - throw new PcepParseException("Failed to add TE object to TE report list"); - } - } - } - } - - /** - * Constructor to initialize TE Report List. - * - * @param teReportList list of PCEP TE Object - */ - PcepTEReportMsgVer1(LinkedList<PcepTEObject> teReportList) { - this.teReportList = teReportList; - } - - /** - * Builder class for PCEP te report message. - */ - static class Builder implements PcepTEReportMsg.Builder { - // PCEP TE Report message fields - LinkedList<PcepTEObject> teReportList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.TE_REPORT; - } - - @Override - public PcepTEReportMsg build() { - return new PcepTEReportMsgVer1(this.teReportList); - } - - @Override - public LinkedList<PcepTEObject> getTEReportList() { - return this.teReportList; - } - - @Override - public Builder setTEReportList(LinkedList<PcepTEObject> ll) { - this.teReportList = ll; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer bb) throws PcepParseException { - WRITER.write(bb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing PCEP te report message to channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepTEReportMsgVer1> { - - @Override - public void write(ChannelBuffer bb, PcepTEReportMsgVer1 message) throws PcepParseException { - - int startIndex = bb.writerIndex(); - - // first 3 bits set to version - bb.writeByte((byte) (PcepMessageVer1.PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - - // message type - bb.writeByte(MSG_TYPE.getType()); - - // Length of the message will be updated at the end - // First write with 0s - int msgLenIndex = bb.writerIndex(); - bb.writeShort((short) 0); - - ListIterator<PcepTEObject> listIterator = message.teReportList.listIterator(); - - while (listIterator.hasNext()) { - PcepTEObject teObj = listIterator.next(); - teObj.write(bb); - } - - // update message length field - int length = bb.writerIndex() - startIndex; - bb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public LinkedList<PcepTEObject> getTEReportList() { - return this.teReportList; - } - - @Override - public void setTEReportList(LinkedList<PcepTEObject> ll) { - this.teReportList = ll; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("TeReportList", teReportList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateMsgVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateMsgVer1.java deleted file mode 100644 index 53c66872..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateMsgVer1.java +++ /dev/null @@ -1,300 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepMsgPath; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepUpdateMsg; -import org.onosproject.pcepio.protocol.PcepUpdateRequest; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP update message. - */ - -class PcepUpdateMsgVer1 implements PcepUpdateMsg { - - // Pcep version: 1 - - /* The format of the PCUpd message is as follows: - * <PCUpd Message> ::= <Common Header> - * <update-request-list> - * Where: - * <update-request-list> ::= <update-request>[<update-request-list>] - * <update-request> ::= <SRP> - * <LSP> - * <path> - * Where: - * <path> ::= <ERO><attribute-list> - * Where: - * <attribute-list> is defined in [RFC5440] and extended by PCEP extensions. - * where: - * <attribute-list> ::=[<LSPA>] - * [<BANDWIDTH>] - * [<metric-list>] - * [<IRO>] - * <metric-list> ::=<METRIC>[<metric-list>] - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Ver | Flags | Message-Type | Message-Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * // UPDATE REQUEST LIST // - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * - * Reference:Internet-Draft-PCEP Extensions-for-Stateful-PCE-10 - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepUpdateMsgVer1.class); - - public static final byte PACKET_VERSION = 1; - // UpdateMsgMinLength = SrpObjMinLentgh(12)+LspObjMinLength(8)+EroObjMinLength(12)+ CommonHeaderLength(4) - public static final short PACKET_MINIMUM_LENGTH = 36; - public static final PcepType MSG_TYPE = PcepType.UPDATE; - //Update Request List - private LinkedList<PcepUpdateRequest> llUpdateRequestList; - - public static final PcepUpdateMsgVer1.Reader READER = new Reader(); - - /** - * Reader reads UpdateMessage from the channel. - */ - static class Reader implements PcepMessageReader<PcepUpdateMsg> { - - LinkedList<PcepUpdateRequest> llUpdateRequestList; - - @Override - public PcepUpdateMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Readable bytes is less than update message minimum length"); - } - - llUpdateRequestList = new LinkedList<>(); - - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 11 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.UPDATE(11), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " - + length); - } - - log.debug("reading update message of length " + length); - - // parse Update Request list - if (!parseUpdateRequestList(cb)) { - throw new PcepParseException("parsing Update Request List Failed."); - } - - return new PcepUpdateMsgVer1(llUpdateRequestList); - } - - /** - * Parse update request list. - * - * @param cb of type channel buffer - * @return true after parsing Update Request List - * @throws PcepParseException while parsing update request list from channel buffer - */ - public boolean parseUpdateRequestList(ChannelBuffer cb) throws PcepParseException { - - /* <update-request-list> - * Where: - * <update-request-list> ::= <update-request>[<update-request-list>] - * <update-request> ::= <SRP> - * <LSP> - * <path> - * Where: - * <path> ::= <ERO><attribute-list> - * Where: - * <attribute-list> is defined in [RFC5440] and extended by PCEP extensions. - */ - - while (0 < cb.readableBytes()) { - - PcepUpdateRequest pceUpdateReq = new PcepUpdateRequestVer1(); - - //Read SRP Object and Store it. - PcepSrpObject srpObj; - srpObj = PcepSrpObjectVer1.read(cb); - pceUpdateReq.setSrpObject(srpObj); - - //Read LSP object and Store it. - PcepLspObject lspObj; - lspObj = PcepLspObjectVer1.read(cb); - pceUpdateReq.setLspObject(lspObj); - - // Read Msg Path and store it. - PcepMsgPath msgPath = new PcepMsgPathVer1().read(cb); - pceUpdateReq.setMsgPath(msgPath); - - llUpdateRequestList.add(pceUpdateReq); - } - return true; - } - } - - /** - * Constructor to initialize llUpdateRequestList. - * - * @param llUpdateRequestList list of PcepUpdateRequest. - */ - PcepUpdateMsgVer1(LinkedList<PcepUpdateRequest> llUpdateRequestList) { - this.llUpdateRequestList = llUpdateRequestList; - } - - /** - * Builder class for PCPE update message. - */ - static class Builder implements PcepUpdateMsg.Builder { - - // PCEP report message fields - LinkedList<PcepUpdateRequest> llUpdateRequestList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.UPDATE; - } - - @Override - public PcepUpdateMsg build() { - return new PcepUpdateMsgVer1(this.llUpdateRequestList); - } - - @Override - public LinkedList<PcepUpdateRequest> getUpdateRequestList() { - return this.llUpdateRequestList; - } - - @Override - public Builder setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList) { - this.llUpdateRequestList = llUpdateRequestList; - return this; - } - - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer writes UpdateMessage to the channel buffer. - */ - static class Writer implements PcepMessageWriter<PcepUpdateMsgVer1> { - - @Override - public void write(ChannelBuffer cb, PcepUpdateMsgVer1 message) throws PcepParseException { - - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - /* length is length of variable message, will be updated at the end - * Store the position of message - * length in buffer - */ - int msgLenIndex = cb.writerIndex(); - - cb.writeShort((short) 0); - ListIterator<PcepUpdateRequest> listIterator = message.llUpdateRequestList.listIterator(); - - while (listIterator.hasNext()) { - - PcepUpdateRequest updateReq = listIterator.next(); - - //SRP object is mandatory - PcepSrpObject srpObj = updateReq.getSrpObject(); - srpObj.write(cb); - - //LSP object is mandatory - PcepLspObject lspObj = updateReq.getLspObject(); - lspObj.write(cb); - - //PATH object is mandatory - PcepMsgPath msgPath = updateReq.getMsgPath(); - msgPath.write(cb); - } - - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public LinkedList<PcepUpdateRequest> getUpdateRequestList() { - return this.llUpdateRequestList; - } - - @Override - public void setUpdateRequestList(LinkedList<PcepUpdateRequest> llUpdateRequestList) { - this.llUpdateRequestList = llUpdateRequestList; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("UpdateRequestList", llUpdateRequestList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateRequestVer1.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateRequestVer1.java deleted file mode 100644 index 0bcc2907..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateRequestVer1.java +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepMsgPath; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepUpdateRequest; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Update Request List. - */ -public class PcepUpdateRequestVer1 implements PcepUpdateRequest { - - /* <update-request-list> - * Where: - * <update-request-list> ::= <update-request>[<update-request-list>] - * <update-request> ::= <SRP> - * <LSP> - * <path> - * Where: - * <path> ::= <ERO><attribute-list> - * Where: - * <attribute-list> is defined in [RFC5440] and extended by PCEP extensions. - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepUpdateRequestVer1.class); - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP Message path - private PcepMsgPath msgPath; - - /** - * Default constructor. - */ - public PcepUpdateRequestVer1() { - srpObject = null; - lspObject = null; - msgPath = null; - } - - /** - * Constructor to initialize all member variables. - * - * @param srpObject srp object - * @param lspObject lsp object - * @param msgPath message path object - */ - public PcepUpdateRequestVer1(PcepSrpObject srpObject, PcepLspObject lspObject, PcepMsgPath msgPath) { - this.srpObject = srpObject; - this.lspObject = lspObject; - this.msgPath = msgPath; - } - - @Override - public PcepSrpObject getSrpObject() { - return srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return lspObject; - } - - @Override - public PcepMsgPath getMsgPath() { - return msgPath; - } - - @Override - public void setSrpObject(PcepSrpObject srpObject) { - this.srpObject = srpObject; - - } - - @Override - public void setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - } - - @Override - public void setMsgPath(PcepMsgPath msgPath) { - this.msgPath = msgPath; - } - - /** - * Builder class for PCEP update request. - */ - public static class Builder implements PcepUpdateRequest.Builder { - - private boolean bIsSRPObjectSet = false; - private boolean bIsLSPObjectSet = false; - private boolean bIsPcepMsgPathSet = false; - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP Attribute list - private PcepMsgPath msgPath; - - @Override - public PcepUpdateRequest build() throws PcepParseException { - - //PCEP SRP Object - PcepSrpObject srpObject = null; - //PCEP LSP Object - PcepLspObject lspObject = null; - //PCEP Attribute list - PcepMsgPath msgPath = null; - - if (!this.bIsSRPObjectSet) { - throw new PcepParseException(" SRP Object NOT Set while building PcepUpdateRequest."); - } else { - srpObject = this.srpObject; - } - if (!this.bIsLSPObjectSet) { - throw new PcepParseException(" LSP Object NOT Set while building PcepUpdateRequest."); - } else { - lspObject = this.lspObject; - } - if (!this.bIsPcepMsgPathSet) { - throw new PcepParseException(" Msg Path NOT Set while building PcepUpdateRequest."); - } else { - msgPath = this.msgPath; - } - - return new PcepUpdateRequestVer1(srpObject, lspObject, msgPath); - } - - @Override - public PcepSrpObject getSrpObject() { - return this.srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return this.lspObject; - } - - @Override - public PcepMsgPath getMsgPath() { - return this.msgPath; - } - - @Override - public Builder setSrpObject(PcepSrpObject srpobj) { - this.srpObject = srpobj; - this.bIsSRPObjectSet = true; - return this; - - } - - @Override - public Builder setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - this.bIsLSPObjectSet = true; - return this; - } - - @Override - public Builder setMsgPath(PcepMsgPath msgPath) { - this.msgPath = msgPath; - this.bIsPcepMsgPathSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("SrpObject", srpObject) - .add("LspObject", lspObject) - .add("MsgPath", msgPath) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/package-info.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/package-info.java deleted file mode 100644 index 32d49ec9..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of PCEP messages. - */ -package org.onosproject.pcepio.protocol.ver1; diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AdministrativeGroupTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AdministrativeGroupTlv.java deleted file mode 100644 index 62ed4e7f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AdministrativeGroupTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Administrative Group Tlv which contains value (32 Bit ). - */ -public class AdministrativeGroupTlv implements PcepValueType { - - /* REFERENCE :[RFC5305]/3.1 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB33] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | value (32 Bit ) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(AdministrativeGroupTlv.class); - - public static final short TYPE = 3; //TDB33 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue of Administrative-Group-Tlv. - */ - public AdministrativeGroupTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created AdministrativeGroupTlv object. - * - * @param raw value. - * @return object of Administrative-Group-Tlv - */ - public static AdministrativeGroupTlv of(final int raw) { - return new AdministrativeGroupTlv(raw); - } - - /** - * Returns raw value. - * - * @return rawValue raw value - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof AdministrativeGroupTlv) { - AdministrativeGroupTlv other = (AdministrativeGroupTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of Administrative-Group-Tlv. - * - * @param c input channel buffer - * @return object of Administrative-Group-Tlv - */ - public static AdministrativeGroupTlv read(ChannelBuffer c) { - return AdministrativeGroupTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemTlv.java deleted file mode 100644 index 3f213191..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Autonomous-System-Tlv which contains opaque value (32 Bit AS Number). - */ -public class AutonomousSystemTlv implements PcepValueType { - - /* Reference :RFC3209 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD10] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | opaque value (32 Bit AS Number) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(AutonomousSystemTlv.class); - - public static final short TYPE = 100; //TODD:change this TBD10 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue Autonomous-System-Tlv - */ - public AutonomousSystemTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created AutonomousSystemTlv object. - * - * @param raw value of opaque. - * @return object of Autonomous-System-Tlv - */ - public static AutonomousSystemTlv of(final int raw) { - return new AutonomousSystemTlv(raw); - } - - /** - * Returns opaque value. - * - * @return rawValue opaque value. - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof AutonomousSystemTlv) { - AutonomousSystemTlv other = (AutonomousSystemTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of AutonomousSystemTlv. - * - * @param c input channel buffer - * @return object of Autonomous-System-Tlv - */ - public static AutonomousSystemTlv read(ChannelBuffer c) { - return AutonomousSystemTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("TYPE", TYPE) - .add("Length", LENGTH) - .add("value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/BGPLSidentifierTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/BGPLSidentifierTlv.java deleted file mode 100644 index 4981649f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/BGPLSidentifierTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides BGP LS identifier which contains opaque value (32 Bit ID). - */ -public class BGPLSidentifierTlv implements PcepValueType { - - /* Reference :draft-ietf-idr-ls-distribution-10 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD11] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | opaque value (32 Bit ID). | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(BGPLSidentifierTlv.class); - - public static final short TYPE = 17; //TODD:change this TBD11 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue BGP LS identifier Tlv - */ - public BGPLSidentifierTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created BGPLSidentifierTlv object. - * - * @param raw value - * @return object of BGPLSidentifierTlv - */ - public static BGPLSidentifierTlv of(final int raw) { - return new BGPLSidentifierTlv(raw); - } - - /** - * Returns opaque value. - * - * @return rawValue opaque value - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof BGPLSidentifierTlv) { - BGPLSidentifierTlv other = (BGPLSidentifierTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of BGPLSidentifierTlv. - * - * @param c input channel buffer - * @return object of BGP LS identifier Tlv - */ - public static BGPLSidentifierTlv read(ChannelBuffer c) { - return BGPLSidentifierTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ErrorObjListWithOpen.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ErrorObjListWithOpen.java deleted file mode 100644 index 40f89f4c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ErrorObjListWithOpen.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provide the error object list with open object. - */ -public class ErrorObjListWithOpen { - //errorObjList is mandatory - private LinkedList<PcepErrorObject> llerrorObjList; - // openObject is optional - private PcepOpenObject openObject; - // flag to check if open object is set or not - private boolean isOpenObjectSet; - protected static final Logger log = LoggerFactory.getLogger(ErrorObjListWithOpen.class); - - /** - * Constructor to initialize Error and OPEN object. - * - * @param errObj ERROR object list - * @param openObj OPEN object - */ - public ErrorObjListWithOpen(LinkedList<PcepErrorObject> errObj, PcepOpenObject openObj) { - this.llerrorObjList = errObj; - this.openObject = openObj; - if (openObj != null) { - isOpenObjectSet = true; - } else { - isOpenObjectSet = false; - } - } - - /** - * Constructor to initialize ERROR Object. - * - * @param errObj ERROR Object list - */ - public ErrorObjListWithOpen(LinkedList<PcepErrorObject> errObj) { - this.llerrorObjList = errObj; - this.openObject = null; - isOpenObjectSet = false; - } - - /** - * Return list of Error Types. - * - * @return error types list - */ - public LinkedList<Integer> getErrorType() { - LinkedList<Integer> errorType = new LinkedList<>(); - if (llerrorObjList != null) { - ListIterator<PcepErrorObject> errObjListIterator = llerrorObjList.listIterator(); - int error; - PcepErrorObject errorObj; - while (errObjListIterator.hasNext()) { - errorObj = errObjListIterator.next(); - error = errorObj.getErrorType(); - errorType.add(error); - } - } - return errorType; - } - - /** - * Return list of Error Values. - * - * @return error values list - */ - public LinkedList<Integer> getErrorValue() { - LinkedList<Integer> errorValue = new LinkedList<>(); - if (llerrorObjList != null) { - ListIterator<PcepErrorObject> errObjListIterator = llerrorObjList.listIterator(); - int error; - PcepErrorObject errorObj; - while (errObjListIterator.hasNext()) { - errorObj = errObjListIterator.next(); - error = errorObj.getErrorValue(); - errorValue.add(error); - } - } - return errorValue; - } - - /** - * Checks whether ERROR Object list is empty or not. - * - * @return true if ERROR Object list is empty otherwise false - */ - public boolean isErrorObjListWithOpenPresent() { - // ( <error-obj-list> [<Open>] - // At least in this case <error-obj-list> should be present. - return !this.llerrorObjList.isEmpty(); - } - - /** - * Write Error Object List and Open Object to channel buffer. - * - * @param cb output channel buffer - * @return length of written Error object list with open - * @throws PcepParseException when mandatory fields are not set - */ - public int write(ChannelBuffer cb) throws PcepParseException { - int iLenStartIndex = cb.writerIndex(); - boolean bIsErrObjListFound = false; - - //<error-obj-list> is mandatory , if not present throw exception. - if (llerrorObjList != null) { - ListIterator<PcepErrorObject> errObjListIterator = llerrorObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObjListIterator.next().write(cb); - bIsErrObjListFound = true; - } - } - - if (!bIsErrObjListFound) { - throw new PcepParseException("<error-obj-list> is mandatory."); - } - - //Open Object is optional , if present write. - if (openObject != null) { - openObject.write(cb); - } - - return cb.writerIndex() - iLenStartIndex; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("ErrorObjList", llerrorObjList) - .add("Open", openObject) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/GmplsCapabilityTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/GmplsCapabilityTlv.java deleted file mode 100644 index 212aa3d3..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/GmplsCapabilityTlv.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides GMPLS Capability Tlv. - */ -public class GmplsCapabilityTlv implements PcepValueType { - - /* - * GMPLS-CAPABILITY TLV format - * reference :draft-ietf-pce-gmpls-pcep-extensions -2.1.1 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=14 | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(GmplsCapabilityTlv.class); - - public static final short TYPE = 14; - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize raw value. - * - * @param rawValue of Gmpls-Capability-Tlv - */ - public GmplsCapabilityTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created GmplsCapabilityTlv object. - * - * @param raw Flags value - * @return object of Gmpls-Capability-Tlv - */ - public static GmplsCapabilityTlv of(final int raw) { - return new GmplsCapabilityTlv(raw); - } - - /** - * Returns value of Flags. - * - * @return rawValue Flags - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof GmplsCapabilityTlv) { - GmplsCapabilityTlv other = (GmplsCapabilityTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of Gmpls-Capability-Tlv. - * - * @param c input channel buffer - * @return object of Gmpls-Capability-Tlv - */ - public static GmplsCapabilityTlv read(ChannelBuffer c) { - return GmplsCapabilityTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IGPMetricTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IGPMetricTlv.java deleted file mode 100644 index ab3f1247..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IGPMetricTlv.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IGP Link Metric . - */ -public class IGPMetricTlv implements PcepValueType { - - /* Reference :[I-D.ietf-idr-ls-distribution] /3.3.2.4 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TDB40 | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // IGP Link Metric (variable length) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(IGPMetricTlv.class); - - public static final short TYPE = 1095; //TODO:NEED TO HANDLE TDB40 - private short hLength; - - private final byte[] rawValue; - - /** - * Constructor to initialize raw value. - * - * @param rawValue IGP Link Metric - * @param hLength length - */ - public IGPMetricTlv(byte[] rawValue, short hLength) { - this.rawValue = rawValue; - this.hLength = hLength; - } - - /** - * Returns newly created IGPMetricTlv object. - * - * @param raw value of IGP Link Metric - * @param hLength length - * @return object of IGPMetricTlv - */ - public static IGPMetricTlv of(final byte[] raw, short hLength) { - return new IGPMetricTlv(raw, hLength); - } - - /** - * Returns value of IGP Link Metric. - * - * @return rawValue of IGP Link Metric - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IGPMetricTlv) { - IGPMetricTlv other = (IGPMetricTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IGPMetricTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of IGPMetricTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iIGPMetric = new byte[hLength]; - c.readBytes(iIGPMetric, 0, hLength); - return new IGPMetricTlv(iIGPMetric, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlv.java deleted file mode 100644 index d1a30157..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides IPv4 Interface Address . - */ -public class IPv4InterfaceAddressTlv implements PcepValueType { - - /* - * reference :[RFC5305]/3.2 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=6 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 Interface Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(IPv4InterfaceAddressTlv.class); - - public static final short TYPE = 6; - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue of IPv4-Interface-Address. - */ - public IPv4InterfaceAddressTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv4InterfaceAddressTlv object. - * - * @param raw value of IPv4-Interface-Address - * @return object of IPv4-Interface-Address-Tlv - */ - public static IPv4InterfaceAddressTlv of(final int raw) { - return new IPv4InterfaceAddressTlv(raw); - } - - /** - * Returns value of IPv4 Interface Address. - * - * @return rawValue IPv4 Interface Address - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv4InterfaceAddressTlv) { - IPv4InterfaceAddressTlv other = (IPv4InterfaceAddressTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv4InterfaceAddressTlv. - * - * @param c input channel buffer - * @return object of IPv4-Interface-Address-Tlv - */ - public static IPv4InterfaceAddressTlv read(ChannelBuffer c) { - return IPv4InterfaceAddressTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlv.java deleted file mode 100644 index 0f98777f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides IPv4 Neighbor Address . - */ -public class IPv4NeighborAddressTlv implements PcepValueType { - - /* Reference :[RFC5305]/3.3 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=8 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 Neighbor Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(IPv4NeighborAddressTlv.class); - - public static final short TYPE = 8; - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv4-Neighbor-Address-Tlv - */ - public IPv4NeighborAddressTlv(int rawValue) { - log.debug("IPv4NeighborAddressTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv4NeighborAddressTlv object. - * - * @param raw value of IPv4-Neighbor-Address - * @return object of IPv4NeighborAddressTlv - */ - public static IPv4NeighborAddressTlv of(final int raw) { - return new IPv4NeighborAddressTlv(raw); - } - - /** - * Returns value of IPv4 Neighbor Address. - * - * @return rawValue IPv4 Neighbor Address - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv4NeighborAddressTlv) { - IPv4NeighborAddressTlv other = (IPv4NeighborAddressTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv4-Neighbor-Address-Tlv. - * - * @param c input channel buffer - * @return object of IPv4-Neighbor-Address-Tlv - */ - public static IPv4NeighborAddressTlv read(ChannelBuffer c) { - return IPv4NeighborAddressTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4SubObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4SubObject.java deleted file mode 100644 index 031b5db6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4SubObject.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @author b00295750 - * - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides IPv4 Sub Object. - */ -public class IPv4SubObject implements PcepValueType { - - /*Reference : RFC 4874:3.1.1 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | IPv4 address (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 address (continued) | Prefix Length | Resvd | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(IPv4SubObject.class); - - public static final byte TYPE = 0x01; - public static final byte LENGTH = 8; - public static final byte VALUE_LENGTH = 6; - public static final byte OBJ_LENGTH = 8; - public static final byte LBIT = 0; - public static final int SHIFT_LBIT_POSITION = 7; - private int ipAddress; - private byte prefixLen; - private byte resvd; - - /** - * Constructor to initialize ipv4 address. - * - * @param ipAddr ipv4 address - */ - public IPv4SubObject(int ipAddr) { - this.ipAddress = ipAddr; - } - - /** - * constructor to initialize ipAddress, prefixLen and resvd. - * - * @param ipAddress ipv4 address - * @param prefixLen prefix length - * @param resvd reserved flags value - */ - public IPv4SubObject(int ipAddress, byte prefixLen, byte resvd) { - this.ipAddress = ipAddress; - this.prefixLen = prefixLen; - this.resvd = resvd; - } - - /** - * Returns a new instance of IPv4SubObject. - * - * @param ipAddress ipv4 address - * @param prefixLen prefix length - * @param resvd reserved flags value - * @return object of IPv4SubObject - */ - public static IPv4SubObject of(int ipAddress, byte prefixLen, byte resvd) { - return new IPv4SubObject(ipAddress, prefixLen, resvd); - } - - /** - * Returns prefixLen of IPv4 IP address. - * - * @return byte value of rawValue - */ - public byte getPrefixLen() { - return prefixLen; - } - - /** - * Returns value of IPv4 IP address. - * - * @return int value of ipv4 address - */ - public int getIpAddress() { - return ipAddress; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(ipAddress, prefixLen, resvd); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv4SubObject) { - IPv4SubObject other = (IPv4SubObject) obj; - return Objects.equals(this.ipAddress, other.ipAddress) && Objects.equals(this.prefixLen, other.prefixLen) - && Objects.equals(this.resvd, other.resvd); - } - return false; - } - - /** - * Reads the channel buffer and returns object of IPv4SubObject. - * - * @param c type of channel buffer - * @return object of IPv4SubObject - */ - public static PcepValueType read(ChannelBuffer c) { - int ipAddess = c.readInt(); - byte prefixLen = c.readByte(); - byte resvd = c.readByte(); - return new IPv4SubObject(ipAddess, prefixLen, resvd); - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - byte bValue = LBIT; - bValue = (byte) (bValue << SHIFT_LBIT_POSITION); - bValue = (byte) (bValue | TYPE); - c.writeByte(bValue); - c.writeByte(OBJ_LENGTH); - c.writeInt(ipAddress); - c.writeByte(prefixLen); - c.writeByte(resvd); - - return c.writerIndex() - iLenStartIndex; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("IPv4Address", ipAddress) - .add("PrefixLength", prefixLen) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlv.java deleted file mode 100644 index 2abf4cdc..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides IPv4 TE Router Id Of Local Node. - */ -public class IPv4TERouterIdOfLocalNodeTlv implements PcepValueType { - - /* Reference:[RFC5305]/4.3 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB25] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 TE Router Id Of Local Node | - +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+- - */ - - protected static final Logger log = LoggerFactory.getLogger(IPv4TERouterIdOfLocalNodeTlv.class); - - public static final short TYPE = 134; //TDB25 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv4-TE-RouterId-Of-Local-Node-Tlv - */ - public IPv4TERouterIdOfLocalNodeTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv4TERouterIdOfLocalNodeTlv object. - * - * @param raw value of IPv4-TE-RouterId-Of-Local-Node - * @return object of IPv4TERouterIdOfLocalNodeTlv - */ - public static IPv4TERouterIdOfLocalNodeTlv of(final int raw) { - return new IPv4TERouterIdOfLocalNodeTlv(raw); - } - - /** - * Returns value of IPv4 TE Router Id Of Local Node. - * - * @return rawValue IPv4 TE Router Id Of Local Node - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv4TERouterIdOfLocalNodeTlv) { - IPv4TERouterIdOfLocalNodeTlv other = (IPv4TERouterIdOfLocalNodeTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv4TERouterIdOfLocalNodeTlv. - * - * @param c input channel buffer - * @return object of IPv4TERouterIdOfLocalNodeTlv - */ - public static IPv4TERouterIdOfLocalNodeTlv read(ChannelBuffer c) { - return IPv4TERouterIdOfLocalNodeTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlv.java deleted file mode 100644 index 21e09890..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides IPv4 TE Router Id Of Remote Node. - */ -public class IPv4TERouterIdOfRemoteNodeTlv implements PcepValueType { - - /* Reference :[RFC5305]/4.3 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB28] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 TE Router Id Of Remote Node | - +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+- - */ - - protected static final Logger log = LoggerFactory.getLogger(IPv4TERouterIdOfRemoteNodeTlv.class); - - public static final short TYPE = 1340; //TDB28 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv4 TE RouterId Of Remote Node Tlv - */ - public IPv4TERouterIdOfRemoteNodeTlv(int rawValue) { - log.debug("IPv4TERouterIdOfRemoteNodeTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv4TERouterIdOfRemoteNodeTlv object. - * - * @param raw IPv4 TE RouterId Of Remote Node - * @return object of IPv4TERouterIdOfRemoteNodeTlv - */ - public static IPv4TERouterIdOfRemoteNodeTlv of(final int raw) { - return new IPv4TERouterIdOfRemoteNodeTlv(raw); - } - - /** - * Returns value of IPv4 TE Router Id Of Remote Node. - * - * @return rawValue IPv4 TE Router Id Of Remote Node - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv4TERouterIdOfRemoteNodeTlv) { - IPv4TERouterIdOfRemoteNodeTlv other = (IPv4TERouterIdOfRemoteNodeTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv4TERouterIdOfRemoteNodeTlv. - * - * @param c input channel buffer - * @return object of IPv4TERouterIdOfRemoteNodeTlv - */ - public static IPv4TERouterIdOfRemoteNodeTlv read(ChannelBuffer c) { - return IPv4TERouterIdOfRemoteNodeTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlv.java deleted file mode 100644 index 2ebab1ad..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlv.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IPv6 Interface Address. REFERENCE :[RFC6119]/4.2. - */ -public class IPv6InterfaceAddressTlv implements PcepValueType { - - protected static final Logger log = LoggerFactory.getLogger(IPv6InterfaceAddressTlv.class); - - public static final short TYPE = 12; //TDB18 - public static final short LENGTH = 20; - public static final byte VALUE_LENGTH = 18; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - public static final IPv6InterfaceAddressTlv NONE = new IPv6InterfaceAddressTlv(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF}; - public static final IPv6InterfaceAddressTlv NO_MASK = new IPv6InterfaceAddressTlv(NO_MASK_VAL); - public static final IPv6InterfaceAddressTlv FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv6 Interface Address Tlv - */ - public IPv6InterfaceAddressTlv(byte[] rawValue) { - log.debug("IPv6InterfaceAddressTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv6InterfaceAddressTlv object. - * - * @param raw IPv6 Interface Address - * @return object of IPv6InterfaceAddressTlv - */ - public static IPv6InterfaceAddressTlv of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - - return new IPv6InterfaceAddressTlv(raw); - } - - /** - * Returns value of IPv6 Interface Address. - * - * @return rawValue raw value - */ - public byte[] getBytes() { - return rawValue; - } - - /** - * Returns value of IPv6 Interface Address. - * - * @return rawValue raw value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6InterfaceAddressTlv) { - IPv6InterfaceAddressTlv other = (IPv6InterfaceAddressTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv6InterfaceAddressTlv. - * - * @param c input channel buffer - * @return object of IPv6InterfaceAddressTlv - */ - public static IPv6InterfaceAddressTlv read20Bytes(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return IPv6InterfaceAddressTlv.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlv.java deleted file mode 100644 index 8b3390b6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlv.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IPv6 Neighbor Address. Reference :[RFC6119]/4.3. - */ -public class IPv6NeighborAddressTlv implements PcepValueType { - protected static final Logger log = LoggerFactory.getLogger(IPv6NeighborAddressTlv.class); - - public static final short TYPE = 13; // TDB19 - public static final short LENGTH = 20; - public static final byte VALUE_LENGTH = 18; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - public static final IPv6NeighborAddressTlv NONE = new IPv6NeighborAddressTlv(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF}; - public static final IPv6NeighborAddressTlv NO_MASK = new IPv6NeighborAddressTlv(NO_MASK_VAL); - public static final IPv6NeighborAddressTlv FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv6 Neighbor Address Tlv - */ - public IPv6NeighborAddressTlv(byte[] rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv6NeighborAddressTlv object. - * - * @param raw IPv6 Neighbor Address - * @return object of IPv6 Neighbor Address Tlv - */ - public static IPv6NeighborAddressTlv of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - - return new IPv6NeighborAddressTlv(raw); - } - - /** - * Returns value of IPv6 Neighbor Address. - * - * @return rawValue raw value - */ - public byte[] getBytes() { - return rawValue; - } - - /** - * Returns value of IPv6 Neighbor Address. - * - * @return rawValue raw value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6NeighborAddressTlv) { - IPv6NeighborAddressTlv other = (IPv6NeighborAddressTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv6NeighborAddressTlv. - * - * @param c input channel buffer - * @return object of IPv6NeighborAddressTlv - */ - public static IPv6NeighborAddressTlv read20Bytes(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return IPv6NeighborAddressTlv.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6SubObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6SubObject.java deleted file mode 100644 index 8e1719e0..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6SubObject.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IPv6 Sub Object. - */ -public class IPv6SubObject implements PcepValueType { - - /* reference :RFC 4874. - Subobject : IPv6 address - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | IPv6 address (16 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | Prefix Length | Flags | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Type - - 0x02 IPv6 address - - Length - - The Length contains the total length of the subobject in bytes, - including the Type and Length fields. The Length is always 20. - - IPv6 address - - A 128-bit unicast host address. - - Prefix length - - 128 - - Flags - - 0x01 Local protection available - - Indicates that the link downstream of this node is - protected via a local repair mechanism. This flag can - only be set if the Local protection flag was set in the - SESSION_ATTRIBUTE object of the corresponding Path - message. - - 0x02 Local protection in use - - Indicates that a local repair mechanism is in use to - maintain this tunnel (usually in the face of an outage - of the link it was previously routed over). - */ - protected static final Logger log = LoggerFactory.getLogger(IPv6SubObject.class); - - public static final short TYPE = 0x02; - public static final short LENGTH = 20; - public static final byte VALUE_LENGTH = 18; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - public static final IPv6SubObject NONE = new IPv6SubObject(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF }; - public static final IPv6SubObject NO_MASK = new IPv6SubObject(NO_MASK_VAL); - public static final IPv6SubObject FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue with ipv6 address. - * - * @param rawValue ipv6 address - */ - public IPv6SubObject(byte[] rawValue) { - this.rawValue = rawValue; - } - - /** - * To create instance of IPv6SubObject. - * - * @param raw byte array of ipv6 address - * @return object of IPv6SubObject - */ - public static IPv6SubObject of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - - return new IPv6SubObject(raw); - } - - /** - * Returns value of IPv6 Sub Object. - * - * @return byte array of ipv6 address - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6SubObject) { - IPv6SubObject other = (IPv6SubObject) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv6SubObject. - * - * @param c type of channel buffer - * @return object of IPv6SubObject - */ - public static IPv6SubObject read20Bytes(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return IPv6SubObject.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlv.java deleted file mode 100644 index bc8eca65..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlv.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IPv6 TE Router Id of Local Node. Reference :[RFC6119]/4.1. - */ -public class IPv6TERouterIdofLocalNodeTlv implements PcepValueType { - protected static final Logger log = LoggerFactory.getLogger(IPv6TERouterIdofLocalNodeTlv.class); - - public static final short TYPE = 140; //TDB26 - public static final short LENGTH = 20; - public static final byte VALUE_LENGTH = 18; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - public static final IPv6TERouterIdofLocalNodeTlv NONE = new IPv6TERouterIdofLocalNodeTlv(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF }; - public static final IPv6TERouterIdofLocalNodeTlv NO_MASK = new IPv6TERouterIdofLocalNodeTlv(NO_MASK_VAL); - public static final IPv6TERouterIdofLocalNodeTlv FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue IPv6TERouterIdofLocalNodeTlv - */ - public IPv6TERouterIdofLocalNodeTlv(byte[] rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv6TERouterIdofLocalNodeTlv object. - * - * @param raw IPv6 TE Router Id of Local Node - * @return object of IPv6TERouterIdofLocalNodeTlv - */ - public static IPv6TERouterIdofLocalNodeTlv of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - - return new IPv6TERouterIdofLocalNodeTlv(raw); - } - - /** - * Returns value of IPv6 TE Router Id of Local Node. - * - * @return byte array value of rawValue - */ - public byte[] getBytes() { - return rawValue; - } - - /** - * Returns value of IPv6 TE Router Id of Local Node. - * - * @return byte array value of rawValue - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6TERouterIdofLocalNodeTlv) { - IPv6TERouterIdofLocalNodeTlv other = (IPv6TERouterIdofLocalNodeTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv6TERouterIdofLocalNodeTlv. - * - * @param c input channel buffer - * @return object of IPv6TERouterIdofLocalNodeTlv - */ - public static IPv6TERouterIdofLocalNodeTlv read20Bytes(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return IPv6TERouterIdofLocalNodeTlv.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlv.java deleted file mode 100644 index 1fc7124c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlv.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides IPv6 TE Router Id of Remote Node. Reference :[RFC6119]/4.1. - */ -public class IPv6TERouterIdofRemoteNodeTlv implements PcepValueType { - protected static final Logger log = LoggerFactory.getLogger(IPv6TERouterIdofRemoteNodeTlv.class); - - public static final short TYPE = 1400; //TDB29 - public static final short LENGTH = 20; - public static final byte VALUE_LENGTH = 18; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - public static final IPv6TERouterIdofRemoteNodeTlv NONE = new IPv6TERouterIdofRemoteNodeTlv(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF}; - public static final IPv6TERouterIdofRemoteNodeTlv NO_MASK = new IPv6TERouterIdofRemoteNodeTlv(NO_MASK_VAL); - public static final IPv6TERouterIdofRemoteNodeTlv FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue IPv6TERouterIdofRemoteNodeTlv - */ - public IPv6TERouterIdofRemoteNodeTlv(byte[] rawValue) { - log.debug("IPv6TERouterIdofRemoteNodeTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created IPv6TERouterIdofRemoteNodeTlv object. - * - * @param raw IPv6 TE Router Id of RemoteNode - * @return object of IPv6TERouterIdofRemoteNodeTlv - */ - public static IPv6TERouterIdofRemoteNodeTlv of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 2; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - - return new IPv6TERouterIdofRemoteNodeTlv(raw); - } - - /** - * Returns value of IPv6 TE Router Id of Remote Node. - * - * @return byte array value of rawValue - */ - public byte[] getBytes() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6TERouterIdofRemoteNodeTlv) { - IPv6TERouterIdofRemoteNodeTlv other = (IPv6TERouterIdofRemoteNodeTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv6TERouterIdofRemoteNodeTlv. - * - * @param c input channel buffer - * @return object of IPv6TERouterIdofRemoteNodeTlv - */ - public static IPv6TERouterIdofRemoteNodeTlv read20Bytes(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return IPv6TERouterIdofRemoteNodeTlv.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlv.java deleted file mode 100644 index 648dbb66..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlv.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides ISIS Area Identifier. - */ -public class ISISAreaIdentifierTlv implements PcepValueType { - - /* Reference :[I-D.ietf-idr- ls-distribution]/3.3.1.2 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD24] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Area Identifier (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(ISISAreaIdentifierTlv.class); - - public static final short TYPE = 107; //TODO:NEED TO HANDLE TBD24 - private short hLength; - - private final byte[] rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue ISIS-Area-Identifier - * @param hLength length - */ - public ISISAreaIdentifierTlv(byte[] rawValue, short hLength) { - log.debug("ISISAreaIdentifierTlv"); - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns newly created ISISAreaIdentifierTlv object. - * - * @param raw ISIS-Area-Identifier - * @param hLength length - * @return object of ISISAreaIdentifierTlv - */ - public static ISISAreaIdentifierTlv of(final byte[] raw, short hLength) { - return new ISISAreaIdentifierTlv(raw, hLength); - } - - /** - * Returns value of ISIS-Area-Identifier. - * - * @return byte array of rawValue - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ISISAreaIdentifierTlv) { - ISISAreaIdentifierTlv other = (ISISAreaIdentifierTlv) obj; - return Objects.equals(hLength, other.hLength) && Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of ISISAreaIdentifierTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of ISISAreaIdentifierTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iISISAreaIdentifier = new byte[hLength]; - c.readBytes(iISISAreaIdentifier, 0, hLength); - return new ISISAreaIdentifierTlv(iISISAreaIdentifier, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LabelSubObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LabelSubObject.java deleted file mode 100644 index 5b1c2438..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LabelSubObject.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * LabelSubObject: Provides a LabelSubObject. - */ -public class LabelSubObject implements PcepValueType { - - /* Reference : RFC 3209 - * LABEL Sub Object - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | Flags | C-Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Contents of Label Object | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(LabelSubObject.class); - - public static final short TYPE = 0x03; - public static final short LENGTH = 8; - private final byte flags; - private final byte cType; - private final int contents; - - /** - * constructor to initialize parameters for LabelSubObject. - * - * @param flags flags - * @param cType C-Type - * @param contents Contents of label object - */ - public LabelSubObject(byte flags, byte cType, int contents) { - this.flags = flags; - this.cType = cType; - this.contents = contents; - } - - /** - * Return an object of LabelSubObject. - * - * @param flags flags - * @param cType C-type - * @param contents contents of label objects - * @return object of LabelSubObject - */ - public static LabelSubObject of(byte flags, byte cType, int contents) { - return new LabelSubObject(flags, cType, contents); - } - - /** - * Returns Flags. - * - * @return flags - */ - public byte getFlags() { - return flags; - } - - /** - * Returns cType. - * - * @return cType - */ - public byte getCtype() { - return cType; - } - - /** - * Returns contents. - * - * @return contents - */ - public int getContents() { - return contents; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(flags, cType, contents); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LabelSubObject) { - LabelSubObject other = (LabelSubObject) obj; - return Objects.equals(this.flags, other.flags) && Objects.equals(this.cType, other.cType) - && Objects.equals(this.contents, other.contents); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeByte(flags); - c.writeByte(cType); - c.writeByte(contents); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of LabelSubObject. - * - * @param c type of channel buffer - * @return object of LabelSubObject - */ - public static PcepValueType read(ChannelBuffer c) { - byte flags = c.readByte(); - byte cType = c.readByte(); - int contents = c.readInt(); - return new LabelSubObject(flags, cType, contents); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("type", TYPE) - .add("Length", LENGTH) - .add("flags", flags) - .add("C-type", cType) - .add("contents", contents) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlv.java deleted file mode 100644 index 5fa0a4c6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlv.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Local and remote Link Identifiers. - */ -public class LinkLocalRemoteIdentifiersTlv implements PcepValueType { - - /* Reference :RFC5307 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=4 | Length=8 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link Local Identifier | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link Remote Identifier | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(LinkLocalRemoteIdentifiersTlv.class); - - public static final short TYPE = 4; - public static final short LENGTH = 8; - private final int iLinkLocalIdentifier; - private final int iLinkRemoteIdentifier; - - /** - * Constructor to initialize iLinkLocalIdentifier , iLinkRemoteIdentifier. - * - * @param iLinkLocalIdentifier Link Local identifier - * @param iLinkRemoteIdentifier Link Remote identifier - */ - public LinkLocalRemoteIdentifiersTlv(int iLinkLocalIdentifier, int iLinkRemoteIdentifier) { - this.iLinkLocalIdentifier = iLinkLocalIdentifier; - this.iLinkRemoteIdentifier = iLinkRemoteIdentifier; - } - - /** - * Retruns an object of Link Local Remote Identifiers Tlv. - * - * @param iLinkLocalIdentifier Link Local identifier - * @param iLinkRemoteIdentifier Link Remote identifier - * @return object of LinkLocalRemoteIdentifiersTlv - */ - public static LinkLocalRemoteIdentifiersTlv of(int iLinkLocalIdentifier, int iLinkRemoteIdentifier) { - return new LinkLocalRemoteIdentifiersTlv(iLinkLocalIdentifier, iLinkRemoteIdentifier); - } - - /** - * Returns Link-Local-Identifier. - * - * @return iLinkLocalIdentifier Link Local Identifier - */ - public int getLinkLocalIdentifier() { - return iLinkLocalIdentifier; - } - - /** - * Returns Link-Remote-Identifier. - * - * @return iLinkRemoteIdentifier Link Remote Identifier. - */ - public int getLinkRemoteIdentifier() { - return iLinkRemoteIdentifier; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(iLinkLocalIdentifier, iLinkRemoteIdentifier); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LinkLocalRemoteIdentifiersTlv) { - LinkLocalRemoteIdentifiersTlv other = (LinkLocalRemoteIdentifiersTlv) obj; - return Objects.equals(iLinkLocalIdentifier, other.iLinkLocalIdentifier) - && Objects.equals(iLinkRemoteIdentifier, other.iLinkRemoteIdentifier); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(iLinkLocalIdentifier); - c.writeInt(iLinkRemoteIdentifier); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of LinkLocalRemoteIdentifiersTlv. - * - * @param c input channel buffer - * @return object of LinkLocalRemoteIdentifiersTlv - */ - public static PcepValueType read(ChannelBuffer c) { - int iLinkLocalIdentifier = c.readInt(); - int iLinkRemoteIdentifier = c.readInt(); - return new LinkLocalRemoteIdentifiersTlv(iLinkLocalIdentifier, iLinkRemoteIdentifier); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("LinkLocalIdentifier", iLinkLocalIdentifier) - .add("LinkRemoteIdentifier", iLinkRemoteIdentifier) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkNameTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkNameTlv.java deleted file mode 100644 index aa0f11a7..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkNameTlv.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides the Link Name. - */ -public class LinkNameTlv implements PcepValueType { - - /* Reference :[I-D.ietf-idr- ls-distribution] /3.3.2.7 - * Link name tlv format. - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TDB43 | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Link Name (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(LinkNameTlv.class); - - public static final short TYPE = 1098; //TODO:NEED TO HANDLE TDB43 - private short hLength; - - private final byte[] rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue Link-Name - * @param hLength length - */ - public LinkNameTlv(byte[] rawValue, short hLength) { - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns newly created LinkNameTlv object. - * - * @param raw Link-Name - * @param hLength length - * @return object of LinkNameTlv - */ - public static LinkNameTlv of(final byte[] raw, short hLength) { - return new LinkNameTlv(raw, hLength); - } - - /** - * Returns value of Link-Name. - * - * @return raw value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LinkNameTlv) { - LinkNameTlv other = (LinkNameTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of LinkNameTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of LinkNameTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] linkName = new byte[hLength]; - c.readBytes(linkName, 0, hLength); - return new LinkNameTlv(linkName, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkProtectionTypeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkProtectionTypeTlv.java deleted file mode 100644 index a802d577..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkProtectionTypeTlv.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provide Link Protection Type. - */ - -public class LinkProtectionTypeTlv implements PcepValueType { - - /* Reference :[RFC5307]/1.2 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB38] | Length=2 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |Protection Cap | Reserved | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(LinkProtectionTypeTlv.class); - - public static final short TYPE = 20; //TDB38 - public static final short LENGTH = 2; - private final byte protectionCap; - private final byte reserved; - - /** - * Constructor to initialize protectionCap. - * - * @param protectionCap Protection Cap - */ - public LinkProtectionTypeTlv(byte protectionCap) { - this.protectionCap = protectionCap; - this.reserved = 0; - } - - /** - * Constructor to initialize protectionCap, reserved. - * - * @param protectionCap Protection Cap - * @param reserved Reserved value - */ - public LinkProtectionTypeTlv(byte protectionCap, byte reserved) { - this.protectionCap = protectionCap; - this.reserved = reserved; - } - - /** - * Returns Protection Cap. - * - * @return protectionCap Protection Cap - */ - public byte getProtectionCap() { - return protectionCap; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(protectionCap, reserved); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LinkProtectionTypeTlv) { - LinkProtectionTypeTlv other = (LinkProtectionTypeTlv) obj; - return Objects.equals(protectionCap, other.protectionCap) && Objects.equals(reserved, other.reserved); - } - - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeByte(protectionCap); - c.writeByte(reserved); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of LinkProtectionTypeTlv. - * - * @param c input channel buffer - * @return object of LinkProtectionTypeTlv - */ - public static PcepValueType read(ChannelBuffer c) { - byte protectionCap = c.readByte(); - byte reserved = c.readByte(); - return new LinkProtectionTypeTlv(protectionCap, reserved); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("ProtectionCap", protectionCap) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlv.java deleted file mode 100644 index b31dac2c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlv.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Local TE Node Descriptors TLV which contains Node Descriptor Sub-TLVs. - */ -public class LocalTENodeDescriptorsTlv implements PcepValueType { - - /* REFERENCE :draft-ietf-idr-ls-distribution-10 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD8] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Node Descriptor Sub-TLVs (variable) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - Note: Length is including header here. Refer Routing Universe TLV. - */ - - protected static final Logger log = LoggerFactory.getLogger(LocalTENodeDescriptorsTlv.class); - - public static final short TYPE = 1637; //TODD:change this TBD8 - public short hLength; - - public static final int TLV_HEADER_LENGTH = 4; - // Node Descriptor Sub-TLVs (variable) - private LinkedList<PcepValueType> llNodeDescriptorSubTLVs; - - /** - * Constructor to initialize llNodeDescriptorSubTLVs. - * - * @param llNodeDescriptorSubTLVs LinkedList of PcepValueType - */ - public LocalTENodeDescriptorsTlv(LinkedList<PcepValueType> llNodeDescriptorSubTLVs) { - this.llNodeDescriptorSubTLVs = llNodeDescriptorSubTLVs; - } - - /** - * Returns a new object of LocalTENodeDescriptorsTLV. - * - * @param llNodeDescriptorSubTLVs linked list of Node Descriptor Sub TLVs - * @return object of LocalTENodeDescriptorsTLV - */ - public static LocalTENodeDescriptorsTlv of(final LinkedList<PcepValueType> llNodeDescriptorSubTLVs) { - return new LocalTENodeDescriptorsTlv(llNodeDescriptorSubTLVs); - } - - /** - * Returns Linked List of tlvs. - * - * @return llNodeDescriptorSubTLVs linked list of Node Descriptor Sub TLV - */ - public LinkedList<PcepValueType> getllNodeDescriptorSubTLVs() { - return llNodeDescriptorSubTLVs; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(llNodeDescriptorSubTLVs.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - /* - * Here we have a list of Tlv so to compare each sub tlv between the object - * we have to take a list iterator so one by one we can get each sub tlv object - * and can compare them. - * it may be possible that the size of 2 lists is not equal so we have to first check - * the size, if both are same then we should check for the subtlv objects otherwise - * we should return false. - */ - if (obj instanceof LocalTENodeDescriptorsTlv) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - LocalTENodeDescriptorsTlv other = (LocalTENodeDescriptorsTlv) obj; - Iterator<PcepValueType> objListIterator = ((LocalTENodeDescriptorsTlv) obj).llNodeDescriptorSubTLVs - .iterator(); - countObjSubTlv = ((LocalTENodeDescriptorsTlv) obj).llNodeDescriptorSubTLVs.size(); - countOtherSubTlv = other.llNodeDescriptorSubTLVs.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - PcepValueType subTlv = objListIterator.next(); - isCommonSubTlv = Objects.equals(llNodeDescriptorSubTLVs.contains(subTlv), - other.llNodeDescriptorSubTLVs.contains(subTlv)); - } - return isCommonSubTlv; - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int tlvStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(0); - - ListIterator<PcepValueType> listIterator = llNodeDescriptorSubTLVs.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - if (tlv == null) { - log.debug("TLV is null from subTlv list"); - continue; - } - tlv.write(c); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - c.writeByte((byte) 0); - } - } - } - hLength = (short) (c.writerIndex() - tlvStartIndex); - c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH)); - return c.writerIndex() - tlvStartIndex; - } - - /** - * Reads the channel buffer and returns object of AutonomousSystemTlv. - * - * @param c input channel buffer - * @param hLength length of subtlvs. - * @return object of AutonomousSystemTlv - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepValueType read(ChannelBuffer c, short hLength) throws PcepParseException { - - // Node Descriptor Sub-TLVs (variable) - LinkedList<PcepValueType> llNodeDescriptorSubTLVs = new LinkedList<>(); - - ChannelBuffer tempCb = c.readBytes(hLength); - - while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) { - - PcepValueType tlv; - short hType = tempCb.readShort(); - int iValue = 0; - short length = tempCb.readShort(); - - switch (hType) { - - case AutonomousSystemTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new AutonomousSystemTlv(iValue); - break; - case BGPLSidentifierTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new BGPLSidentifierTlv(iValue); - break; - case OSPFareaIDsubTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new OSPFareaIDsubTlv(iValue); - break; - case RouterIDSubTlv.TYPE: - tlv = RouterIDSubTlv.read(tempCb, length); - break; - - default: - throw new PcepParseException("Unsupported Sub TLV type :" + hType); - } - - // Check for the padding - int pad = length % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= tempCb.readableBytes()) { - tempCb.skipBytes(pad); - } - } - - llNodeDescriptorSubTLVs.add(tlv); - } - - if (0 < tempCb.readableBytes()) { - throw new PcepParseException("Sub Tlv parsing error. Extra bytes received."); - } - return new LocalTENodeDescriptorsTlv(llNodeDescriptorSubTLVs); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", hLength) - .add("NodeDescriptorSubTLVs", llNodeDescriptorSubTLVs) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlv.java deleted file mode 100644 index fc0f8771..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlv.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides MPLS Protocol Mask. - */ -public class MPLSProtocolMaskTlv implements PcepValueType { - - /* Reference :[I-D.ietf-idr-ls-distribution]/3.3.2.2 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TDB39 | Length =1 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L|R| Reserved | - +-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(MPLSProtocolMaskTlv.class); - - public static final short TYPE = 1094; //TDB39 - public static final short LENGTH = 1; - public static final byte LFLAG_SET = (byte) 0x80; - public static final byte RFLAG_SET = 0x40; - - private final byte rawValue; - private final boolean bLFlag; - private final boolean bRFlag; - private final boolean isRawValueSet; - - /** - * constructor to initialize rawValue. - * - * @param rawValue MPLS Protocol Mask Flag Bits - */ - public MPLSProtocolMaskTlv(byte rawValue) { - this.rawValue = rawValue; - this.isRawValueSet = true; - this.bLFlag = (rawValue & LFLAG_SET) == LFLAG_SET; - this.bRFlag = (rawValue & RFLAG_SET) == RFLAG_SET; - } - - /** - * constructor to initialize different Flags. - * - * @param bLFlag L-flag - * @param bRFlag R-flag - */ - public MPLSProtocolMaskTlv(boolean bLFlag, boolean bRFlag) { - this.bLFlag = bLFlag; - this.bRFlag = bRFlag; - this.rawValue = 0; - isRawValueSet = false; - } - - /** - * Returns newly created MPLSProtocolMaskTlv object. - * - * @param raw MPLS Protocol Mask Tlv - * @return new object of MPLS Protocol Mask Tlv - */ - public static MPLSProtocolMaskTlv of(final byte raw) { - return new MPLSProtocolMaskTlv(raw); - } - - /** - * Returns L-flag. - * - * @return bLFlag L-flag - */ - public boolean getbLFlag() { - return bLFlag; - } - - /** - * Returns R-flag. - * - * @return bRFlag R-flag - */ - public boolean getbRFlag() { - return bRFlag; - } - - /** - * Returns raw value. - * - * @return rawValue raw value - */ - public byte getByte() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - if (isRawValueSet) { - return Objects.hash(rawValue); - } else { - return Objects.hash(bLFlag, bRFlag); - } - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MPLSProtocolMaskTlv) { - MPLSProtocolMaskTlv other = (MPLSProtocolMaskTlv) obj; - if (isRawValueSet) { - return Objects.equals(this.rawValue, other.rawValue); - } else { - return Objects.equals(this.bLFlag, other.bLFlag) && Objects.equals(this.bRFlag, other.bRFlag); - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - if (isRawValueSet) { - c.writeByte(rawValue); - } else { - byte temp = 0; - if (bLFlag) { - temp = (byte) (temp | LFLAG_SET); - } - if (bRFlag) { - temp = (byte) (temp | RFLAG_SET); - } - c.writeByte(temp); - } - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of MPLS Protocol Mask Tlv. - * - * @param c input channel buffer - * @return object of MPLS Protocol Mask Tlv - */ - public static PcepValueType read(ChannelBuffer c) { - byte temp = c.readByte(); - boolean bLFlag; - boolean bRFlag; - - bLFlag = (temp & LFLAG_SET) == LFLAG_SET; - bRFlag = (temp & RFLAG_SET) == RFLAG_SET; - - return new MPLSProtocolMaskTlv(bLFlag, bRFlag); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlv.java deleted file mode 100644 index db1acf09..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provide the Maximum Link Bandwidth. - */ -public class MaximumLinkBandwidthTlv implements PcepValueType { - - /* Reference :[RFC5305]/3.3. - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB34] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Maximum Link Bandwidth | - +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+- - */ - - protected static final Logger log = LoggerFactory.getLogger(MaximumLinkBandwidthTlv.class); - - public static final short TYPE = 9; //TDB34 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue Maximum-Link-Bandwidth - */ - - public MaximumLinkBandwidthTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created MaximumLinkBandwidthTlv object. - * - * @param raw value of Maximum-Link-Bandwidth - * @return object of MaximumLinkBandwidthTlv - */ - public static MaximumLinkBandwidthTlv of(final int raw) { - return new MaximumLinkBandwidthTlv(raw); - } - - /** - * Returns value of Maximum Link Bandwidth. - * - * @return rawValue Maximum Link Bandwidth - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MaximumLinkBandwidthTlv) { - MaximumLinkBandwidthTlv other = (MaximumLinkBandwidthTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of MaximumLinkBandwidthTlv. - * - * @param c input channel buffer - * @return object of MaximumLinkBandwidthTlv - */ - public static MaximumLinkBandwidthTlv read(ChannelBuffer c) { - return MaximumLinkBandwidthTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlv.java deleted file mode 100644 index 01d08cae..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provide the Maximum Reservable Link Bandwidth. - */ -public class MaximumReservableLinkBandwidthTlv implements PcepValueType { - - /* Reference :[RFC5305]/3.5. - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB35] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Maximum Reservable Link Bandwidth | - +-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+- - */ - - protected static final Logger log = LoggerFactory.getLogger(MaximumReservableLinkBandwidthTlv.class); - - public static final short TYPE = 10; // TDB35 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue MaximumReservableLinkBandwidth - */ - public MaximumReservableLinkBandwidthTlv(int rawValue) { - log.debug("MaximumReservableLinkBandwidthTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created MaximumReservableLinkBandwidth object. - * - * @param raw MaximumReservableLinkBandwidth - * @return object of MaximumReservableLinkBandwidthTlv - */ - public static MaximumReservableLinkBandwidthTlv of(final int raw) { - return new MaximumReservableLinkBandwidthTlv(raw); - } - - /** - * Returns value of Maximum Reservable Link Bandwidth. - * @return rawValue Maximum Reservable Link Bandwidth - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MaximumReservableLinkBandwidthTlv) { - MaximumReservableLinkBandwidthTlv other = (MaximumReservableLinkBandwidthTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of MaximumReservableLinkBandwidthTlv. - * - * @param c input channel buffer - * @return object of MaximumReservableLinkBandwidthTlv - */ - public static MaximumReservableLinkBandwidthTlv read(ChannelBuffer c) { - return MaximumReservableLinkBandwidthTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java deleted file mode 100644 index 6f193384..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * NexthopIPv6addressTlv provides Ipv4 address of next hop. - */ -public class NexthopIPv4addressTlv implements PcepValueType { - - /* - Reference :draft-zhao-pce-pcep-extension-for-pce-controller-01 - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TBD | Length = 8 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | nexthop IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NEXTHOP-IPV4-ADDRESS TLV - - */ - protected static final Logger log = LoggerFactory.getLogger(NexthopIPv4addressTlv.class); - - public static final short TYPE = 2; //to be defined - //Length is header + value - public static final short LENGTH = 8; - public static final short VALUE_LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize next hop IPv4 address. - * - * @param rawValue next hop IPv4 address - */ - public NexthopIPv4addressTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Return next hop IPv4 address tlv. - * - * @param raw of next hop IPv4 address - * @return object of NexthopIPv4addressTlv - */ - public static NexthopIPv4addressTlv of(final int raw) { - return new NexthopIPv4addressTlv(raw); - } - - /** - * Returns next hop IPv4 address. - * - * @return next hop IPv4 address - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NexthopIPv4addressTlv) { - NexthopIPv4addressTlv other = (NexthopIPv4addressTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of NexthopIPv4addressTlv. - * - * @param c type of channel buffer - * @return object of NexthopIPv4addressTlv - */ - public static NexthopIPv4addressTlv read(ChannelBuffer c) { - return NexthopIPv4addressTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Ipv4Address ", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java deleted file mode 100644 index 45bf7ac5..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * NexthopIPv6addressTlv provides Ipv6 address of next hop. - */ -public class NexthopIPv6addressTlv implements PcepValueType { - - /* - Reference: draft-zhao-pce-pcep-extension-for-pce-controller-01. - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TBD | Length = 20 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // nexthop IPv6 address (16 bytes) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NEXTHOP-IPV6-ADDRESS TLV: - - */ - protected static final Logger log = LoggerFactory.getLogger(NexthopIPv6addressTlv.class); - - public static final short TYPE = 100; //to be defined - //Length is header + value - public static final short LENGTH = 20; - public static final short VALUE_LENGTH = 16; - - private static final byte[] NONE_VAL = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - public static final NexthopIPv6addressTlv NONE = new NexthopIPv6addressTlv(NONE_VAL); - - private static final byte[] NO_MASK_VAL = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF }; - public static final NexthopIPv6addressTlv NO_MASK = new NexthopIPv6addressTlv(NO_MASK_VAL); - public static final NexthopIPv6addressTlv FULL_MASK = NONE; - - private final byte[] rawValue; - - /** - * Constructor to initialize IP address for next hop IPv6 address tlv. - * - * @param rawValue value of Next hop ipAddress - */ - public NexthopIPv6addressTlv(byte[] rawValue) { - log.debug("NexthopIPv6addressTlv"); - this.rawValue = rawValue; - } - - /** - * Creates next hop IPv6 address tlv. - * - * @param raw value of Next hop ipAddress - * @return object of NexthopIPv6addressTlv - */ - //logic to be checked - public static NexthopIPv6addressTlv of(final byte[] raw) { - //check NONE_VAL - boolean bFoundNONE = true; - //value starts from 3rd byte. - for (int i = 5; i < 20; ++i) { - if (NONE_VAL[i] != raw[i]) { - bFoundNONE = false; - } - } - - if (bFoundNONE) { - return NONE; - } - - //check NO_MASK_VAL - boolean bFoundNoMask = true; - //value starts from 3rd byte. - for (int i = 5; i < 20; ++i) { - if (0xFF != raw[i]) { - bFoundNoMask = false; - } - } - if (bFoundNoMask) { - return NO_MASK; - } - return new NexthopIPv6addressTlv(raw); - } - - /** - * Returns next hop IPv6 address. - * - * @return next hop IPv6 address - */ - public byte[] getBytes() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NexthopIPv6addressTlv) { - NexthopIPv6addressTlv other = (NexthopIPv6addressTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(rawValue); - return c.writerIndex() - iStartIndex; - } - - /** - * Reads the channel buffer and returns object of NexthopIPv6addressTlv. - * - * @param c type of channel buffer - * @return object of NexthopIPv6addressTlv - */ - public static NexthopIPv6addressTlv read(ChannelBuffer c) { - byte[] yTemp = new byte[20]; - c.readBytes(yTemp, 0, 20); - return NexthopIPv6addressTlv.of(yTemp); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", LENGTH); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("IpAddress", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlv.java deleted file mode 100644 index fb4ceeff..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlv.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * NexthopUnnumberedIPv4IDTlv provides the next node's ID and Interface ID. - */ -public class NexthopUnnumberedIPv4IDTlv implements PcepValueType { - - /* - Reference : draft-zhao-pce-pcep-extension-for-pce-controller-01. - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TBD | Length = 12 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NEXTHOP-UNNUMBERED-IPV4-ID TLV - - */ - protected static final Logger log = LoggerFactory.getLogger(NexthopUnnumberedIPv4IDTlv.class); - - public static final short TYPE = 1; //to be defined - //Length is header + value - public static final short LENGTH = 12; - - private final int nodeID; - private final int interfaceID; - - /** - * constructor to initialize nodeID and interfaceID. - * - * @param nodeID node ID - * @param interfaceID interface ID - */ - public NexthopUnnumberedIPv4IDTlv(int nodeID, int interfaceID) { - this.nodeID = nodeID; - this.interfaceID = interfaceID; - } - - /** - * Returns new object of NexthopUnnumberedIPv4IDTlv. - * - * @param nodeID node ID - * @param interfaceID interface ID - * @return NexthopUnnumberedIPv4IDTlv - */ - public static NexthopUnnumberedIPv4IDTlv of(int nodeID, int interfaceID) { - return new NexthopUnnumberedIPv4IDTlv(nodeID, interfaceID); - } - - /** - * Returns Node Id. - * - * @return node ID - */ - public int getNodeID() { - return nodeID; - } - - /** - * Returns Interface Id. - * - * @return interface ID - */ - public int getInterfaceID() { - return interfaceID; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(nodeID, interfaceID); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NexthopUnnumberedIPv4IDTlv) { - NexthopUnnumberedIPv4IDTlv other = (NexthopUnnumberedIPv4IDTlv) obj; - return Objects.equals(this.nodeID, other.nodeID) && Objects.equals(this.interfaceID, other.interfaceID); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - - c.writeInt(nodeID); - c.writeInt(interfaceID); - - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of NexthopUnnumberedIPv4IDTlv. - * - * @param cb type of channel buffer - * @return object of NexthopUnnumberedIPv4IDTlv - */ - public static NexthopUnnumberedIPv4IDTlv read(ChannelBuffer cb) { - int nodeID = cb.readInt(); - int interfaceID = cb.readInt(); - return new NexthopUnnumberedIPv4IDTlv(nodeID, interfaceID); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("NodeId", nodeID) - .add("InterfaceId", interfaceID) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeFlagBitsTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeFlagBitsTlv.java deleted file mode 100644 index 019daa14..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeFlagBitsTlv.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provide node Flags bits. - */ -public class NodeFlagBitsTlv implements PcepValueType { - - /* Reference :[I-D.ietf-idr- ls-distribution] /3.3.1.1 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD21] | Length=1 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |O|T|E|B| Reserved| - +-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(NodeFlagBitsTlv.class); - - public static final short TYPE = 14; - public static final short LENGTH = 1; - public static final int SET = 1; - public static final byte OFLAG_SET = (byte) 0x80; - public static final byte TFLAG_SET = 0x40; - public static final byte EFLAG_SET = 0x20; - public static final byte BFLAG_SET = 0x10; - - private final byte rawValue; - private final boolean bOFlag; - private final boolean bTFlag; - private final boolean bEFlag; - private final boolean bBFlag; - private final boolean isRawValueSet; - - /** - * constructor to initialize rawValue. - * - * @param rawValue of Node Flag Bits TLV - */ - public NodeFlagBitsTlv(byte rawValue) { - this.rawValue = rawValue; - isRawValueSet = true; - this.bOFlag = (rawValue & OFLAG_SET) == OFLAG_SET; - this.bTFlag = (rawValue & TFLAG_SET) == TFLAG_SET; - this.bEFlag = (rawValue & EFLAG_SET) == EFLAG_SET; - this.bBFlag = (rawValue & BFLAG_SET) == BFLAG_SET; - } - - /** - * constructor to initialize different Flags. - * - * @param bOFlag O-flag - * @param bTFlag T-flag - * @param bEFlag E-flag - * @param bBFlag B-flag - */ - public NodeFlagBitsTlv(boolean bOFlag, boolean bTFlag, boolean bEFlag, boolean bBFlag) { - this.bOFlag = bOFlag; - this.bTFlag = bTFlag; - this.bEFlag = bEFlag; - this.bBFlag = bBFlag; - this.rawValue = 0; - this.isRawValueSet = false; - } - - /** - * Returns newly created NodeFlagBitsTlv object. - * - * @param raw of Node Flag Bits TLV - * @return new object of NodeFlagBitsTlv - */ - public static NodeFlagBitsTlv of(final byte raw) { - return new NodeFlagBitsTlv(raw); - } - - /** - * Returns raw value of NodeFlagBitsTlv. - * - * @return rawValue raw value - */ - public byte getbyte() { - return rawValue; - } - - /** - * Returns O-flag. - * - * @return bOFlag O-flag - */ - public boolean getOFlag() { - return bOFlag; - } - - /** - * Returns T-flag. - * - * @return bTFlag T-flag - */ - public boolean getTFlag() { - return bTFlag; - } - - /** - * Returns E-flag. - * - * @return bEFlag E-flag - */ - public boolean getEFlag() { - return bEFlag; - } - - /** - * Returns B-flag. - * - * @return bBFlag B-flag - */ - public boolean getBFlag() { - return bBFlag; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - if (isRawValueSet) { - return Objects.hash(rawValue); - } else { - return Objects.hash(bOFlag, bTFlag, bEFlag, bBFlag); - } - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NodeFlagBitsTlv) { - NodeFlagBitsTlv other = (NodeFlagBitsTlv) obj; - if (isRawValueSet) { - return Objects.equals(this.rawValue, other.rawValue); - } else { - return Objects.equals(this.bOFlag, other.bOFlag) && Objects.equals(this.bTFlag, other.bTFlag) - && Objects.equals(this.bEFlag, other.bEFlag) && Objects.equals(this.bBFlag, other.bBFlag); - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - if (isRawValueSet) { - c.writeByte(rawValue); - } else { - byte temp = 0; - if (bOFlag) { - temp = (byte) (temp | OFLAG_SET); - } - if (bTFlag) { - temp = (byte) (temp | TFLAG_SET); - } - if (bEFlag) { - temp = (byte) (temp | EFLAG_SET); - } - if (bBFlag) { - temp = (byte) (temp | BFLAG_SET); - } - c.writeByte(temp); - } - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of NodeFlagBitsTlv. - * - * @param c input channel buffer - * @return object of NodeFlagBitsTlv - */ - public static PcepValueType read(ChannelBuffer c) { - - return NodeFlagBitsTlv.of(c.readByte()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("OFlag", (bOFlag) ? 1 : 0) - .add("TFlag", (bTFlag) ? 1 : 0) - .add("EFlag", (bEFlag) ? 1 : 0) - .add("BFlag", (bBFlag) ? 1 : 0) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameTlv.java deleted file mode 100644 index e535a358..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameTlv.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provide the name for the node. - */ -public class NodeNameTlv implements PcepValueType { - - /* reference :[I-D.ietf-idr-ls-distribution]/3.3.1.3 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD23] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Node Name (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(NodeNameTlv.class); - - public static final short TYPE = 1007; //TODO:check and change TBD23 - public final short hLength; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue of Node Name - * @param hLength length - */ - public NodeNameTlv(byte[] rawValue, short hLength) { - log.debug("NodeNameTlv"); - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns newly created NodeNameTlv object. - * - * @param raw of NodeName - * @param hLength length - * @return new object of Node Name Tlv - */ - public static NodeNameTlv of(final byte[] raw, short hLength) { - return new NodeNameTlv(raw, hLength); - } - - /** - * Returns RawValue for NodeName. - * - * @return rawValue raw value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NodeNameTlv) { - NodeNameTlv other = (NodeNameTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of NodeNameTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of Node Name TLV - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iNodeName = new byte[hLength]; - c.readBytes(iNodeName, 0, hLength); - return new NodeNameTlv(iNodeName, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OSPFareaIDsubTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OSPFareaIDsubTlv.java deleted file mode 100644 index 2233ab0d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OSPFareaIDsubTlv.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides area ID for OSPF area. - */ -public class OSPFareaIDsubTlv implements PcepValueType { - - /* Reference :draft-ietf-idr-ls-distribution-10. - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD12] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | opaque value (32 Bit AS Number) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(OSPFareaIDsubTlv.class); - - public static final short TYPE = 600; //TODD:change this TBD12 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue area ID for OSPF area. - */ - public OSPFareaIDsubTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created OSPFareaIDsubTlv object. - * - * @param raw opaque value of AreaID - * @return new object of OSPF area ID sub TLV - */ - public static OSPFareaIDsubTlv of(final int raw) { - return new OSPFareaIDsubTlv(raw); - } - - /** - * Returns RawValue opaque value of AreaID. - * - * @return rawValue Area ID - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OSPFareaIDsubTlv) { - OSPFareaIDsubTlv other = (OSPFareaIDsubTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of OSPFAreaIdSubTlv. - * - * @param c input channel buffer - * @return object of OSPFAreaIdSubTlv - */ - public static OSPFareaIDsubTlv read(ChannelBuffer c) { - return OSPFareaIDsubTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlv.java deleted file mode 100644 index 1af332eb..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlv.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides Opaque Link Attribute. - */ -public class OpaqueLinkAttributeTlv implements PcepValueType { - - /* - * TLV format. - * Reference :[I-D.ietf-idr-attributesls-distribution] /3.3.2.6 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TBD42 | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Opaque link attributes (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(OpaqueLinkAttributeTlv.class); - - public static final short TYPE = 1097; //TODO:NEED TO HANDLE TDB42 - private final short hLength; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue of Opaque Link Attribute - * @param hLength length - */ - public OpaqueLinkAttributeTlv(byte[] rawValue, short hLength) { - log.debug("OpaqueLinkAttributeTlv"); - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns newly created OpaqueLinkAttributeTlv object. - * - * @param raw of Opaque Link Attribute - * @param hLength length - * @return new object of OpaqueLinkAttributeTlv - */ - public static OpaqueLinkAttributeTlv of(final byte[] raw, short hLength) { - return new OpaqueLinkAttributeTlv(raw, hLength); - } - - /** - * Returns raw value of Opaque Link Attribute Tlv. - * @return rawValue raw value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OpaqueLinkAttributeTlv) { - OpaqueLinkAttributeTlv other = (OpaqueLinkAttributeTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of OpaqueLinkAttributeTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of Opaque Link Attribute Tlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iOpaqueValue = new byte[hLength]; - c.readBytes(iOpaqueValue, 0, hLength); - return new OpaqueLinkAttributeTlv(iOpaqueValue, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodeAttributeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodeAttributeTlv.java deleted file mode 100644 index 5aec8c5f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodeAttributeTlv.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides Opaque node attributes. - */ -public class OpaqueNodeAttributeTlv implements PcepValueType { - /* - * Reference [I-D.ietf-idr-Properties ls-distribution] /3.3.1.5 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD22] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Opaque node attributes (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(OpaqueNodeAttributeTlv.class); - - public static final short TYPE = 1001; - private final short hLength; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue Opaque Node Attribute - * @param hLength length - */ - public OpaqueNodeAttributeTlv(byte[] rawValue, short hLength) { - - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns newly created OpaqueNodeAttributeTlv object. - * - * @param raw value of Opaque Node Attribute - * @param hLength length - * @return new object of Opaque Node Attribute Tlv - */ - public static OpaqueNodeAttributeTlv of(final byte[] raw, short hLength) { - return new OpaqueNodeAttributeTlv(raw, hLength); - } - - /** - * Returns raw value of Opaque Node Attribute Tlv. - * - * @return rawValue of Opaque Node Attribute - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OpaqueLinkAttributeTlv) { - OpaqueNodeAttributeTlv other = (OpaqueNodeAttributeTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of Opaque Node Attribute Tlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of OpaqueNodeAttributeTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iOpaqueValue = new byte[hLength]; - c.readBytes(iOpaqueValue, 0, hLength); - return new OpaqueNodeAttributeTlv(iOpaqueValue, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathKeySubObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathKeySubObject.java deleted file mode 100644 index 86ad042a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathKeySubObject.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Path Key SubObject: When a PCC needs to expand a path-key in order to expand a CPS, it - * issues a Path Computation Request (PCReq) to the PCE identified in - * the PKS in the RSVP-TE ERO that it is processing. The PCC supplies - * the PKS to be expanded in a PATH-KEY SubObject in the PCReq message. - */ -public class PathKeySubObject implements PcepValueType { - - /* - Pathkey subobject(RFC 5520): - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | Path-Key | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PCE ID (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(PathKeySubObject.class); - - public static final byte TYPE = 0x40; - public static final byte LENGTH = 8; - private final short pathKey; - private final int pceID; - - /** - * Constructor for Path Key sub Object which initializes pathKey and pceId. - * - * @param pathKey path key provided by PCC - * @param pceID ID for the PCE - */ - public PathKeySubObject(short pathKey, int pceID) { - this.pathKey = pathKey; - this.pceID = pceID; - } - - /** - * Creates Path Key sub Object which initializes pathKey and pceId. - * - * @param pathKey path key provided by PCC - * @param pceID PCE id - * @return new object of type path key sub object - */ - public static PathKeySubObject of(short pathKey, int pceID) { - return new PathKeySubObject(pathKey, pceID); - } - - /** - * Returns Path Key. - * - * @return pathKey - */ - public short getPathKey() { - return pathKey; - } - - /** - * Returns pceID. - * - * @return pceID - */ - public int getPceId() { - return pceID; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(pathKey, pceID); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PathKeySubObject) { - PathKeySubObject other = (PathKeySubObject) obj; - return Objects.equals(this.pathKey, other.pathKey) && Objects.equals(this.pceID, other.pceID); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - - c.writeShort(pathKey); - c.writeInt(pceID); - - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns new path key sub objects. - * - * @param c of type channel buffer - * @return object of type path key sub object - */ - public static PcepValueType read(ChannelBuffer c) { - Short pathKey = c.readShort(); - int pceID = c.readInt(); - return new PathKeySubObject(pathKey, pceID); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("PathKey", pathKey) - .add("PceID", pceID) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathSetupTypeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathSetupTypeTlv.java deleted file mode 100644 index 3e8f9676..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathSetupTypeTlv.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcepSetup type tlv. - */ -public class PathSetupTypeTlv implements PcepValueType { - - /* - Reference : draft-sivabalan-pce-lsp-setup-type-02. - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | PST | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Figure 1: PATH-SETUP-TYPE TLV - - */ - protected static final Logger log = LoggerFactory.getLogger(PathSetupTypeTlv.class); - - public static final short TYPE = 0; //TODO : need to reassign the value as per RFC - public static final short LENGTH = 4; - - private final byte pst; - private final int rawValue; - private final boolean isRawValueSet; - - /** - * Constructor to initialize parameters for path setup type tlv. - * - * @param rawValue parameter for path setup type tlv - */ - public PathSetupTypeTlv(final int rawValue) { - this.rawValue = rawValue; - this.isRawValueSet = true; - this.pst = (byte) rawValue; - } - - /** - * Constructor to initialize pst. - * - * @param pst PST - */ - public PathSetupTypeTlv(byte pst) { - this.pst = pst; - this.rawValue = 0; - this.isRawValueSet = false; - } - - /** - * Returns Object of path setup type tlv. - * - * @param raw parameter for path setup type tlv - * @return object of PathSetupTypeTlv - */ - public static PathSetupTypeTlv of(final int raw) { - return new PathSetupTypeTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns parameters for path setup type tlv. - * - * @return parameters for path setup type tlv - */ - public int getInt() { - return rawValue; - } - - /** - * Returns the pst value. - * - * @return pst value - */ - public byte getPst() { - return pst; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(pst); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PathSetupTypeTlv) { - PathSetupTypeTlv other = (PathSetupTypeTlv) obj; - return Objects.equals(this.pst, other.pst); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(pst); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Returns the object of type PathSetupTypeTlv. - * - * @param c is type Channel buffer - * @return object of PathSetupTypeTlv - */ - public static PathSetupTypeTlv read(ChannelBuffer c) { - return PathSetupTypeTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("PST", pst) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PceccCapabilityTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PceccCapabilityTlv.java deleted file mode 100644 index b8ae1e87..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PceccCapabilityTlv.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PceccCapabilityTlv. - */ -public class PceccCapabilityTlv implements PcepValueType { - - /* PCECC CAPABILITY TLV - * Reference : draft-zhao-pce-pcep-extension-for-pce-controller-01, section-7.1.1 - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=32 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags |G|L| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(PceccCapabilityTlv.class); - - public static final short TYPE = 32; - public static final short LENGTH = 4; - public static final int SET = 1; - public static final byte LFLAG_CHECK = 0x01; - public static final byte GFLAG_CHECK = 0x02; - - private final boolean bGFlag; - private final boolean bLFlag; - - private final int rawValue; - private final boolean isRawValueSet; - - /** - * Constructor to initialize raw Value. - * - * @param rawValue raw value - */ - public PceccCapabilityTlv(final int rawValue) { - this.rawValue = rawValue; - this.isRawValueSet = true; - - bLFlag = (rawValue & LFLAG_CHECK) == LFLAG_CHECK; - bGFlag = (rawValue & GFLAG_CHECK) == GFLAG_CHECK; - } - - /** - * Constructor to initialize G-flag L-flag. - * @param bGFlag G-flag - * @param bLFlag L-flag - */ - public PceccCapabilityTlv(boolean bGFlag, boolean bLFlag) { - this.bGFlag = bGFlag; - this.bLFlag = bLFlag; - this.rawValue = 0; - this.isRawValueSet = false; - } - - /** - * Returns newly created PceccCapabilityTlv object. - * - * @param raw value - * @return object of Pcecc Capability Tlv - */ - public static PceccCapabilityTlv of(final int raw) { - return new PceccCapabilityTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns G-flag. - * @return bGFlag G-flag - */ - public boolean getGFlag() { - return bGFlag; - } - - /** - * Returns L-flag. - * @return bLFlag L-flag - */ - public boolean getLFlag() { - return bLFlag; - } - - /** - * Returns the raw value. - * @return rawValue Flags - */ - public int getInt() { - return rawValue; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - if (isRawValueSet) { - return Objects.hash(rawValue); - } else { - return Objects.hash(bLFlag, bGFlag); - } - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PceccCapabilityTlv) { - PceccCapabilityTlv other = (PceccCapabilityTlv) obj; - if (isRawValueSet) { - return Objects.equals(this.rawValue, other.rawValue); - } else { - return Objects.equals(this.bGFlag, other.bGFlag) && Objects.equals(this.bLFlag, other.bLFlag); - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - int temp = 0; - c.writeShort(TYPE); - c.writeShort(LENGTH); - if (isRawValueSet) { - c.writeInt(rawValue); - } else { - if (bGFlag) { - temp = temp | GFLAG_CHECK; - } - if (bLFlag) { - temp = temp | LFLAG_CHECK; - } - c.writeInt(temp); - } - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads channel buffer and returns object of PceccCapabilityTlv. - * - * @param c input channel buffer - * @return object of PceccCapabilityTlv - */ - public static PceccCapabilityTlv read(ChannelBuffer c) { - return PceccCapabilityTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepErrorDetailInfo.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepErrorDetailInfo.java deleted file mode 100644 index 83a62103..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepErrorDetailInfo.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -/** - * Provide the PCEP Error Info Details. - */ -public final class PcepErrorDetailInfo { - - private PcepErrorDetailInfo() { - } - - // Error Types - /** - Error- Meaning Reference:RFC 5440 - Type - 1 PCEP session establishment failure - Error-value=1: reception of an invalid Open message or a non Open message. - Error-value=2: no Open message received before the expiration of the OpenWait timer - Error-value=3: unacceptable and non-negotiable session characteristics - Error-value=4: unacceptable but negotiable session characteristics - Error-value=5: reception of a second Open message with still unacceptable session characteristics - Error-value=6: reception of a PCErr message proposing unacceptable session characteristics - Error-value=7: No Keepalive or PCErr message received before the expiration of the KeepWait timer - Error-value=8: PCEP version not supported - 2 Capability not supported - 3 Unknown Object - Error-value=1: Unrecognized object class - Error-value=2: Unrecognized object Type - 4 Not supported object - Error-value=1: Not supported object class - Error-value=2: Not supported object Type - 5 Policy violation - Error-value=1: C bit of the METRIC object set (request rejected) - Error-value=2: O bit of the RP object cleared (request rejected) - 6 Mandatory Object missing - Error-value=1: RP object missing - Error-value=2: RRO missing for a re-optimization request (R bit of the RP object set) - Error-value=3: END-POINTS object missing - 7 Synchronized path computation request missing - 8 Unknown request reference - 9 Attempt to establish a second PCEP session - 10 Reception of an invalid object - Error-value=1: reception of an object with P flag not set although the P flag must be - set according to this specification. - */ - public static final byte ERROR_TYPE_1 = 1; - public static final byte ERROR_TYPE_2 = 2; - public static final byte ERROR_TYPE_3 = 3; - public static final byte ERROR_TYPE_4 = 4; - public static final byte ERROR_TYPE_5 = 5; - public static final byte ERROR_TYPE_6 = 6; - public static final byte ERROR_TYPE_7 = 7; - public static final byte ERROR_TYPE_8 = 8; - public static final byte ERROR_TYPE_9 = 9; - public static final byte ERROR_TYPE_10 = 10; - - // Error Values - public static final byte ERROR_VALUE_1 = 1; - public static final byte ERROR_VALUE_2 = 2; - public static final byte ERROR_VALUE_3 = 3; - public static final byte ERROR_VALUE_4 = 4; - public static final byte ERROR_VALUE_5 = 5; - public static final byte ERROR_VALUE_6 = 6; - public static final byte ERROR_VALUE_7 = 7; - public static final byte ERROR_VALUE_8 = 8; - public static final byte ERROR_VALUE_9 = 9; - public static final byte ERROR_VALUE_10 = 10; -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDbVerTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDbVerTlv.java deleted file mode 100644 index 7a612454..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDbVerTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides CEP LABEL DB VERSION TLV which contains LSP State DB Version (32 Bit ). - */ -public class PcepLabelDbVerTlv implements PcepValueType { - - /* PCEP LABEL DB VERSION TLV format - - Reference : draft-ietf-pce-stateful-sync-optimizations-02, section 3.3.1 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=23 | Length=8 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LSP State DB Version | - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(PcepLabelDbVerTlv.class); - - public static final short TYPE = 34; - public static final short LENGTH = 8; - private final long rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue of Pcep Label Db Version Tlv - */ - public PcepLabelDbVerTlv(final long rawValue) { - log.debug("PcepLabelDbVerTlv"); - this.rawValue = rawValue; - } - - /** - * Returns newly created PcepLabelDbVerTlv object. - * - * @param raw LSP State DB Version - * @return object of PcepLabelDbVerTlv - */ - public static PcepLabelDbVerTlv of(final long raw) { - return new PcepLabelDbVerTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns LSP State DB Version. - * @return raw value - */ - public long getLong() { - return rawValue; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PceccCapabilityTlv) { - PcepLabelDbVerTlv other = (PcepLabelDbVerTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeLong(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of PcepLabelDbVerTlv. - * - * @param c input channel buffer - * @return object of PcepLabelDbVerTlv - */ - public static PcepLabelDbVerTlv read(ChannelBuffer c) { - return PcepLabelDbVerTlv.of(c.readLong()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDownload.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDownload.java deleted file mode 100644 index e2ad069c..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDownload.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.LinkedList; - -import org.onosproject.pcepio.protocol.PcepLabelObject; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Label. - * REference :draft-zhao-pce-pcep-extension-for-pce-controller-01. - */ -public class PcepLabelDownload { - - protected static final Logger log = LoggerFactory.getLogger(PcepLabelDownload.class); - - //PCEP SPR Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //LinkList of Labels - private LinkedList<PcepLabelObject> llLabelList; - - /** - * Returns SRP Object. - * - * @return PCEP SRP Object - */ - public PcepSrpObject getSrpObject() { - return srpObject; - } - - /** - * Sets the Pcep SRP Object. - * - * @param srpobj PCEP SRP Object - */ - public void setSrpObject(PcepSrpObject srpobj) { - this.srpObject = srpobj; - } - - /** - * Returns LSP Object. - * - * @return PCEP LSP Object - */ - public PcepLspObject getLspObject() { - return lspObject; - } - - /** - * Sets the Pcep LSP Object. - * - * @param lspObject PCEP LSP Object - */ - public void setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - } - - /** - * Returns a list of labels. - * - * @return llLabelList list of pcep label objects - */ - public LinkedList<PcepLabelObject> getLabelList() { - return llLabelList; - } - - /** - * set the llLabelList list of type PcepLableObject. - * - * @param llLabelList list of pcep label objects - */ - public void setLabelList(LinkedList<PcepLabelObject> llLabelList) { - this.llLabelList = llLabelList; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("SrpObject", srpObject) - .add("LspObject", lspObject) - .add("LabelObjectList", llLabelList) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelMap.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelMap.java deleted file mode 100644 index 2d3a953f..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelMap.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import org.onosproject.pcepio.protocol.PcepFecObject; -import org.onosproject.pcepio.protocol.PcepLabelObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provide PCEP Label Map. - * Reference :draft-zhao-pce-pcep-extension-for-pce-controller-01. - */ -public class PcepLabelMap { - - protected static final Logger log = LoggerFactory.getLogger(PcepLabelMap.class); - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP Label Object - private PcepLabelObject labelObject; - //PCEP FEC Object - private PcepFecObject fecObject; - - /** - * Sets Fec Object. - * - * @param fecObject PCEP fec object - */ - public void setFECObject(PcepFecObject fecObject) { - this.fecObject = fecObject; - } - - /** - * Returns the PcepFecObject. - * - * @return PCEP fec object - */ - public PcepFecObject getFECObject() { - return this.fecObject; - } - - /** - * Returns SRP Object. - * - * @return PCEP SRP Object - */ - public PcepSrpObject getSrpObject() { - return srpObject; - } - - /** - * Sets the PCEP Srp Object. - * - * @param srpObject PCEP SRP Object - */ - public void setSrpObject(PcepSrpObject srpObject) { - this.srpObject = srpObject; - } - - /** - * Returns labelObject. - * - * @return PCEP label object - */ - public PcepLabelObject getLabelObject() { - return labelObject; - } - - /** - * Sets the Pcep labelObject. - * - * @param labelObject PCEP label object - */ - public void setLabelObject(PcepLabelObject labelObject) { - this.labelObject = labelObject; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("SrpObject", srpObject) - .add("LabelObject", labelObject) - .add("FecObject", fecObject) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4Adjacency.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4Adjacency.java deleted file mode 100644 index 1ed0ab14..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4Adjacency.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Nai Ipv4 Adjacency. - */ -public class PcepNaiIpv4Adjacency implements PcepNai { - - public static final byte ST_TYPE = 0x03; - private final int localIpv4Addr; - private final int remoteIpv4Addr; - - /** - * Constructor to initialize variables. - * - * @param localIpv4 local ipv4 address - * @param remoteIpv4 remote ipv4 address - */ - public PcepNaiIpv4Adjacency(int localIpv4, int remoteIpv4) { - this.localIpv4Addr = localIpv4; - this.remoteIpv4Addr = remoteIpv4; - } - - /** - * Returns Object of Pcep nai Ipv4 Adjacency. - * - * @param localIpv4Addr local ipv4 address - * @param remoteIpv4Addr remote ipv4 address - * @return Object of Pcep nai Ipv4 Adjacency - */ - public static PcepNaiIpv4Adjacency of(int localIpv4Addr, int remoteIpv4Addr) { - return new PcepNaiIpv4Adjacency(localIpv4Addr, remoteIpv4Addr); - } - - @Override - public byte getType() { - return ST_TYPE; - } - - @Override - public int write(ChannelBuffer bb) { - int iLenStartIndex = bb.writerIndex(); - bb.writeInt(localIpv4Addr); - bb.writeInt(remoteIpv4Addr); - return bb.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of PcepNAIIpv4AdjacencyVer1. - * - * @param cb of channel buffer - * @return object of PcepNAIIpv4Adjacency - */ - public static PcepNaiIpv4Adjacency read(ChannelBuffer cb) { - int localIpv4 = cb.readInt(); - int remoteIpv4 = cb.readInt(); - return new PcepNaiIpv4Adjacency(localIpv4, remoteIpv4); - } - - @Override - public int hashCode() { - return Objects.hash(localIpv4Addr, remoteIpv4Addr); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PcepNaiIpv4Adjacency) { - PcepNaiIpv4Adjacency other = (PcepNaiIpv4Adjacency) obj; - return Objects.equals(this.localIpv4Addr, other.localIpv4Addr) - && Objects.equals(this.remoteIpv4Addr, other.remoteIpv4Addr); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localIPv4Address", localIpv4Addr) - .add("remoteIPv4Address", remoteIpv4Addr) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeId.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeId.java deleted file mode 100644 index 1d4ce5d4..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeId.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Nai Ipv4 Node Id. - */ -public class PcepNaiIpv4NodeId implements PcepNai { - - public static final byte ST_TYPE = 0x01; - - private final int ipv4NodeId; - - /** - * Constructor to initialize ipv4NodeId. - * - * @param value ipv4 node id - */ - public PcepNaiIpv4NodeId(int value) { - this.ipv4NodeId = value; - } - - /** - * Returns an object of PcepNaiIpv4NodeId. - * - * @param value ipv4 node id - * @return object of PcepNaiIpv4NodeId - */ - public static PcepNaiIpv4NodeId of(int value) { - return new PcepNaiIpv4NodeId(value); - } - - @Override - public byte getType() { - return ST_TYPE; - } - - @Override - public int write(ChannelBuffer bb) { - int iLenStartIndex = bb.writerIndex(); - bb.writeInt(ipv4NodeId); - return bb.writerIndex() - iLenStartIndex; - } - - /** - * Reads from the channel buffer and returns object of PcepNAIIpv4NodeIdVer1. - * - * @param bb of channel buffer. - * @return object of PcepNAIIpv4NodeIdVer1 - */ - public static PcepNaiIpv4NodeId read(ChannelBuffer bb) { - return new PcepNaiIpv4NodeId(bb.readInt()); - } - - @Override - public int hashCode() { - return Objects.hash(ipv4NodeId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PcepNaiIpv4NodeId) { - PcepNaiIpv4NodeId other = (PcepNaiIpv4NodeId) obj; - return Objects.equals(this.ipv4NodeId, other.ipv4NodeId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IPv4NodeId", ipv4NodeId) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java deleted file mode 100644 index 3a177d99..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Nai Ipv6 Adjacency. - */ -public class PcepNaiIpv6Adjacency implements PcepNai { - - public static final byte ST_TYPE = 0x04; - public static final byte IPV6_LEN = 0x10; - - private final byte[] localIpv6Addr; - private final byte[] remoteIpv6Addr; - - /** - * Constructor to initialize local ipv6 and remote ipv6. - * - * @param localIpv6 local ipv6 address - * @param remoteIpv6 remote ipv6 address - */ - public PcepNaiIpv6Adjacency(byte[] localIpv6, byte[] remoteIpv6) { - this.localIpv6Addr = localIpv6; - this.remoteIpv6Addr = remoteIpv6; - } - - @Override - public byte getType() { - return ST_TYPE; - } - - @Override - public int write(ChannelBuffer bb) { - int iLenStartIndex = bb.writerIndex(); - bb.writeBytes(localIpv6Addr); - bb.writeBytes(remoteIpv6Addr); - return bb.writerIndex() - iLenStartIndex; - } - - /** - * Reads from channel buffer and returns object of PcepNAIIpv6AdjacencyVer1. - * - * @param bb of type channel buffer - * @return object of PcepNAIIpv6AdjacencyVer1 - */ - public static PcepNaiIpv6Adjacency read(ChannelBuffer bb) { - byte[] localIpv6 = new byte[IPV6_LEN]; - bb.readBytes(localIpv6, 0, IPV6_LEN); - byte[] remoteIpv6 = new byte[IPV6_LEN]; - bb.readBytes(remoteIpv6, 0, IPV6_LEN); - return new PcepNaiIpv6Adjacency(localIpv6, remoteIpv6); - } - - @Override - public int hashCode() { - return Objects.hash(localIpv6Addr, remoteIpv6Addr); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PcepNaiIpv6Adjacency) { - PcepNaiIpv6Adjacency other = (PcepNaiIpv6Adjacency) obj; - return Objects.equals(this.localIpv6Addr, other.localIpv6Addr) - && Objects.equals(this.remoteIpv6Addr, other.remoteIpv6Addr); - } - return false; - } - - /** - * Creates object of PcepNaiIpv6Adjacency with local ipv6 address and remote ipv6 address. - * - * @param localIpv6Addr local ipv6 address - * @param remoteIpv6Addr remote ipv6 address - * @return object of PcepNaiIpv6Adjacency - */ - - public static PcepNaiIpv6Adjacency of(final byte[] localIpv6Addr, final byte[] remoteIpv6Addr) { - return new PcepNaiIpv6Adjacency(localIpv6Addr, remoteIpv6Addr); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localIPV6Address", localIpv6Addr) - .add("remoteIPV6Address", remoteIpv6Addr) - .toString(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java deleted file mode 100644 index 3b7d52fd..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Nai Ipv6 Node Id. - */ -public class PcepNaiIpv6NodeId implements PcepNai { - - public static final byte ST_TYPE = 0x02; - public static final byte IPV6_LEN = 0x10; - - private final byte[] ipv6NodeId; - - /** - * Constructor to initialize ipv6NodeId. - * - * @param value ipv6 node id - */ - public PcepNaiIpv6NodeId(byte[] value) { - this.ipv6NodeId = value; - } - - /** - * Return object of Pcep Nai Ipv6 Node ID. - * - * @param ipv6NodeId Ipv6 node ID. - * @return object of Pcep Nai Ipv6 Node ID. - */ - public static PcepNaiIpv6NodeId of(byte[] ipv6NodeId) { - return new PcepNaiIpv6NodeId(ipv6NodeId); - } - - @Override - public byte getType() { - return ST_TYPE; - } - - @Override - public int write(ChannelBuffer cb) { - int iLenStartIndex = cb.writerIndex(); - cb.writeBytes(ipv6NodeId); - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Reads from the channel buffer and returns object of PcepNAIIpv6NodeId. - * - * @param cb of type channel buffer. - * @return object of PcepNAIIpv6NodeId - */ - public static PcepNaiIpv6NodeId read(ChannelBuffer cb) { - byte[] ipv6NodeId = new byte[IPV6_LEN]; - cb.readBytes(ipv6NodeId, 0, IPV6_LEN); - return new PcepNaiIpv6NodeId(ipv6NodeId); - } - - @Override - public int hashCode() { - return Objects.hash(ipv6NodeId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PcepNaiIpv6NodeId) { - PcepNaiIpv6NodeId other = (PcepNaiIpv6NodeId) obj; - return Objects.equals(this.ipv6NodeId, other.ipv6NodeId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IPV6NodeID", ipv6NodeId) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4.java deleted file mode 100644 index 4e8926cf..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Nai Unnumbered Adjacency Ipv4. - */ -public class PcepNaiUnnumberedAdjacencyIpv4 implements PcepNai { - /** - * draft-ietf-pce-segment-routing-03 section 5.3.2. - */ - public static final byte ST_TYPE = 0x05; - - private final int localNodeId; - private final int localInterfaceId; - private final int remoteNodeId; - private final int remoteInterfaceId; - - /** - * Constructor to initialize all the member variables. - * - * @param localNodeId local node id - * @param localInterfaceId local interface id - * @param remoteNodeId remote node id - * @param remoteInterfaceId remote interface id - */ - public PcepNaiUnnumberedAdjacencyIpv4(int localNodeId, int localInterfaceId, int remoteNodeId, - int remoteInterfaceId) { - this.localNodeId = localNodeId; - this.localInterfaceId = localInterfaceId; - this.remoteNodeId = remoteNodeId; - this.remoteInterfaceId = remoteInterfaceId; - } - - /** - * Returns PCEP Nai Unnumbered Adjacency Ipv4 object. - * - * @param localNodeId local node id - * @param localInterfaceId local interface if - * @param remoteNodeId remote node id - * @param remoteInterfaceId remote interface id - * @return PCEP Nai Unnumbered Adjacency Ipv4 object - */ - public static PcepNaiUnnumberedAdjacencyIpv4 of(int localNodeId, int localInterfaceId, int remoteNodeId, - int remoteInterfaceId) { - return new PcepNaiUnnumberedAdjacencyIpv4(localNodeId, localInterfaceId, remoteNodeId, remoteInterfaceId); - } - - @Override - public byte getType() { - return ST_TYPE; - } - - @Override - public int write(ChannelBuffer bb) { - int iLenStartIndex = bb.writerIndex(); - bb.writeInt(localNodeId); - bb.writeInt(localInterfaceId); - bb.writeInt(remoteNodeId); - bb.writeInt(remoteInterfaceId); - return bb.writerIndex() - iLenStartIndex; - } - - /** - * Reads from channel buffer and return object of PcepNAIUnnumberedAdjacencyIpv4. - * - * @param bb of type channel buffer - * @return object of PcepNAIUnnumberedAdjacencyIpv4 - */ - public static PcepNaiUnnumberedAdjacencyIpv4 read(ChannelBuffer bb) { - int localNodeId; - int localInterfaceId; - int remoteNodeId; - int remoteInterfaceId; - localNodeId = bb.readInt(); - localInterfaceId = bb.readInt(); - remoteNodeId = bb.readInt(); - remoteInterfaceId = bb.readInt(); - return new PcepNaiUnnumberedAdjacencyIpv4(localNodeId, localInterfaceId, remoteNodeId, remoteInterfaceId); - } - - @Override - public int hashCode() { - return Objects.hash(localNodeId, localInterfaceId, remoteNodeId, remoteInterfaceId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PcepNaiUnnumberedAdjacencyIpv4) { - PcepNaiUnnumberedAdjacencyIpv4 other = (PcepNaiUnnumberedAdjacencyIpv4) obj; - return Objects.equals(this.localNodeId, other.localNodeId) - && Objects.equals(this.localInterfaceId, other.localInterfaceId) - && Objects.equals(this.remoteNodeId, other.remoteNodeId) - && Objects.equals(this.remoteInterfaceId, other.remoteInterfaceId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localNodeId", localNodeId) - .add("localInterfaceId", localInterfaceId) - .add("remoteNodeId", remoteNodeId) - .add("remoteInterfaceId", remoteInterfaceId) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepObjectHeader.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepObjectHeader.java deleted file mode 100644 index a4af6746..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepObjectHeader.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Object Header which is common for all the objects. - * Reference : RFC 5440. - */ - -public class PcepObjectHeader { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // (Object body) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - PCEP Common Object Header - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepObjectHeader.class); - - public static final boolean REQ_OBJ_MUST_PROCESS = true; - public static final boolean REQ_OBJ_OPTIONAL_PROCESS = false; - public static final boolean RSP_OBJ_IGNORED = true; - public static final boolean RSP_OBJ_PROCESSED = false; - public static final int OBJECT_TYPE_SHIFT_VALUE = 4; - public static final byte PFLAG_SET = 0x02; - public static final byte IFLAG_SET = 0x01; - public static final int SET = 1; - private byte objClass; - private byte objType; - private boolean bPFlag; - private boolean bIFlag; - private short objLen; - - /** - * Constructor to initialize all the variables in object header. - * - * @param objClass PCEP Object class - * @param objType PCEP Object type - * @param bPFlag P flag - * @param bIFlag I flag - * @param objLen PCEP object length - */ - - public PcepObjectHeader(byte objClass, byte objType, boolean bPFlag, boolean bIFlag, short objLen) { - this.objClass = objClass; - this.objType = objType; - this.bPFlag = bPFlag; - this.bIFlag = bIFlag; - this.objLen = objLen; - } - - /** - * Sets the Object class. - * - * @param value object class - */ - public void setObjClass(byte value) { - this.objClass = value; - } - - /** - * Sets the Object TYPE. - * - * @param value object type - */ - public void setObjType(byte value) { - this.objType = value; - } - - /** - * Sets the Object P flag. - * - * @param value p flag - */ - public void setPFlag(boolean value) { - this.bPFlag = value; - } - - /** - * Sets the Object I flag. - * - * @param value I flag - */ - public void setIFlag(boolean value) { - this.bIFlag = value; - } - - /** - * Sets the Object Length. - * - * @param value object length - */ - public void setObjLen(short value) { - this.objLen = value; - } - - /** - * Returns Object's P flag. - * - * @return bPFlag P flag - */ - public boolean getPFlag() { - return this.bPFlag; - } - - /** - * Returns Object's i flag. - * - * @return bIFlag I flag - */ - public boolean getIFlag() { - return this.bIFlag; - } - - /** - * Returns Object Length. - * - * @return objLen object length - */ - public short getObjLen() { - return this.objLen; - } - - /** - * Returns Object class. - * - * @return objClass object class - */ - public byte getObjClass() { - return this.objClass; - } - - /** - * Returns Object Type. - * - * @return objType object type - */ - public byte getObjType() { - return this.objType; - } - - /** - * Writes Byte stream of PCEP object header to channel buffer. - * - * @param cb output channel buffer - * @return objLenIndex object length index in channel buffer - */ - public int write(ChannelBuffer cb) { - - cb.writeByte(this.objClass); - byte temp = (byte) (this.objType << OBJECT_TYPE_SHIFT_VALUE); - if (this.bPFlag) { - temp = (byte) (temp | PFLAG_SET); - } - if (this.bIFlag) { - temp = (byte) (temp | IFLAG_SET); - } - cb.writeByte(temp); - int objLenIndex = cb.writerIndex(); - cb.writeShort((short) 0); - return objLenIndex; - } - - /** - * Read from channel buffer and Returns PCEP Objects header. - * - * @param cb of type channel buffer - * @return PCEP Object header - */ - public static PcepObjectHeader read(ChannelBuffer cb) { - - byte objClass; - byte objType; - boolean bPFlag; - boolean bIFlag; - short objLen; - objClass = cb.readByte(); - byte temp = cb.readByte(); - bIFlag = (temp & IFLAG_SET) == IFLAG_SET; - bPFlag = (temp & PFLAG_SET) == PFLAG_SET; - objType = (byte) (temp >> OBJECT_TYPE_SHIFT_VALUE); - objLen = cb.readShort(); - return new PcepObjectHeader(objClass, objType, bPFlag, bIFlag, objLen); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectClass", objClass) - .add("ObjectType", objType) - .add("ObjectLength", objLen) - .add("PFlag", (bPFlag) ? 1 : 0) - .add("IFlag", (bIFlag) ? 1 : 0) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpErrorSpec.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpErrorSpec.java deleted file mode 100644 index 8d3c67a7..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpErrorSpec.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import org.jboss.netty.buffer.ChannelBuffer; - -/** - * Abstraction of an entity which provides PCPE RSVP error spec. - */ -public interface PcepRsvpErrorSpec extends PcepValueType { - - /** - * To write the object information to channelBuffer. - * - * @param cb of type channel buffer - */ - @Override - int write(ChannelBuffer cb); - - /** - * Returns class number. - * - * @return class number - */ - byte getClassNum(); - - /** - * Returns class type. - * - * @return class type - */ - byte getClassType(); -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv4ErrorSpec.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv4ErrorSpec.java deleted file mode 100644 index 326b66b7..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv4ErrorSpec.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Rsvp Ipv4 Error Spec. - */ -public class PcepRsvpIpv4ErrorSpec implements PcepRsvpErrorSpec { - - /* - RSVP error spec object header. - 0 1 2 3 - +-------------+-------------+-------------+-------------+ - | Length (bytes) | Class-Num | C-Type | - +-------------+-------------+-------------+-------------+ - | | - // (Object contents) // - | | - +-------------+-------------+-------------+-------------+ - - Ref : ERROR_SPEC @ RFC2205 - - IPv4 ERROR_SPEC object: Class = 6, C-Type = 1 - +-------------+-------------+-------------+-------------+ - | IPv4 Error Node Address (4 bytes) | - +-------------+-------------+-------------+-------------+ - | Flags | Error Code | Error Value | - +-------------+-------------+-------------+-------------+ - - */ - - PcepRsvpSpecObjHeader objHeader; - public static final byte CLASS_NUM = 0x06; - public static final byte CLASS_TYPE = 0x01; - public static final byte CLASS_LENGTH = 0x0c; - private int ipv4Addr; - private byte flags; - private byte errCode; - private short errValue; - - /** - * Constructor to initialize obj header, ipv4 addr, flags, err code and err value. - * - * @param objHeader rsvp ipv4 error spec object header - * @param ipv4Addr ipv4 address - * @param flags flags value - * @param errCode error code value - * @param errValue error value - */ - public PcepRsvpIpv4ErrorSpec(PcepRsvpSpecObjHeader objHeader, int ipv4Addr, byte flags, byte errCode, - short errValue) { - this.objHeader = objHeader; - this.ipv4Addr = ipv4Addr; - this.flags = flags; - this.errCode = errCode; - this.errValue = errValue; - } - - /** - * Constructor to initialize ipv4 address, flags, err code and err value. - * - * @param ipv4Addr ipv4 address - * @param flags flags value - * @param errCode error code - * @param errValue error value - */ - public PcepRsvpIpv4ErrorSpec(int ipv4Addr, byte flags, byte errCode, short errValue) { - this.objHeader = new PcepRsvpSpecObjHeader(CLASS_LENGTH, CLASS_NUM, CLASS_TYPE); - this.ipv4Addr = ipv4Addr; - this.flags = flags; - this.errCode = errCode; - this.errValue = errValue; - } - - @Override - public int write(ChannelBuffer cb) { - int objLenIndex = objHeader.write(cb); - cb.writeInt(ipv4Addr); - cb.writeByte(flags); - cb.writeByte(errCode); - cb.writeShort(errValue); - short objLen = (short) (cb.writerIndex() - objLenIndex); - cb.setShort(objLenIndex, objLen); - return objLen; - } - - /** - * Reads PCPE RSVP error spec from channel buffer and returns PCEP rsvp IPv4 error spec object. - * - * @param cb channel buffer - * @return PCEP rsvp IPv4 error spec object - */ - public static PcepRsvpErrorSpec read(ChannelBuffer cb) { - PcepRsvpSpecObjHeader objHeader; - int ipv4Addr; - byte flags; - byte errCode; - short errValue; - - objHeader = PcepRsvpSpecObjHeader.read(cb); - ipv4Addr = cb.readInt(); - flags = cb.readByte(); - errCode = cb.readByte(); - errValue = cb.readShort(); - return new PcepRsvpIpv4ErrorSpec(objHeader, ipv4Addr, flags, errCode, errValue); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return StatefulRsvpErrorSpecTlv.TYPE; - } - - @Override - public short getLength() { - return CLASS_LENGTH; - } - - @Override - public byte getClassNum() { - return CLASS_NUM; - } - - @Override - public byte getClassType() { - return CLASS_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IPv4Address", ipv4Addr) - .add("flags", flags) - .add("errorCode", errCode) - .add("errorValue", errValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv6ErrorSpec.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv6ErrorSpec.java deleted file mode 100644 index 4da1ec6d..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv6ErrorSpec.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Rsvp Ipv6 Error Spec. - */ -public class PcepRsvpIpv6ErrorSpec implements PcepRsvpErrorSpec { - - /* - 0 1 2 3 - +-------------+-------------+-------------+-------------+ - | Length (bytes) | Class-Num | C-Type | - +-------------+-------------+-------------+-------------+ - | | - // (Object contents) // - | | - +-------------+-------------+-------------+-------------+ - - Ref : ERROR_SPEC @ RFC2205 - - IPv6 ERROR_SPEC object: Class = 6, C-Type = 2 - +-------------+-------------+-------------+-------------+ - | | - + + - | | - + IPv6 Error Node Address (16 bytes) + - | | - + + - | | - +-------------+-------------+-------------+-------------+ - | Flags | Error Code | Error Value | - +-------------+-------------+-------------+-------------+ */ - - PcepRsvpSpecObjHeader objHeader; - public static final byte CLASS_NUM = 0x06; - public static final byte CLASS_TYPE = 0x02; - public static final byte CLASS_LENGTH = 0x18; - public static final byte IPV6_LEN = 0x10; - - private byte[] ipv6Addr; - private byte flags; - private byte errCode; - private short errValue; - - /** - * Constructor to initialize obj header, ipv6 addr, flags, err code and err value. - * - * @param objHeader rsvp ipv6 error spec object header - * @param ipv6Addr ipv6 address - * @param flags flags value - * @param errCode error code - * @param errValue error value - */ - public PcepRsvpIpv6ErrorSpec(PcepRsvpSpecObjHeader objHeader, byte[] ipv6Addr, byte flags, byte errCode, - short errValue) { - this.objHeader = objHeader; - this.ipv6Addr = ipv6Addr; - this.flags = flags; - this.errCode = errCode; - this.errValue = errValue; - } - - /** - * Constructor to initialize ipv6 addr, flags, err code and err value. - * - * @param ipv6Addr ipv6 address - * @param flags flags value - * @param errCode error code - * @param errValue error value - */ - public PcepRsvpIpv6ErrorSpec(byte[] ipv6Addr, byte flags, byte errCode, short errValue) { - this.objHeader = new PcepRsvpSpecObjHeader(CLASS_LENGTH, CLASS_NUM, CLASS_TYPE); - this.ipv6Addr = ipv6Addr; - this.flags = flags; - this.errCode = errCode; - this.errValue = errValue; - } - - @Override - public int write(ChannelBuffer cb) { - int objLenIndex = objHeader.write(cb); - cb.writeBytes(ipv6Addr); - cb.writeByte(flags); - cb.writeByte(errCode); - cb.writeShort(errValue); - short objLen = (short) (cb.writerIndex() - objLenIndex); - cb.setShort(objLenIndex, objLen); - return objLen; - } - - /** - * Returns PCEP rsvp IPv6 error spce object. - * - * @param cb channel buffer - * @return PCEP rsvp IPv6 error spce object - */ - public static PcepRsvpErrorSpec read(ChannelBuffer cb) { - PcepRsvpSpecObjHeader objHeader; - byte[] ipv6Addr = new byte[IPV6_LEN]; - byte flags; - byte errCode; - short errValue; - - objHeader = PcepRsvpSpecObjHeader.read(cb); - cb.readBytes(ipv6Addr, 0, IPV6_LEN); - flags = cb.readByte(); - errCode = cb.readByte(); - errValue = cb.readShort(); - return new PcepRsvpIpv6ErrorSpec(objHeader, ipv6Addr, flags, errCode, errValue); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return StatefulRsvpErrorSpecTlv.TYPE; - } - - @Override - public short getLength() { - return CLASS_LENGTH; - } - - @Override - public byte getClassNum() { - return CLASS_NUM; - } - - @Override - public byte getClassType() { - return CLASS_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IPv6Address", ipv6Addr) - .add("flags", flags) - .add("errorCode", errCode) - .add("errorValue", errValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpObjectHeader.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpObjectHeader.java deleted file mode 100644 index bddcb898..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpObjectHeader.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcepRsvpObjectHeader. - */ -public class PcepRsvpObjectHeader { - - /* - 0 1 2 3 - +-------------+-------------+-------------+-------------+ - | Length (bytes) | Class-Num | C-Type | - +-------------+-------------+-------------+-------------+ - | | - // (Object contents) // - | | - +-------------+-------------+-------------+-------------+ - - ERROR_SPEC object Header - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepRsvpObjectHeader.class); - - public static final boolean REQ_OBJ_MUST_PROCESS = true; - public static final boolean REQ_OBJ_OPTIONAL_PROCESS = false; - public static final boolean RSP_OBJ_IGNORED = true; - public static final boolean RSP_OBJ_PROCESSED = false; - public static final int OBJECT_TYPE_SHIFT_VALUE = 4; - private byte objClassNum; - private byte objClassType; - private short objLen; - - /** - * Constructor to initialize class num, length and type. - * - * @param objClassNum object class number - * @param objClassType object class type - * @param objLen object length - */ - public PcepRsvpObjectHeader(byte objClassNum, byte objClassType, short objLen) { - this.objClassNum = objClassNum; - this.objClassType = objClassType; - this.objLen = objLen; - } - - /** - * Sets the Class-Num. - * - * @param value object class number - */ - public void setObjClassNum(byte value) { - this.objClassNum = value; - } - - /** - * Sets the Class type. - * - * @param value object class type - */ - public void setObjClassType(byte value) { - this.objClassType = value; - } - - /** - * Sets the Class Length. - * - * @param value object length - */ - public void setObjLen(short value) { - this.objLen = value; - } - - /** - * Returns Object Length. - * - * @return objLen - */ - public short getObjLen() { - return this.objLen; - } - - /** - * Returns Object num. - * - * @return objClassNum - */ - public byte getObjClassNum() { - return this.objClassNum; - } - - /** - * Returns Object type. - * - * @return objClassType - */ - public byte getObjClassType() { - return this.objClassType; - } - - /** - * Writes the byte stream of PcepRsvpObjectHeader to channel buffer. - * - * @param cb of type channel buffer - * @return object length index in channel buffer - */ - public int write(ChannelBuffer cb) { - int iLenStartIndex = cb.writerIndex(); - cb.writeShort((short) 0); - cb.writeByte(this.objClassNum); - cb.writeByte(this.objClassType); - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Reads the PcepRsvpObjectHeader. - * - * @param cb input channel buffer - * @return PcepRsvpObjectHeader - */ - public static PcepRsvpObjectHeader read(ChannelBuffer cb) { - log.debug("read "); - byte objClassNum; - byte objClassType; - short objLen; - objLen = cb.readShort(); - objClassNum = cb.readByte(); - objClassType = cb.readByte(); - - return new PcepRsvpObjectHeader(objClassNum, objClassType, objLen); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectClassNum", objClassNum) - .add("ObjectCType", objClassType) - .add("ObjectLength", objLen) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpSpecObjHeader.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpSpecObjHeader.java deleted file mode 100644 index 132ff862..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpSpecObjHeader.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcepRsvpObjectHeader. - */ -public class PcepRsvpSpecObjHeader { - - /* - 0 1 2 3 - +-------------+-------------+-------------+-------------+ - | Length (bytes) | Class-Num | C-Type | - +-------------+-------------+-------------+-------------+ - | | - // (Object contents) // - | | - +-------------+-------------+-------------+-------------+ - - ERROR_SPEC object Header - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepRsvpSpecObjHeader.class); - - private short objLen; - private byte objClassNum; - private byte objClassType; - - /** - * Constructor to initialize length, class num and type. - * - * @param objLen object length - * @param objClassNum pcep rsvp error spec object class num - * @param objClassType pcep rsvp error spec object class type - */ - public PcepRsvpSpecObjHeader(short objLen, byte objClassNum, byte objClassType) { - this.objLen = objLen; - this.objClassNum = objClassNum; - this.objClassType = objClassType; - } - - /** - * Sets the Class num. - * - * @param value pcep rsvp error spec object class num - */ - public void setObjClassNum(byte value) { - this.objClassNum = value; - } - - /** - * Sets the Class type. - * - * @param value pcep rsvp error spec object class type - */ - public void setObjClassType(byte value) { - this.objClassType = value; - } - - /** - * Sets the Class Length. - * - * @param value pcep rsvp error spec object length - */ - public void setObjLen(short value) { - this.objLen = value; - } - - /** - * Returns Object Length. - * - * @return objLen pcep rsvp error spec object length - */ - public short getObjLen() { - return this.objLen; - } - - /** - * Returns Object num. - * - * @return objClassNum pcep rsvp error spec object class num - */ - public byte getObjClassNum() { - return this.objClassNum; - } - - /** - * Returns Object type. - * - * @return objClassType pcep rsvp error spec object class type - */ - public byte getObjClassType() { - return this.objClassType; - } - - /** - * Writes the byte stream of PcepRsvpObjectHeader to channel buffer. - * - * @param cb of type channel buffer - * @return object length index - */ - public int write(ChannelBuffer cb) { - int objLenIndex = cb.writerIndex(); - objLen = 0; - cb.writeShort(objLen); - cb.writeByte(objClassNum); - cb.writeByte(objClassType); - return objLenIndex; - } - - /** - * Reads the PcepRsvpObjectHeader. - * - * @param cb of type channel buffer - * @return PcepRsvpObjectHeader - */ - public static PcepRsvpSpecObjHeader read(ChannelBuffer cb) { - byte objClassNum; - byte objClassType; - short objLen; - objLen = cb.readShort(); - objClassNum = cb.readByte(); - objClassType = cb.readByte(); - - return new PcepRsvpSpecObjHeader(objLen, objClassNum, objClassType); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectClassNum: ", objClassNum) - .add("ObjectCType: ", objClassType) - .add("ObjectLength: ", objLen) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpUserErrorSpec.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpUserErrorSpec.java deleted file mode 100644 index 4a9357de..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpUserErrorSpec.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Rsvp User Error Spec. - */ -public class PcepRsvpUserErrorSpec implements PcepRsvpErrorSpec { - - /* - RSVP error spec object header. - 0 1 2 3 - +-------------+-------------+-------------+-------------+ - | Length (bytes) | Class-Num | C-Type | - +-------------+-------------+-------------+-------------+ - | | - // (Object contents) // - | | - +-------------+-------------+-------------+-------------+ - - Ref : USER_ERROR_SPEC @ RFC5284. - USER_ERROR_SPEC object: Class = 194, C-Type = 1 - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +---------------+---------------+---------------+---------------+ - | Enterprise Number | - +---------------+---------------+---------------+---------------+ - | Sub Org | Err Desc Len | User Error Value | - +---------------+---------------+---------------+---------------+ - | | - ~ Error Description ~ - | | - +---------------+---------------+---------------+---------------+ - | | - ~ User-Defined Subobjects ~ - | | - +---------------+---------------+---------------+---------------+ - */ - - public static final byte CLASS_NUM = (byte) 0xc2; - public static final byte CLASS_TYPE = 0x01; - - private PcepRsvpSpecObjHeader objHeader; - private int enterpriseNum; - private byte subOrg; - private byte errDescLen; - private short userErrorValue; - private byte[] errDesc; - private LinkedList<PcepValueType> llRsvpUserSpecSubObj; - - /** - * Default constructor. - * - * @param objHeader pcep rsvp spec object header - * @param enterpriseNum enterprise number - * @param subOrg organization identifier value - * @param errDescLen error description length - * @param userErrorValue user error value - * @param errDesc error description - * @param llRsvpUserSpecSubObj list of subobjects - */ - public PcepRsvpUserErrorSpec(PcepRsvpSpecObjHeader objHeader, int enterpriseNum, byte subOrg, byte errDescLen, - short userErrorValue, byte[] errDesc, LinkedList<PcepValueType> llRsvpUserSpecSubObj) { - this.objHeader = objHeader; - this.enterpriseNum = enterpriseNum; - this.subOrg = subOrg; - this.errDescLen = errDescLen; - this.userErrorValue = userErrorValue; - this.errDesc = errDesc; - this.llRsvpUserSpecSubObj = llRsvpUserSpecSubObj; - } - - @Override - public int write(ChannelBuffer cb) { - int objLenIndex = objHeader.write(cb); - cb.writeInt(enterpriseNum); - cb.writeByte(subOrg); - cb.writeByte(errDescLen); - cb.writeShort(userErrorValue); - cb.writeBytes(errDesc); - - if (llRsvpUserSpecSubObj != null) { - - ListIterator<PcepValueType> listIterator = llRsvpUserSpecSubObj.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - if (tlv == null) { - continue; - } - tlv.write(cb); - // need to take care of padding - int pad = tlv.getLength() % 4; - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - } - short objLen = (short) (cb.writerIndex() - objLenIndex); - cb.setShort(objLenIndex, objLen); - return objLen; - } - - /** - * Reads the channel buffer and returns object of PcepRsvpErrorSpec. - * - * @param cb of type channel buffer - * @return object of PcepRsvpErrorSpec - * @throws PcepParseException when expected object is not received - */ - public static PcepRsvpErrorSpec read(ChannelBuffer cb) throws PcepParseException { - PcepRsvpSpecObjHeader objHeader; - int enterpriseNum; - byte subOrg; - byte errDescLen; - short userErrorValue; - byte[] errDesc; - LinkedList<PcepValueType> llRsvpUserSpecSubObj = null; - - objHeader = PcepRsvpSpecObjHeader.read(cb); - - if (objHeader.getObjClassNum() != CLASS_NUM || objHeader.getObjClassType() != CLASS_TYPE) { - throw new PcepParseException("Expected PcepRsvpUserErrorSpec object."); - } - enterpriseNum = cb.readInt(); - subOrg = cb.readByte(); - errDescLen = cb.readByte(); - userErrorValue = cb.readShort(); - errDesc = new byte[errDescLen]; - cb.readBytes(errDesc, 0, errDescLen); - - llRsvpUserSpecSubObj = parseErrSpecSubObj(cb); - - return new PcepRsvpUserErrorSpec(objHeader, enterpriseNum, subOrg, errDescLen, userErrorValue, errDesc, - llRsvpUserSpecSubObj); - } - - private static LinkedList<PcepValueType> parseErrSpecSubObj(ChannelBuffer cb) throws PcepParseException { - LinkedList<PcepValueType> llRsvpUserSpecSubObj = new LinkedList<>(); - while (0 < cb.readableBytes()) { - PcepValueType tlv = null; - short hType = cb.readShort(); - int iValue = 0; - //short hLength = cb.readShort(); - switch (hType) { - case AutonomousSystemTlv.TYPE: - iValue = cb.readInt(); - tlv = new AutonomousSystemTlv(iValue); - break; - default: - throw new PcepParseException("Unsupported Sub TLV type :" + hType); - } - llRsvpUserSpecSubObj.add(tlv); - } - return llRsvpUserSpecSubObj; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return StatefulRsvpErrorSpecTlv.TYPE; - } - - @Override - public short getLength() { - return objHeader.getObjLen(); - } - - @Override - public byte getClassNum() { - return CLASS_NUM; - } - - @Override - public byte getClassType() { - return CLASS_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("enterpriseNumber", enterpriseNum) - .add("subOrganization", subOrg) - .add("errDescLength", errDescLen) - .add("userErrorValue", userErrorValue) - .add("errDesc", errDesc) - .add("RsvpUserSpecSubObject", llRsvpUserSpecSubObj) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepValueType.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepValueType.java deleted file mode 100755 index c960e7ac..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepValueType.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; - -/** - * Abstraction which Provides the PCEP Values of Type, Length ,Version. - */ -public interface PcepValueType { - - /** - * Returns the Version Of PCEP Message. - * - * @return Version of PcepVersion Type. - */ - PcepVersion getVersion(); - - /** - * Returns the Type of PCEP Message. - * - * @return value of type - */ - short getType(); - - /** - * Returns the Length of PCEP Message. - * - * @return value of Length - */ - short getLength(); - - /** - * Writes the byte Stream of PCEP Message to channel buffer. - * - * @param bb of type channel buffer - * @return length of bytes written to channel buffer - */ - int write(ChannelBuffer bb); -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlv.java deleted file mode 100644 index aceb7ea0..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlv.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Remote TE Node Descriptors TLV. - */ -public class RemoteTENodeDescriptorsTlv implements PcepValueType { - - /* Reference :PCEP Extension for Transporting TE Data - draft-dhodylee-pce-pcep-te-data-extn-02 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD9] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Node Descriptor Sub-TLVs (variable) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(RemoteTENodeDescriptorsTlv.class); - - public static final short TYPE = 1003; //TODD:change this TBD9 - public short hLength; - - public static final int TLV_HEADER_LENGTH = 4; - // Node Descriptor Sub-TLVs (variable) - private LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLVs; - - /** - * Constructor to initialize llRemoteTENodeDescriptorSubTLVs. - * - * @param llRemoteTENodeDescriptorSubTLVs LinkedList of PcepValueType - */ - public RemoteTENodeDescriptorsTlv(LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLVs) { - this.llRemoteTENodeDescriptorSubTLVs = llRemoteTENodeDescriptorSubTLVs; - } - - /** - * Returns object of Remote TE Node Descriptors TLV. - * - * @param llRemoteTENodeDescriptorSubTLVs LinkedList of PcepValueType - * @return object of RemoteTENodeDescriptorsTLV - */ - public static RemoteTENodeDescriptorsTlv of(final LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLVs) { - return new RemoteTENodeDescriptorsTlv(llRemoteTENodeDescriptorSubTLVs); - } - - /** - * Returns Remote TE Node Descriptor Sub TLVs. - * - * @return llRemoteTENodeDescriptorSubTLVs - */ - public LinkedList<PcepValueType> getllRemoteTENodeDescriptorSubTLVs() { - return llRemoteTENodeDescriptorSubTLVs; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(llRemoteTENodeDescriptorSubTLVs.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - /* - * Here we have a list of Tlv so to compare each sub tlv between the object - * we have to take a list iterator so one by one we can get each sub tlv object - * and can compare them. - * it may be possible that the size of 2 lists is not equal so we have to first check - * the size, if both are same then we should check for the subtlv objects otherwise - * we should return false. - */ - if (obj instanceof RemoteTENodeDescriptorsTlv) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - RemoteTENodeDescriptorsTlv other = (RemoteTENodeDescriptorsTlv) obj; - Iterator<PcepValueType> objListIterator = ((RemoteTENodeDescriptorsTlv) obj).llRemoteTENodeDescriptorSubTLVs - .iterator(); - countObjSubTlv = ((RemoteTENodeDescriptorsTlv) obj).llRemoteTENodeDescriptorSubTLVs.size(); - countOtherSubTlv = other.llRemoteTENodeDescriptorSubTLVs.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - PcepValueType subTlv = objListIterator.next(); - isCommonSubTlv = Objects.equals(llRemoteTENodeDescriptorSubTLVs.contains(subTlv), - other.llRemoteTENodeDescriptorSubTLVs.contains(subTlv)); - } - return isCommonSubTlv; - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - - int tlvStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(hLength); - - ListIterator<PcepValueType> listIterator = llRemoteTENodeDescriptorSubTLVs.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("TLV is null from subTlv list"); - continue; - } - tlv.write(c); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - c.writeByte((byte) 0); - } - } - } - - hLength = (short) (c.writerIndex() - tlvStartIndex); - c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH)); - - return c.writerIndex() - tlvStartIndex; - } - - /** - * Reads channel buffer and returns object of Remote TE Node Descriptors TLV. - * - * @param c input channel buffer - * @param length length of buffer - * @return object of RemoteTENodeDescriptorsTLV - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepValueType read(ChannelBuffer c , short length) throws PcepParseException { - - // Node Descriptor Sub-TLVs (variable) - LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLVs = new LinkedList<>(); - - ChannelBuffer tempCb = c.readBytes(length); - - while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) { - - PcepValueType tlv; - short hType = tempCb.readShort(); - int iValue = 0; - short hLength = tempCb.readShort(); - switch (hType) { - - case AutonomousSystemTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new AutonomousSystemTlv(iValue); - break; - case BGPLSidentifierTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new BGPLSidentifierTlv(iValue); - break; - case OSPFareaIDsubTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new OSPFareaIDsubTlv(iValue); - break; - case RouterIDSubTlv.TYPE: - tlv = RouterIDSubTlv.read(tempCb, hLength); - break; - - default: - throw new PcepParseException("Unsupported Sub TLV type :" + hType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= tempCb.readableBytes()) { - tempCb.skipBytes(pad); - } - } - - llRemoteTENodeDescriptorSubTLVs.add(tlv); - } - - if (0 < tempCb.readableBytes()) { - - throw new PcepParseException("Sub Tlv parsing error. Extra bytes received."); - } - return new RemoteTENodeDescriptorsTlv(llRemoteTENodeDescriptorSubTLVs); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", hLength) - .add("RemoteTeNodeDescriptorSubTLVs", llRemoteTENodeDescriptorSubTLVs) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RouterIDSubTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RouterIDSubTlv.java deleted file mode 100644 index 9b27ce13..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RouterIDSubTlv.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides router id. - */ -public class RouterIDSubTlv implements PcepValueType { - - /* reference :I-D.ietf-idr-ls-distribution. - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD13] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | opaque value | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(RouterIDSubTlv.class); - - public static final short TYPE = 1000; //TODD:change this TBD13 - private final short hLength; - - private final byte[] rawValue; - - /** - * constructor to initialize rawValue. - * - * @param rawValue raw value - * @param hLength length - */ - public RouterIDSubTlv(byte[] rawValue, short hLength) { - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Returns object of Router ID Sub Tlv. - * - * @param raw value - * @param hLength length - * @return object of Router ID Sub Tlv - */ - public static RouterIDSubTlv of(final byte[] raw, short hLength) { - return new RouterIDSubTlv(raw, hLength); - } - - /** - * Returns raw value. - * - * @return rawValue value - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof RouterIDSubTlv) { - RouterIDSubTlv other = (RouterIDSubTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads channel buffer and returns object of RouterIDSubTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of RouterIDSubTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - byte[] iOpaqueValue = new byte[hLength]; - c.readBytes(iOpaqueValue, 0, hLength); - return new RouterIDSubTlv(iOpaqueValue, hLength); - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (byte b : rawValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RoutingUniverseTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RoutingUniverseTlv.java deleted file mode 100644 index 924a3a32..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RoutingUniverseTlv.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides RoutingUniverseTLV identifiers. - */ -public class RoutingUniverseTlv implements PcepValueType { - - /* - * Reference : draft-dhodylee-pce-pcep-te-data-extn-02, section 9.2.1. - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD7] | Length=8 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Identifier | - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - * - * - * +------------+---------------------+ - | Identifier | Routing Universe | - +------------+---------------------+ - | 0 | L3 packet topology | - | 1 | L1 optical topology | - +------------+---------------------+ - */ - - protected static final Logger log = LoggerFactory.getLogger(RoutingUniverseTlv.class); - - public static final short TYPE = 14; // TODO:need to change TBD7 - public static final short LENGTH = 8; - - private final long rawValue; - - /** - * Constructor to initialize raw value. - * - * @param rawValue raw value - */ - public RoutingUniverseTlv(long rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns object of RoutingUniverseTLV. - * - * @param raw value - * @return object of RoutingUniverseTLV - */ - public static RoutingUniverseTlv of(final long raw) { - return new RoutingUniverseTlv(raw); - } - - /** - * Returns raw value as Identifier. - * - * @return rawValue Identifier - */ - public long getLong() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof RoutingUniverseTlv) { - RoutingUniverseTlv other = (RoutingUniverseTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeLong(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads from channel buffer and returns object of RoutingUniverseTLV. - * - * @param c input channel buffer - * @return object of RoutingUniverseTLV - */ - public static RoutingUniverseTlv read(ChannelBuffer c) { - return RoutingUniverseTlv.of(c.readLong()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlv.java deleted file mode 100644 index 70c15ee6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlv.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides SharedRiskLinkGroupTlv. - */ -public class SharedRiskLinkGroupTlv implements PcepValueType { - - /* - * Reference :[I-D.ietf-idr- Group ls-distribution] /3.3.2.5 - * - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type =TDB41 | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Shared Risk Link Group Value | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // ............ // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Shared Risk Link Group Value | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(SharedRiskLinkGroupTlv.class); - - public static final short TYPE = 1096; //TODO:NEED TO HANDLE TDB41 - - private final short hLength; - - private final int[] srlgValue; - - /** - * Constructor to initialize SRLG value. - * - * @param srlgValue Shared Risk Link Group Value - * @param hLength length - */ - public SharedRiskLinkGroupTlv(int[] srlgValue, short hLength) { - this.srlgValue = srlgValue; - if (0 == hLength) { - this.hLength = (short) ((srlgValue.length) * 4); - } else { - this.hLength = hLength; - } - } - - /** - * Returns object of SharedRiskLinkGroupTlv. - * - * @param raw value - * @param hLength length - * @return object of SharedRiskLinkGroupTlv - */ - public static SharedRiskLinkGroupTlv of(final int[] raw, short hLength) { - return new SharedRiskLinkGroupTlv(raw, hLength); - } - - /** - * Returns SRLG Value. - * - * @return srlgValue - */ - public int[] getValue() { - return srlgValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(srlgValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof SharedRiskLinkGroupTlv) { - SharedRiskLinkGroupTlv other = (SharedRiskLinkGroupTlv) obj; - return Objects.equals(this.srlgValue, other.srlgValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - for (int b : srlgValue) { - c.writeInt(b); - } - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads from channel buffer and returns object of SharedRiskLinkGroupTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of SharedRiskLinkGroupTlv - */ - public static PcepValueType read(ChannelBuffer c, short hLength) { - int iLength = hLength / 4; - int[] iSharedRiskLinkGroup = new int[iLength]; - for (int i = 0; i < iLength; i++) { - iSharedRiskLinkGroup[i] = c.readInt(); - } - return new SharedRiskLinkGroupTlv(iSharedRiskLinkGroup, hLength); - } - - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); - - toStrHelper.add("Type", TYPE); - toStrHelper.add("Length", hLength); - - StringBuffer result = new StringBuffer(); - for (int b : srlgValue) { - result.append(String.format("%02X ", b)); - } - toStrHelper.add("Value", result); - - return toStrHelper.toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java deleted file mode 100644 index 3cbb82c8..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java +++ /dev/null @@ -1,324 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepNai; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides SrEroSubObject. - */ -public class SrEroSubObject implements PcepValueType { - /* - SR-ERO subobject: (draft-ietf-pce-segment-routing-00) - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | ST | Flags |F|S|C|M| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | SID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // NAI (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - - - NAI - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NAI for IPv4 Adjacency - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Local IPv6 address (16 bytes) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Remote IPv6 address (16 bytes) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NAI for IPv6 adjacency - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - NAI for Unnumbered adjacency with IPv4 Node IDs - - */ - protected static final Logger log = LoggerFactory.getLogger(SrEroSubObject.class); - - public static final short TYPE = 0x60; //TODO : type to be defined - public static final short LENGTH = 12; - public static final short VALUE_LENGTH = 10; - public static final int SET = 1; - public static final byte MFLAG_SET = 0x01; - public static final byte CFLAG_SET = 0x02; - public static final byte SFLAG_SET = 0x04; - public static final byte FFLAG_SET = 0x08; - public static final byte SHIFT_ST = 12; - - private final boolean bFFlag; - private final boolean bSFlag; - private final boolean bCFlag; - private final boolean bMFlag; - private final byte st; - - private final int sID; - private final PcepNai nai; - - /** - * Constructor to initialize member variables. - * - * @param st SID type - * @param bFFlag F flag - * @param bSFlag S flag - * @param bCFlag C flag - * @param bMFlag M flag - * @param sID segment identifier value - * @param nai NAI associated with SID - */ - public SrEroSubObject(byte st, boolean bFFlag, boolean bSFlag, boolean bCFlag, boolean bMFlag, int sID, - PcepNai nai) { - this.st = st; - this.bFFlag = bFFlag; - this.bSFlag = bSFlag; - this.bCFlag = bCFlag; - this.bMFlag = bMFlag; - this.sID = sID; - this.nai = nai; - } - - /** - * Creates object of SrEroSubObject. - * - * @param st SID type - * @param bFFlag F flag - * @param bSFlag S flag - * @param bCFlag C flag - * @param bMFlag M flag - * @param sID segment identifier value - * @param nai NAI associated with SID - * @return object of SrEroSubObject - */ - public static SrEroSubObject of(byte st, boolean bFFlag, boolean bSFlag, boolean bCFlag, boolean bMFlag, int sID, - PcepNai nai) { - return new SrEroSubObject(st, bFFlag, bSFlag, bCFlag, bMFlag, sID, nai); - } - - /** - * Returns SID type. - * @return st sid type - */ - public byte getSt() { - return st; - } - - /** - * Returns bFFlag. - * @return bFFlag - */ - public boolean getFFlag() { - return bFFlag; - } - - /** - * Returns bSFlag. - * @return bSFlag - */ - public boolean getSFlag() { - return bSFlag; - } - - /** - * Returns bCFlag. - * @return bCFlag - */ - public boolean getCFlag() { - return bCFlag; - } - - /** - * Returns bMFlag. - * @return bMFlag - */ - public boolean getMFlag() { - return bMFlag; - } - - /** - * Returns sID. - * @return sID - */ - public int getSID() { - return sID; - } - - /** - * Returns nai. - * @return nai - */ - public PcepNai getNai() { - return nai; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(st, bFFlag, bSFlag, bCFlag, bMFlag, sID, nai); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof SrEroSubObject) { - SrEroSubObject other = (SrEroSubObject) obj; - return Objects.equals(this.st, other.st) && Objects.equals(this.bFFlag, other.bFFlag) - && Objects.equals(this.bSFlag, other.bSFlag) && Objects.equals(this.bCFlag, other.bCFlag) - && Objects.equals(this.bMFlag, other.bMFlag) && Objects.equals(this.sID, other.sID) - && Objects.equals(this.nai, other.nai); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - - c.writeShort(TYPE); - c.writeShort(LENGTH); - - short temp = 0; - if (bMFlag) { - temp = (short) (temp | MFLAG_SET); - } - if (bCFlag) { - temp = (short) (temp | CFLAG_SET); - } - if (bSFlag) { - temp = (short) (temp | SFLAG_SET); - } - if (bFFlag) { - temp = (short) (temp | FFLAG_SET); - } - short tempST = (short) (st << SHIFT_ST); - temp = (short) (temp | tempST); - c.writeShort(temp); - c.writeInt(sID); - nai.write(c); - - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of SrEroSubObject. - * @param c of type channel buffer - * @return object of SrEroSubObject - */ - public static PcepValueType read(ChannelBuffer c) { - short temp = c.readShort(); - boolean bMFlag; - boolean bCFlag; - boolean bSFlag; - boolean bFFlag; - byte st; - PcepNai nai = null; - - bMFlag = (temp & MFLAG_SET) == MFLAG_SET; - bCFlag = (temp & CFLAG_SET) == CFLAG_SET; - bSFlag = (temp & SFLAG_SET) == SFLAG_SET; - bFFlag = (temp & FFLAG_SET) == FFLAG_SET; - - st = (byte) (temp >> SHIFT_ST); - - int sID = c.readInt(); - switch (st) { - case 0x01: - nai = PcepNaiIpv4NodeId.read(c); - break; - case 0x02: - nai = PcepNaiIpv6NodeId.read(c); - break; - case 0x03: - nai = PcepNaiIpv4Adjacency.read(c); - break; - case 0x04: - nai = PcepNaiIpv6Adjacency.read(c); - break; - case 0x05: - nai = PcepNaiUnnumberedAdjacencyIpv4.read(c); - break; - default: - nai = null; - break; - } - - return new SrEroSubObject(st, bFFlag, bSFlag, bCFlag, bMFlag, sID, nai); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("st", st) - .add("bFflag", bFFlag) - .add("bSFlag", bSFlag) - .add("bCFlag", bCFlag) - .add("bMFlag", bMFlag) - .add("sID", sID) - .add("nAI", nai) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlv.java deleted file mode 100644 index 020d31d9..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlv.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides StatefulIPv4LspIdentidiersTlv. - */ -public class StatefulIPv4LspIdentidiersTlv implements PcepValueType { - - /* IPV4-LSP-IDENTIFIERS TLV format - * - * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10 - * - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=18 | Length=16 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 Tunnel Sender Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LSP ID | Tunnel ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Extended Tunnel ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 Tunnel Endpoint Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(StatefulIPv4LspIdentidiersTlv.class); - - public static final short TYPE = 18; - public static final short LENGTH = 16; - public static final int VALUE_LENGTH = 16; - private final int ipv4IngressAddress; - private final short lspId; - private final short tunnelId; - private final int extendedTunnelId; - private final int ipv4EgressAddress; - - /** - * Constructor to initialize member variables. - * - * @param ipv4IngressAddress ingress ipv4 address - * @param lspId lsp id - * @param tunnelId tunnel id - * @param extendedTunnelId extended tunnel id - * @param ipv4EgressAddress egress ipv4 address - */ - public StatefulIPv4LspIdentidiersTlv(int ipv4IngressAddress, short lspId, short tunnelId, int extendedTunnelId, - int ipv4EgressAddress) { - - this.ipv4IngressAddress = ipv4IngressAddress; - this.lspId = lspId; - this.tunnelId = tunnelId; - this.extendedTunnelId = extendedTunnelId; - this.ipv4EgressAddress = ipv4EgressAddress; - } - - /** - * Creates object of StatefulIPv4LspIdentidiersTlv. - * - * @param ipv4IngressAddress ingress ipv4 address - * @param lspId lsp id - * @param tunnelId tunnel id - * @param extendedTunnelId extended tunnel id - * @param ipv4EgressAddress egress ipv4 address - * @return object of StatefulIPv4LspIdentidiersTlv - */ - public static StatefulIPv4LspIdentidiersTlv of(int ipv4IngressAddress, short lspId, short tunnelId, - int extendedTunnelId, int ipv4EgressAddress) { - return new StatefulIPv4LspIdentidiersTlv(ipv4IngressAddress, lspId, tunnelId, extendedTunnelId, - ipv4EgressAddress); - } - - /** - * Returns tunnel id. - * - * @return tunnelId - */ - public short getTunnelId() { - return this.tunnelId; - } - - /** - * Returns extendedTunnelId. - * - * @return extendedTunnelId - */ - public int getextendedTunnelId() { - return this.extendedTunnelId; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns ipv4IngressAddress. - * - * @return ipv4IngressAddress - */ - public int getIpv4IngressAddress() { - return ipv4IngressAddress; - } - - /** - * Returns ipv4EgressAddress. - * - * @return ipv4EgressAddress - */ - public int getIpv4EgressAddress() { - return ipv4EgressAddress; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(ipv4IngressAddress, lspId, tunnelId, extendedTunnelId, ipv4EgressAddress); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof StatefulIPv4LspIdentidiersTlv) { - StatefulIPv4LspIdentidiersTlv other = (StatefulIPv4LspIdentidiersTlv) obj; - return Objects.equals(this.ipv4IngressAddress, other.ipv4IngressAddress) - && Objects.equals(this.lspId, other.lspId) && Objects.equals(this.tunnelId, other.tunnelId) - && Objects.equals(this.extendedTunnelId, other.extendedTunnelId) - && Objects.equals(this.ipv4EgressAddress, other.ipv4EgressAddress); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(ipv4IngressAddress); - c.writeShort(lspId); - c.writeShort(tunnelId); - c.writeInt(extendedTunnelId); - c.writeInt(ipv4EgressAddress); - - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of StatefulIPv4LspIdentidiersTlv. - * - * @param c of type channel buffer - * @return object of StatefulIPv4LspIdentidiersTlv - */ - public static PcepValueType read(ChannelBuffer c) { - int ipv4IngressAddress = c.readInt(); - short lspId = c.readShort(); - short tunnelId = c.readShort(); - int extendedTunnelId = c.readInt(); - int ipv4EgressAddress = c.readInt(); - return new StatefulIPv4LspIdentidiersTlv(ipv4IngressAddress, lspId, tunnelId, extendedTunnelId, - ipv4EgressAddress); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type:", TYPE) - .add("Length:", LENGTH) - .add("Ipv4IngressAddress:", ipv4IngressAddress) - .add("LspId:", lspId).add("TunnelId:", tunnelId) - .add("ExtendedTunnelId:", extendedTunnelId) - .add("Ipv4EgressAddress:", ipv4EgressAddress).toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspDbVerTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspDbVerTlv.java deleted file mode 100644 index a667dccd..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspDbVerTlv.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides StatefulLspDbVerTlv. - */ -public class StatefulLspDbVerTlv implements PcepValueType { - - /* LSP-DB-VERSION TLV format - * - * Reference : Optimizations of Label Switched Path State Synchronization Procedures - for a Stateful PCE draft-ietf-pce-stateful-sync-optimizations-02 - * - * - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=23 | Length=8 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LSP State DB Version | - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(StatefulLspDbVerTlv.class); - - public static final short TYPE = 23; - public static final short LENGTH = 8; - private final long rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue value - */ - public StatefulLspDbVerTlv(final long rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns object of StatefulLspDbVerTlv. - * - * @param raw is LSP State DB Version - * @return object of StatefulLspDbVerTlv - */ - public static StatefulLspDbVerTlv of(final long raw) { - return new StatefulLspDbVerTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns LSP State DB Version. - * - * @return rawValue value - */ - public long getLong() { - return rawValue; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof StatefulLspDbVerTlv) { - StatefulLspDbVerTlv other = (StatefulLspDbVerTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeLong(rawValue); - return c.writerIndex(); - } - - /** - * Reads the channel buffer and returns object of StatefulLspDbVerTlv. - * - * @param c input channel buffer - * @return object of StatefulLspDbVerTlv - */ - public static StatefulLspDbVerTlv read(ChannelBuffer c) { - return StatefulLspDbVerTlv.of(c.readLong()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlv.java deleted file mode 100644 index 5d323f6a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlv.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides StatefulLspErrorCodeTlv. - */ -public class StatefulLspErrorCodeTlv implements PcepValueType { - - /* LSP-ERROR-CODE TLV format - * - * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10 - * - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=20 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LSP Error Code | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - - protected static final Logger log = LoggerFactory.getLogger(StatefulLspErrorCodeTlv.class); - - public static final short TYPE = 20; - public static final short LENGTH = 4; - private final int rawValue; - - /** - * Constructor to initialize raw Value. - * - * @param rawValue lsp error code value - */ - public StatefulLspErrorCodeTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Creates object of StatefulLspErrorCodeTlv. - * - * @param raw lsp error code value - * @return object of StatefulLspErrorCodeTlv - */ - public static StatefulLspErrorCodeTlv of(int raw) { - return new StatefulLspErrorCodeTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns lsp error code value. - * - * @return lsp error code value - */ - public int getInt() { - return rawValue; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof StatefulLspErrorCodeTlv) { - StatefulLspErrorCodeTlv other = (StatefulLspErrorCodeTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of StatefulLspErrorCodeTlv. - * - * @param c of type channel buffer - * @return object of StatefulLspErrorCodeTlv - */ - public static StatefulLspErrorCodeTlv read(ChannelBuffer c) { - return StatefulLspErrorCodeTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlv.java deleted file mode 100644 index 84f40e12..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlv.java +++ /dev/null @@ -1,269 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides StatefulPceCapabilityTlv. - */ -public class StatefulPceCapabilityTlv implements PcepValueType { - - /* STATEFUL-PCE-CAPABILITY TLV format - * - * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10 - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=16 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags |D|T|I|S|U| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(StatefulPceCapabilityTlv.class); - - public static final short TYPE = 16; - public static final short LENGTH = 4; - public static final byte UFLAG_SET = 0x01; - public static final byte SFLAG_SET = 0x02; - public static final byte IFLAG_SET = 0x04; - public static final byte TFLAG_SET = 0x08; - public static final byte DFLAG_SET = 0x10; - public static final int SET = 1; - - private final int rawValue; - private final boolean bDFlag; - private final boolean bTFlag; - private final boolean bIFlag; - private final boolean bSFlag; - private final boolean bUFlag; - private final boolean isRawValueSet; - - /** - * Constructor to initialize variables. - * - * @param rawValue Flags - */ - public StatefulPceCapabilityTlv(int rawValue) { - this.rawValue = rawValue; - isRawValueSet = true; - this.bUFlag = (rawValue & UFLAG_SET) == UFLAG_SET; - this.bSFlag = (rawValue & SFLAG_SET) == SFLAG_SET; - this.bIFlag = (rawValue & IFLAG_SET) == IFLAG_SET; - this.bTFlag = (rawValue & TFLAG_SET) == TFLAG_SET; - this.bDFlag = (rawValue & DFLAG_SET) == DFLAG_SET; - } - - /** - * Constructor to initialize variables. - * - * @param bDFlag D-flag - * @param bTFlag T-flag - * @param bIFlag I-flag - * @param bSFlag S-flag - * @param bUFlag U-flag - */ - public StatefulPceCapabilityTlv(boolean bDFlag, boolean bTFlag, boolean bIFlag, boolean bSFlag, boolean bUFlag) { - this.bDFlag = bDFlag; - this.bTFlag = bTFlag; - this.bIFlag = bIFlag; - this.bSFlag = bSFlag; - this.bUFlag = bUFlag; - this.rawValue = 0; - isRawValueSet = false; - } - - /** - * Returns object of StatefulPceCapabilityTlv. - * - * @param raw value Flags - * @return object of StatefulPceCapabilityTlv - */ - public static StatefulPceCapabilityTlv of(final int raw) { - return new StatefulPceCapabilityTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - /** - * Returns D-flag. - * - * @return bDFlag D-flag - */ - public boolean getDFlag() { - return bDFlag; - } - - /** - * Returns T-flag. - * - * @return bTFlag T-flag - */ - public boolean getTFlag() { - return bTFlag; - } - - /** - * Returns I-flag. - * - * @return bIFlag I-flag - */ - public boolean getIFlag() { - return bIFlag; - } - - /** - * Returns S-flag. - * - * @return bSFlag S-flag - */ - public boolean getSFlag() { - return bSFlag; - } - - /** - * Returns U-flag. - * - * @return bUFlag U-flag - */ - public boolean getUFlag() { - return bUFlag; - } - - /** - * Returns raw value Flags. - * - * @return rawValue Flags - */ - public int getInt() { - return rawValue; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - if (isRawValueSet) { - return Objects.hash(rawValue); - } else { - return Objects.hash(bDFlag, bTFlag, bIFlag, bSFlag, bUFlag); - } - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof StatefulPceCapabilityTlv) { - StatefulPceCapabilityTlv other = (StatefulPceCapabilityTlv) obj; - if (isRawValueSet) { - return Objects.equals(this.rawValue, other.rawValue); - } else { - return Objects.equals(this.bDFlag, other.bDFlag) && Objects.equals(this.bTFlag, other.bTFlag) - && Objects.equals(this.bIFlag, other.bIFlag) && Objects.equals(this.bSFlag, other.bSFlag) - && Objects.equals(this.bUFlag, other.bUFlag); - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - if (isRawValueSet) { - c.writeInt(rawValue); - } else { - int temp = 0; - if (bUFlag) { - temp = temp | UFLAG_SET; - } - if (bSFlag) { - temp = temp | SFLAG_SET; - } - if (bIFlag) { - temp = temp | IFLAG_SET; - } - if (bTFlag) { - temp = temp | TFLAG_SET; - } - if (bDFlag) { - temp = temp | DFLAG_SET; - } - c.writeInt(temp); - } - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads from channel buffer and returns object of StatefulPceCapabilityTlv. - * - * @param c input channel buffer - * @return object of StatefulPceCapabilityTlv - */ - public static PcepValueType read(ChannelBuffer c) { - int temp = c.readInt(); - boolean bDFlag; - boolean bTFlag; - boolean bIFlag; - boolean bSFlag; - boolean bUFlag; - - bUFlag = (temp & UFLAG_SET) == UFLAG_SET; - bSFlag = (temp & SFLAG_SET) == SFLAG_SET; - bIFlag = (temp & IFLAG_SET) == IFLAG_SET; - bTFlag = (temp & TFLAG_SET) == TFLAG_SET; - bDFlag = (temp & DFLAG_SET) == DFLAG_SET; - - return new StatefulPceCapabilityTlv(bDFlag, bTFlag, bIFlag, bSFlag, bUFlag); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("type", TYPE) - .add("Length", LENGTH) - .add("DFlag", bDFlag) - .add("TFlag", bTFlag) - .add("IFlag", bIFlag) - .add("SFlag", bSFlag) - .add("UFlag", bUFlag) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulRsvpErrorSpecTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulRsvpErrorSpecTlv.java deleted file mode 100644 index 9e1a074a..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulRsvpErrorSpecTlv.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides StatefulRsvpErrorSpecTlv. - */ -public class StatefulRsvpErrorSpecTlv implements PcepValueType { - - protected static final Logger log = LoggerFactory.getLogger(StatefulRsvpErrorSpecTlv.class); - - /* RSVP-ERROR-SPEC TLV format - * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10 - * - * - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=21 | Length (variable) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - + RSVP ERROR_SPEC or USER_ERROR_SPEC Object + - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - 0 1 2 3 - +-------------+-------------+-------------+-------------+ - | Length (bytes) | Class-Num | C-Type | - +-------------+-------------+-------------+-------------+ - | | - // (Object contents) // - | | - +-------------+-------------+-------------+-------------+ - - Ref : ERROR_SPEC @ RFC2205 - - IPv4 ERROR_SPEC object: Class = 6, C-Type = 1 - +-------------+-------------+-------------+-------------+ - | IPv4 Error Node Address (4 bytes) | - +-------------+-------------+-------------+-------------+ - | Flags | Error Code | Error Value | - +-------------+-------------+-------------+-------------+ - - - IPv6 ERROR_SPEC object: Class = 6, C-Type = 2 - +-------------+-------------+-------------+-------------+ - | | - + + - | | - + IPv6 Error Node Address (16 bytes) + - | | - + + - | | - +-------------+-------------+-------------+-------------+ - | Flags | Error Code | Error Value | - +-------------+-------------+-------------+-------------+ - - - Ref : USER_ERROR_SPEC @ RFC5284 - USER_ERROR_SPEC object: Class = 194, C-Type = 1 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +---------------+---------------+---------------+---------------+ - | Enterprise Number | - +---------------+---------------+---------------+---------------+ - | Sub Org | Err Desc Len | User Error Value | - +---------------+---------------+---------------+---------------+ - | | - ~ Error Description ~ - | | - +---------------+---------------+---------------+---------------+ - | | - ~ User-Defined Subobjects ~ - | | - +---------------+---------------+---------------+---------------+ - - */ - - public static final short TYPE = 21; - public static final int OBJECT_HEADER_LENGTH = 4; - private short hLength; - - private final PcepRsvpErrorSpec rsvpErrSpecObj; - private final boolean isErrSpceObjSet; - - /** - * Constructor to initialize errSpecObj. - * - * @param rsvpErrSpecObj Rsvp error spec object - */ - public StatefulRsvpErrorSpecTlv(PcepRsvpErrorSpec rsvpErrSpecObj) { - this.rsvpErrSpecObj = rsvpErrSpecObj; - this.isErrSpceObjSet = true; - } - - /** - * Returns PcepRsvpErrorSpecObject. - * - * @return rsvpErrSpecObj - */ - public PcepRsvpErrorSpec getPcepRsvpErrorSpec() { - return this.rsvpErrSpecObj; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - /** - * Reads channel buffer and returns object of StatefulRsvpErrorSpecTlv. - * - * @param cb of type channel buffer - * @return object of StatefulRsvpErrorSpecTlv - * @throws PcepParseException while parsing this tlv from channel buffer - */ - public static PcepValueType read(ChannelBuffer cb) throws PcepParseException { - - PcepRsvpErrorSpec rsvpErrSpecObj = null; - PcepRsvpSpecObjHeader rsvpErrSpecObjHeader; - - cb.markReaderIndex(); - rsvpErrSpecObjHeader = PcepRsvpSpecObjHeader.read(cb); - cb.resetReaderIndex(); - - if (PcepRsvpIpv4ErrorSpec.CLASS_NUM == rsvpErrSpecObjHeader.getObjClassNum() - && PcepRsvpIpv4ErrorSpec.CLASS_TYPE == rsvpErrSpecObjHeader.getObjClassType()) { - rsvpErrSpecObj = PcepRsvpIpv4ErrorSpec.read(cb); - } else if (PcepRsvpIpv6ErrorSpec.CLASS_NUM == rsvpErrSpecObjHeader.getObjClassNum() - && PcepRsvpIpv6ErrorSpec.CLASS_TYPE == rsvpErrSpecObjHeader.getObjClassType()) { - rsvpErrSpecObj = PcepRsvpIpv6ErrorSpec.read(cb); - } else if (PcepRsvpUserErrorSpec.CLASS_NUM == rsvpErrSpecObjHeader.getObjClassNum() - && PcepRsvpUserErrorSpec.CLASS_TYPE == rsvpErrSpecObjHeader.getObjClassType()) { - rsvpErrSpecObj = PcepRsvpUserErrorSpec.read(cb); - } - return new StatefulRsvpErrorSpecTlv(rsvpErrSpecObj); - } - - @Override - public int hashCode() { - return Objects.hash(rsvpErrSpecObj.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof StatefulRsvpErrorSpecTlv) { - StatefulRsvpErrorSpecTlv other = (StatefulRsvpErrorSpecTlv) obj; - return Objects.equals(this.rsvpErrSpecObj, other.rsvpErrSpecObj); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(hLength); - if (isErrSpceObjSet) { - rsvpErrSpecObj.write(c); - } - hLength = (short) (c.writerIndex() - iStartIndex); - c.setShort(tlvLenIndex, (hLength - OBJECT_HEADER_LENGTH)); - - return c.writerIndex() - iStartIndex; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("Type", TYPE) - .add("Length", hLength) - .add("RSVPErrorSpecObject", rsvpErrSpecObj) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java deleted file mode 100644 index 27cf56a6..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides SymbolicPathNameTlv. - */ -public class SymbolicPathNameTlv implements PcepValueType { - - /* - * SYMBOLIC-PATH-NAME TLV format - * Reference :PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-10 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=17 | Length (variable) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Symbolic Path Name // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - protected static final Logger log = LoggerFactory.getLogger(SymbolicPathNameTlv.class); - - public static final short TYPE = 17; - private short hLength; - - private final byte[] rawValue; - - /** - * Constructor to initialize raw Value. - * - * @param rawValue Symbolic path name - */ - public SymbolicPathNameTlv(byte[] rawValue) { - this.rawValue = rawValue; - this.hLength = (short) rawValue.length; - } - - /** - * Constructor to initialize raw Value. - * - * @param rawValue Symbolic path name - * @param hLength length of Symbolic path name - */ - public SymbolicPathNameTlv(byte[] rawValue, short hLength) { - this.rawValue = rawValue; - if (0 == hLength) { - this.hLength = (short) rawValue.length; - } else { - this.hLength = hLength; - } - } - - /** - * Creates an object of SymbolicPathNameTlv. - * - * @param raw Symbolic path name - * @param hLength length of Symbolic path name - * @return object of SymbolicPathNameTlv - */ - public static SymbolicPathNameTlv of(final byte[] raw, short hLength) { - return new SymbolicPathNameTlv(raw, hLength); - } - - /** - * Returns Symbolic path name. - * - * @return Symbolic path name byte array - */ - public byte[] getValue() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof SymbolicPathNameTlv) { - SymbolicPathNameTlv other = (SymbolicPathNameTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(hLength); - c.writeBytes(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads channel buffer and returns object of SymbolicPathNameTlv. - * - * @param c of type channel buffer - * @param hLength length of bytes to read - * @return object of SymbolicPathNameTlv - */ - public static SymbolicPathNameTlv read(ChannelBuffer c, short hLength) { - byte[] symbolicPathName = new byte[hLength]; - c.readBytes(symbolicPathName, 0, hLength); - return new SymbolicPathNameTlv(symbolicPathName, hLength); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("SymbolicPathName ", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TEDefaultMetricTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TEDefaultMetricTlv.java deleted file mode 100644 index 4429d223..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TEDefaultMetricTlv.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides TEDefaultMetricTlv. - */ -public class TEDefaultMetricTlv implements PcepValueType { - - /* - * Reference :| [I-D.ietf-idr- ls-distribution] /3.3.2.3 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=TDB37 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | TE Default Link Metric | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - protected static final Logger log = LoggerFactory.getLogger(TEDefaultMetricTlv.class); - - public static final short TYPE = 13400; //TDB37 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue TE Default Link Metric - */ - public TEDefaultMetricTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created TEDefaultMetricTlv object. - * - * @param raw raw value - * @return object of TEDefaultMetricTlv. - */ - public static TEDefaultMetricTlv of(final int raw) { - return new TEDefaultMetricTlv(raw); - } - - /** - * Returns raw value. - * - * @return rawValue TE Default Link Metric - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TEDefaultMetricTlv) { - TEDefaultMetricTlv other = (TEDefaultMetricTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads channel buffer and returns object of TEDefaultMetricTlv. - * - * @param c input channel buffer - * @return object of TEDefaultMetricTlv - */ - public static TEDefaultMetricTlv read(ChannelBuffer c) { - return TEDefaultMetricTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkAttributesTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkAttributesTlv.java deleted file mode 100644 index b3b71aef..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkAttributesTlv.java +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides TELinkAttributesTlv. - */ -public class TELinkAttributesTlv implements PcepValueType { - - /* - * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD27] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Link Attributes Sub-TLVs (variable) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(TELinkAttributesTlv.class); - - public static final short TYPE = 1897; //TODD:change this TBD27 - public short hLength; - - public static final int TLV_HEADER_LENGTH = 4; - - // LinkDescriptors Sub-TLVs (variable) - private LinkedList<PcepValueType> llLinkAttributesSubTLVs; - - /** - * Constructor to initialize Link Attributes Sub TLVs. - * - * @param llLinkAttributesSubTLVs linked list of PcepValueType - */ - public TELinkAttributesTlv(LinkedList<PcepValueType> llLinkAttributesSubTLVs) { - this.llLinkAttributesSubTLVs = llLinkAttributesSubTLVs; - } - - /** - * Returns object of TE Link Attributes TLV. - * - * @param llLinkAttributesSubTLVs linked list of Link Attribute of Sub TLV - * @return object of TELinkAttributesTlv - */ - public static TELinkAttributesTlv of(final LinkedList<PcepValueType> llLinkAttributesSubTLVs) { - return new TELinkAttributesTlv(llLinkAttributesSubTLVs); - } - - /** - * Returns linked list of Link Attribute of Sub TLV. - * - * @return llLinkAttributesSubTLVs linked list of Link Attribute of Sub TLV - */ - public LinkedList<PcepValueType> getllLinkAttributesSubTLVs() { - return llLinkAttributesSubTLVs; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(llLinkAttributesSubTLVs.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - /* - * Here we have a list of Tlv so to compare each sub tlv between the object - * we have to take a list iterator so one by one we can get each sub tlv object - * and can compare them. - * it may be possible that the size of 2 lists is not equal so we have to first check - * the size, if both are same then we should check for the subtlv objects otherwise - * we should return false. - */ - if (obj instanceof TELinkAttributesTlv) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - TELinkAttributesTlv other = (TELinkAttributesTlv) obj; - Iterator<PcepValueType> objListIterator = ((TELinkAttributesTlv) obj).llLinkAttributesSubTLVs.iterator(); - countObjSubTlv = ((TELinkAttributesTlv) obj).llLinkAttributesSubTLVs.size(); - countOtherSubTlv = other.llLinkAttributesSubTLVs.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - PcepValueType subTlv = objListIterator.next(); - isCommonSubTlv = Objects.equals(llLinkAttributesSubTLVs.contains(subTlv), - other.llLinkAttributesSubTLVs.contains(subTlv)); - } - return isCommonSubTlv; - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int tlvStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(hLength); - - ListIterator<PcepValueType> listIterator = llLinkAttributesSubTLVs.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("TLV is null from subTlv list"); - continue; - } - tlv.write(c); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - c.writeByte((byte) 0); - } - } - } - - hLength = (short) (c.writerIndex() - tlvStartIndex); - c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH)); - - return c.writerIndex() - tlvStartIndex; - } - - /** - * Reads channel buffer and returns object of TE Link Attributes TLV. - * - * @param c input channel buffer - * @param hLength length - * @return object of TELinkAttributesTlv - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepValueType read(ChannelBuffer c, short hLength) throws PcepParseException { - - // Node Descriptor Sub-TLVs (variable) - LinkedList<PcepValueType> llLinkAttributesSubTLVs = new LinkedList<>(); - - ChannelBuffer tempCb = c.readBytes(hLength); - - while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) { - - PcepValueType tlv; - short hType = tempCb.readShort(); - int iValue = 0; - short length = tempCb.readShort(); - switch (hType) { - - case IPv4TERouterIdOfLocalNodeTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new IPv4TERouterIdOfLocalNodeTlv(iValue); - break; - case IPv6TERouterIdofLocalNodeTlv.TYPE: - byte[] ipv6LValue = new byte[IPv6TERouterIdofLocalNodeTlv.VALUE_LENGTH]; - tempCb.readBytes(ipv6LValue, 0, IPv6TERouterIdofLocalNodeTlv.VALUE_LENGTH); - tlv = new IPv6TERouterIdofLocalNodeTlv(ipv6LValue); - break; - case IPv4TERouterIdOfRemoteNodeTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new IPv4TERouterIdOfRemoteNodeTlv(iValue); - break; - case IPv6TERouterIdofRemoteNodeTlv.TYPE: - byte[] ipv6RValue = new byte[IPv6TERouterIdofRemoteNodeTlv.VALUE_LENGTH]; - tempCb.readBytes(ipv6RValue, 0, IPv6TERouterIdofRemoteNodeTlv.VALUE_LENGTH); - tlv = new IPv6TERouterIdofRemoteNodeTlv(ipv6RValue); - break; - case LinkLocalRemoteIdentifiersTlv.TYPE: - tlv = LinkLocalRemoteIdentifiersTlv.read(tempCb); - break; - case AdministrativeGroupTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new AdministrativeGroupTlv(iValue); - break; - case MaximumLinkBandwidthTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new MaximumLinkBandwidthTlv(iValue); - break; - case MaximumReservableLinkBandwidthTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new MaximumReservableLinkBandwidthTlv(iValue); - break; - case UnreservedBandwidthTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new UnreservedBandwidthTlv(iValue); - break; - case TEDefaultMetricTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new TEDefaultMetricTlv(iValue); - break; - case LinkProtectionTypeTlv.TYPE: - tlv = LinkProtectionTypeTlv.read(tempCb); - break; - case MPLSProtocolMaskTlv.TYPE: - byte cValue = tempCb.readByte(); - tlv = new MPLSProtocolMaskTlv(cValue); - break; - case IGPMetricTlv.TYPE: - tlv = IGPMetricTlv.read(tempCb, length); - break; - case SharedRiskLinkGroupTlv.TYPE: - tlv = SharedRiskLinkGroupTlv.read(tempCb, length); - break; - case OpaqueLinkAttributeTlv.TYPE: - tlv = OpaqueLinkAttributeTlv.read(tempCb, length); - break; - case LinkNameTlv.TYPE: - tlv = LinkNameTlv.read(tempCb, length); - break; - default: - throw new PcepParseException("Unsupported Sub TLV type :" + hType); - } - - // Check for the padding - int pad = length % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= tempCb.readableBytes()) { - tempCb.skipBytes(pad); - } - } - llLinkAttributesSubTLVs.add(tlv); - } - - if (0 < tempCb.readableBytes()) { - - throw new PcepParseException("Sub Tlv parsing error. Extra bytes received."); - } - - return new TELinkAttributesTlv(llLinkAttributesSubTLVs); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", hLength) - .add("LinkAttributesSubTLVs", llLinkAttributesSubTLVs) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkDescriptorsTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkDescriptorsTlv.java deleted file mode 100644 index b974cf82..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkDescriptorsTlv.java +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides TE Link Descriptors TLV. - */ -public class TELinkDescriptorsTlv implements PcepValueType { - - /* - * Reference: PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD14] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Link Descriptor Sub-TLVs (variable) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - - protected static final Logger log = LoggerFactory.getLogger(TELinkDescriptorsTlv.class); - - public static final short TYPE = 1070; //TODD:change this TBD14 - public short hLength; - - public static final int TLV_HEADER_LENGTH = 4; - - // LinkDescriptors Sub-TLVs (variable) - private LinkedList<PcepValueType> llLinkDescriptorsSubTLVs; - - /** - * Constructor to initialize llLinkDescriptorsSubTLVs. - * - * @param llLinkDescriptorsSubTLVs of PcepValueType - */ - public TELinkDescriptorsTlv(LinkedList<PcepValueType> llLinkDescriptorsSubTLVs) { - this.llLinkDescriptorsSubTLVs = llLinkDescriptorsSubTLVs; - } - - /** - * Returns object of TELinkDescriptorsTLV. - * - * @param llLinkDescriptorsSubTLVs of PcepValueType - * @return object of TELinkDescriptorsTLV - */ - public static TELinkDescriptorsTlv of(final LinkedList<PcepValueType> llLinkDescriptorsSubTLVs) { - return new TELinkDescriptorsTlv(llLinkDescriptorsSubTLVs); - } - - /** - * Returns linked list of Link Attribute of Sub TLV. - * - * @return llLinkDescriptorsSubTLVs linked list of Link Attribute of Sub TLV - */ - public LinkedList<PcepValueType> getllLinkDescriptorsSubTLVs() { - return llLinkDescriptorsSubTLVs; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(llLinkDescriptorsSubTLVs.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - /* - * Here we have a list of Tlv so to compare each sub tlv between the object - * we have to take a list iterator so one by one we can get each sub tlv object - * and can compare them. - * it may be possible that the size of 2 lists is not equal so we have to first check - * the size, if both are same then we should check for the subtlv objects otherwise - * we should return false. - */ - if (obj instanceof TELinkDescriptorsTlv) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - TELinkDescriptorsTlv other = (TELinkDescriptorsTlv) obj; - Iterator<PcepValueType> objListIterator = ((TELinkDescriptorsTlv) obj).llLinkDescriptorsSubTLVs.iterator(); - countObjSubTlv = ((TELinkDescriptorsTlv) obj).llLinkDescriptorsSubTLVs.size(); - countOtherSubTlv = other.llLinkDescriptorsSubTLVs.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - PcepValueType subTlv = objListIterator.next(); - isCommonSubTlv = Objects.equals(llLinkDescriptorsSubTLVs.contains(subTlv), - other.llLinkDescriptorsSubTLVs.contains(subTlv)); - } - return isCommonSubTlv; - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int tlvStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(hLength); - - ListIterator<PcepValueType> listIterator = llLinkDescriptorsSubTLVs.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - tlv.write(c); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - c.writeByte((byte) 0); - } - } - } - - hLength = (short) (c.writerIndex() - tlvStartIndex); - c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH)); - - return c.writerIndex() - tlvStartIndex; - } - - /** - * Reads channel buffer and returns object of TELinkDescriptorsTLV. - * - * @param c input channel buffer - * @param length length - * @return object of TELinkDescriptorsTLV - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepValueType read(ChannelBuffer c, short length) throws PcepParseException { - - // Node Descriptor Sub-TLVs (variable) - LinkedList<PcepValueType> llLinkDescriptorsSubTLVs = new LinkedList<>(); - - ChannelBuffer tempCb = c.readBytes(length); - - while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) { - - PcepValueType tlv; - short hType = tempCb.readShort(); - int iValue = 0; - short hLength = tempCb.readShort(); - log.debug("sub Tlv Length" + hLength); - switch (hType) { - - case LinkLocalRemoteIdentifiersTlv.TYPE: - tlv = LinkLocalRemoteIdentifiersTlv.read(tempCb); - break; - case IPv4InterfaceAddressTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new IPv4InterfaceAddressTlv(iValue); - break; - case IPv4NeighborAddressTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new IPv4NeighborAddressTlv(iValue); - break; - case IPv6InterfaceAddressTlv.TYPE: - byte[] ipv6Value = new byte[IPv6InterfaceAddressTlv.VALUE_LENGTH]; - tempCb.readBytes(ipv6Value, 0, IPv6InterfaceAddressTlv.VALUE_LENGTH); - tlv = new IPv6InterfaceAddressTlv(ipv6Value); - break; - case IPv6NeighborAddressTlv.TYPE: - byte[] ipv6NeighborAdd = new byte[IPv6NeighborAddressTlv.VALUE_LENGTH]; - tempCb.readBytes(ipv6NeighborAdd, 0, IPv6NeighborAddressTlv.VALUE_LENGTH); - tlv = new IPv6NeighborAddressTlv(ipv6NeighborAdd); - break; - default: - throw new PcepParseException("Unsupported Sub TLV type:" + hType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= tempCb.readableBytes()) { - tempCb.skipBytes(pad); - } - } - llLinkDescriptorsSubTLVs.add(tlv); - - } - - if (0 < tempCb.readableBytes()) { - - throw new PcepParseException("Sub Tlv parsing error. Extra bytes received."); - } - return new TELinkDescriptorsTlv(llLinkDescriptorsSubTLVs); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", hLength) - .add("LinkDescriptorsSubTLVs", llLinkDescriptorsSubTLVs) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TENodeAttributesTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TENodeAttributesTlv.java deleted file mode 100644 index f18b75b2..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TENodeAttributesTlv.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides TE Node Attributes Tlv. - */ -public class TENodeAttributesTlv implements PcepValueType { - /* - * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD20] | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Node Attributes Sub-TLVs (variable) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - - */ - - protected static final Logger log = LoggerFactory.getLogger(TENodeAttributesTlv.class); - - public static final short TYPE = 1267; //TODD:change this TBD20 - public short hLength; - - public static final int TLV_HEADER_LENGTH = 4; - // LinkDescriptors Sub-TLVs (variable) - private LinkedList<PcepValueType> llNodeAttributesSubTLVs; - - /** - * Constructor to initialize llNodeAttributesSubTLVs. - * - * @param llNodeAttributesSubTLVs linked list of Node Attributes Sub-TLVs - */ - public TENodeAttributesTlv(LinkedList<PcepValueType> llNodeAttributesSubTLVs) { - this.llNodeAttributesSubTLVs = llNodeAttributesSubTLVs; - } - - /** - * Returns object of TENodeAttributesTlv. - * - * @param llNodeAttributesSubTLVs LinkedList of PcepValueType - * @return object of TENodeAttributesTlv - */ - public static TENodeAttributesTlv of(LinkedList<PcepValueType> llNodeAttributesSubTLVs) { - return new TENodeAttributesTlv(llNodeAttributesSubTLVs); - } - - /** - * Returns Node Attributes Sub-TLVs. - * - * @return llNodeAttributesSubTLVs linked list of Node Attributes Sub-TLVs - */ - public LinkedList<PcepValueType> getllNodeAttributesSubTLVs() { - return llNodeAttributesSubTLVs; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return hLength; - } - - @Override - public int hashCode() { - return Objects.hash(llNodeAttributesSubTLVs.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - /* - * Here we have a list of Tlv so to compare each sub tlv between the object - * we have to take a list iterator so one by one we can get each sub tlv object - * and can compare them. - * it may be possible that the size of 2 lists is not equal so we have to first check - * the size, if both are same then we should check for the subtlv objects otherwise - * we should return false. - */ - if (obj instanceof TENodeAttributesTlv) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - TENodeAttributesTlv other = (TENodeAttributesTlv) obj; - Iterator<PcepValueType> objListIterator = ((TENodeAttributesTlv) obj).llNodeAttributesSubTLVs.iterator(); - countObjSubTlv = ((TENodeAttributesTlv) obj).llNodeAttributesSubTLVs.size(); - countOtherSubTlv = other.llNodeAttributesSubTLVs.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - PcepValueType subTlv = objListIterator.next(); - isCommonSubTlv = Objects.equals(llNodeAttributesSubTLVs.contains(subTlv), - other.llNodeAttributesSubTLVs.contains(subTlv)); - } - return isCommonSubTlv; - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int tlvStartIndex = c.writerIndex(); - c.writeShort(TYPE); - int tlvLenIndex = c.writerIndex(); - hLength = 0; - c.writeShort(hLength); - - ListIterator<PcepValueType> listIterator = llNodeAttributesSubTLVs.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - tlv.write(c); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - c.writeByte((byte) 0); - } - } - } - - hLength = (short) (c.writerIndex() - tlvStartIndex); - c.setShort(tlvLenIndex, (hLength - TLV_HEADER_LENGTH)); - - return c.writerIndex() - tlvStartIndex; - } - - /** - * Reads the channel buffer and returns object of TENodeAttributesTlv. - * - * @param c input channel buffer - * @param hLength length - * @return object of TENodeAttributesTlv - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepValueType read(ChannelBuffer c, short hLength) throws PcepParseException { - - // Node Descriptor Sub-TLVs (variable) - LinkedList<PcepValueType> llNodeAttributesSubTLVs = new LinkedList<>(); - - ChannelBuffer tempCb = c.readBytes(hLength); - - while (TLV_HEADER_LENGTH <= tempCb.readableBytes()) { - PcepValueType tlv; - short hType = tempCb.readShort(); - int iValue = 0; - short length = tempCb.readShort(); - switch (hType) { - - case NodeFlagBitsTlv.TYPE: - byte cValue = tempCb.readByte(); - tlv = new NodeFlagBitsTlv(cValue); - break; - case OpaqueNodeAttributeTlv.TYPE: - tlv = OpaqueNodeAttributeTlv.read(tempCb, length); - break; - case NodeNameTlv.TYPE: - tlv = NodeNameTlv.read(tempCb, length); - break; - case ISISAreaIdentifierTlv.TYPE: - tlv = ISISAreaIdentifierTlv.read(tempCb, length); - break; - case IPv4TERouterIdOfLocalNodeTlv.TYPE: - iValue = tempCb.readInt(); - tlv = new IPv4TERouterIdOfLocalNodeTlv(iValue); - break; - case IPv6TERouterIdofLocalNodeTlv.TYPE: - byte[] ipv6Value = new byte[IPv6TERouterIdofLocalNodeTlv.VALUE_LENGTH]; - tempCb.readBytes(ipv6Value, 0, IPv6TERouterIdofLocalNodeTlv.VALUE_LENGTH); - tlv = new IPv6TERouterIdofLocalNodeTlv(ipv6Value); - break; - default: - throw new PcepParseException("Unsupported Sub TLV type :" + hType); - } - - // Check for the padding - int pad = length % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= tempCb.readableBytes()) { - tempCb.skipBytes(pad); - } - } - - llNodeAttributesSubTLVs.add(tlv); - } - - if (0 < tempCb.readableBytes()) { - - throw new PcepParseException("Sub Tlv parsing error. Extra bytes received."); - } - return new TENodeAttributesTlv(llNodeAttributesSubTLVs); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", hLength) - .add("NodeAttributesSubTLVs", llNodeAttributesSubTLVs) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TedCapabilityTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TedCapabilityTlv.java deleted file mode 100644 index 189dcadc..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TedCapabilityTlv.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides TED Capability Tlv. - */ -public class TedCapabilityTlv implements PcepValueType { - - /* - * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02 - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TBD5] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Flags |R| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(TedCapabilityTlv.class); - - public static final short TYPE = 132; //TODO: need to change this TBD5 - public static final short LENGTH = 4; - public static final int SET = 1; - public static final byte RFLAG_CHECK = 0x01; - - private final boolean bRFlag; - private final int rawValue; - private final boolean isRawValueSet; - - /** - * Constructor to initialize raw Value. - * - * @param rawValue Flags - */ - public TedCapabilityTlv(final int rawValue) { - this.rawValue = rawValue; - this.isRawValueSet = true; - int temp = rawValue; - temp = temp & RFLAG_CHECK; - if (temp == SET) { - this.bRFlag = true; - } else { - this.bRFlag = false; - } - - } - - /** - * Constructor to initialize bRFlag. - * - * @param bRFlag R-flag - */ - public TedCapabilityTlv(boolean bRFlag) { - this.bRFlag = bRFlag; - this.rawValue = 0; - this.isRawValueSet = false; - } - - /** - * Returns R-flag. - * - * @return bRFlag - */ - public boolean getbRFlag() { - return bRFlag; - } - - /** - * Returns an object of TedCapabilityTlv. - * - * @param raw value Flags - * @return object of TedCapabilityTlv - */ - public static TedCapabilityTlv of(final int raw) { - return new TedCapabilityTlv(raw); - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - public int getInt() { - return rawValue; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - if (isRawValueSet) { - return Objects.hash(rawValue); - } else { - return Objects.hash(bRFlag); - } - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TedCapabilityTlv) { - TedCapabilityTlv other = (TedCapabilityTlv) obj; - if (isRawValueSet) { - return Objects.equals(this.rawValue, other.rawValue); - } else { - return Objects.equals(this.bRFlag, other.bRFlag); - } - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iStartIndex = c.writerIndex(); - int temp = 0; - c.writeShort(TYPE); - c.writeShort(LENGTH); - if (isRawValueSet) { - c.writeInt(rawValue); - } else { - if (bRFlag) { - temp = temp | RFLAG_CHECK; - } - c.writeInt(temp); - } - return c.writerIndex() - iStartIndex; - } - - /** - * Reads channel buffer and returns object of TedCapabilityTlv. - * - * @param c input channel buffer - * @return object of TedCapabilityTlv - */ - public static TedCapabilityTlv read(ChannelBuffer c) { - return TedCapabilityTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/UnreservedBandwidthTlv.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/UnreservedBandwidthTlv.java deleted file mode 100644 index d44bf824..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/UnreservedBandwidthTlv.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Unreserved Bandwidth Tlv. - */ -public class UnreservedBandwidthTlv implements PcepValueType { - - /* Reference :[RFC5305]/3.6 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type=[TDB36] | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Unreserved Bandwidth | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(UnreservedBandwidthTlv.class); - - public static final short TYPE = 11; //TDB36 - public static final short LENGTH = 4; - - private final int rawValue; - - /** - * Constructor to initialize rawValue. - * - * @param rawValue Unreserved Bandwidth - */ - public UnreservedBandwidthTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * Returns newly created UnreservedBandwidthTlv object. - * - * @param raw as Unreserved Bandwidth - * @return object of UnreservedBandwidthTlv - */ - public static UnreservedBandwidthTlv of(final int raw) { - return new UnreservedBandwidthTlv(raw); - } - - /** - * Returns Unreserved Bandwidth. - * - * @return rawValue Unreserved Bandwidth - */ - public int getInt() { - return rawValue; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public short getLength() { - return LENGTH; - } - - @Override - public int hashCode() { - return Objects.hash(rawValue); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof UnreservedBandwidthTlv) { - UnreservedBandwidthTlv other = (UnreservedBandwidthTlv) obj; - return Objects.equals(this.rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(rawValue); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads byte stream from channel buffer and returns object of UnreservedBandwidthTlv. - * - * @param c input channel buffer - * @return object of UnreservedBandwidthTlv - */ - public static UnreservedBandwidthTlv read(ChannelBuffer c) { - return UnreservedBandwidthTlv.of(c.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue) - .toString(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/package-info.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/package-info.java deleted file mode 100644 index 12744de1..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of Tlvs and Pcep common objects. - */ -package org.onosproject.pcepio.types; diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/HexDump.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/HexDump.java deleted file mode 100644 index c39f606b..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/HexDump.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.util; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Provides Hex Dump for debugging. - */ -public final class HexDump { - protected static final Logger log = LoggerFactory.getLogger(HexDump.class); - - private HexDump() { - } - - public static void pcepHexDump(ChannelBuffer buff) { - - log.debug("==================== HEX DUMP ======================"); - try { - byte[] yTemp; - yTemp = buff.array(); - - int iStartIndex = buff.readerIndex(); - int iEndIndex = buff.writerIndex(); - do { - StringBuilder sb = new StringBuilder(); - for (int k = 0; (k < 16) && (iStartIndex < iEndIndex); ++k) { - if (0 == k % 4) { - sb.append(String.format(" ")); //blank after 4 bytes - } - sb.append(String.format("%02X ", yTemp[iStartIndex++])); - } - log.debug(sb.toString()); - } while (iStartIndex < iEndIndex); - } catch (Exception e) { - log.error("[HexDump] Invalid buffer: " + e.toString()); - } - - log.debug("==================================================="); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/package-info.java b/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/package-info.java deleted file mode 100644 index b3756ffe..00000000 --- a/framework/src/onos/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides utility functionality for PCEP messages. - */ -package org.onosproject.pcepio.util; diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepCloseMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepCloseMsgTest.java deleted file mode 100644 index 33c00ddf..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepCloseMsgTest.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepCloseMsgTest { - - /** - * Common header, reason to close. - */ - @Test - public void closeMessageTest1() throws PcepParseException { - - byte[] closeMsg = new byte[] {0x20, 0x07, 0x00, 0x0C, 0x0f, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02 }; - - byte[] testCloseMsg = {0 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(closeMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepCloseMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testCloseMsg = buf.array(); - - int readLen = buf.writerIndex(); - testCloseMsg = new byte[readLen]; - buf.readBytes(testCloseMsg, 0, readLen); - assertThat(testCloseMsg, is(closeMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepErrorMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepErrorMsgTest.java deleted file mode 100644 index 234cea67..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepErrorMsgTest.java +++ /dev/null @@ -1,735 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -/** - * Test cases for PCEP ERROR Message. - */ -public class PcepErrorMsgTest { - - /** - * This test case checks for - * PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV, TED Capability TLV) - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest1() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x34, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x01, 0x10, 0x00, 0x28, // OPEN object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // PCECC-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x03, 0x00, (byte) 0x84, 0x00, 0x04, // TED Capability TLV - 0x00, 0x00, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV, TED Capability TLV) - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest2() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x3C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x28, // OPEN object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // PCECC-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x03, 0x00, (byte) 0x84, 0x00, 0x04, // TED Capability TLV - 0x00, 0x00, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV) - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest3() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x34, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x20, // OPEN object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // PCECC-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x03}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV) - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest4() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x2c, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x18, // OPEN object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object (STATEFUL-PCE-CAPABILITY) - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest5() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x24, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x10, // OPEN object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, OPEN Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest6() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x1C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x01, 0x10, 0x00, 0x08, // OPEN object header - 0x20, 0x05, 0x1E, 0x01 // OPEN object - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, OPEN Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest7() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x14, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x01, 0x10, 0x00, 0x08, // OPEN object header - 0x20, 0x05, 0x1E, 0x01 // OPEN object - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, RP Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest8() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x20, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest9() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x14, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest10() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x14, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * TE Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest11() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x18, // common header - 0x65, 0x13, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * RP Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest12() throws PcepParseException { - - //RP Object, PCEP-ERROR Object - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x18, // common header - 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * RP Object, RP Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest13() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x24, // common header - 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * TE Object, TE Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest14() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x24, // common header - 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, TE Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest15() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x20, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x03}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, RP Object, RP Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest16() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x2C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, TE Object, TE Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest17() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x2C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x03}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, RP Object, RP Object, PCEP-ERROR Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest18() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x3C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x06}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, PCEP-ERROR Object, TE Object, TE Object, PCEP-ERROR Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest19() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x3C, // common header - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x01, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x03, 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x06}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } - - /** - * This test case checks for - * PCEP-ERROR Object, RP Object, RP Object, PCEP-ERROR Object, PCEP-ERROR Object, - * TE Object, PCEP-ERROR Object - * in PcepErrorMsg message. - */ - @Test - public void errorMessageTest20() throws PcepParseException { - - byte[] errorMsg = new byte[]{0x20, 0x06, 0x00, 0x48, // common header - 0x0D, 0x10, 0x00, 0x08, // PCEP-ERROR Object Header - 0x00, 0x00, 0x01, 0x01, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x10, 0x00, 0x0C, // RP Object Header - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x04, 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x06, 0x65, 0x10, 0x00, 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x0D, 0x10, 0x00, 0x08, // PCERR Object Header - 0x00, 0x00, 0x01, 0x06}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errorMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testErrorMsg = {0}; - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - assertThat(message, instanceOf(PcepErrorMsg.class)); - - message.writeTo(buf); - int iReadLen = buf.writerIndex(); - testErrorMsg = new byte[iReadLen]; - buf.readBytes(testErrorMsg, 0, iReadLen); - - assertThat(testErrorMsg, is(errorMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgExtTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgExtTest.java deleted file mode 100644 index 9341f326..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgExtTest.java +++ /dev/null @@ -1,1683 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepInitiateMsgExtTest { - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH, METRIC-LIST objects in PcInitiate message. - */ - @Test - public void initiateMessageTest1() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC-LIST. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xA4, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, //Metric object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv, - * StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest2() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xA8, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x48, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv - 0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspDbVerTlv, StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH objects in PcInitiate message. - */ - @Test - public void initiateMessageTest3() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA, BANDWIDTH. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x8c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - // 0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv - //0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), - * END-POINTS, ERO, LSPA objects in PcInitiate message. - */ - @Test - public void initiateMessageTest4() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO, LSPA. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - // 0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv - // 0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest5() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest6() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x8c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv, StatefulLspErrorCodeTlv), END-POINTS, ERO, - * LSPA, BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest7() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv, - * StatefulLspErrorCodeTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x98, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest8() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x90, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x30, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest9() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x30, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest10() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest11() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv), - * END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x7C, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x30, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest12() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x78, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspDbVerTlv), END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest13() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, StatefulLspDbVerTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x84, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest14() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH , METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x7c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest15() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest16() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest17() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest18() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest19() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x74, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest20() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest21() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, - * LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest22() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest23() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINTS, ERO, LSPA BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest25() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS, ERO, LSPA BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest26() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x6C, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA, - * BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest27() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, - * LSPA, BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest28() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), - * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest29() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x4C, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), - * END-POINTS, ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest30() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x5C, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest31() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv), END-POINTS, ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH, METRIC OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest32() throws PcepParseException { - - /* SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH, METRIC OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest33() throws PcepParseException { - - /* SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA, BANDWIDTH OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest34() throws PcepParseException { - - /* SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest35() throws PcepParseException { - - /* SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT objects in PcInitiate message. - */ - @Test - public void initiateMessageTest36() throws PcepParseException { - - /* SRP, LSP ( StatefulLspDbVerTlv), END-POINTS, - * ERO, LSPA OBJECT. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x0C, 0x01, //ERO object - 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } -} - diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgTest.java deleted file mode 100644 index 0f8bb7ba..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgTest.java +++ /dev/null @@ -1,1331 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepInitiateMsgTest { - - /** - * This test case checks for srp, lsp, end-point, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest1() throws PcepParseException { - - /* srp, lsp, end-point, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, 0x54, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x00, 0x08, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp and lsp objects in PcInitiate message. - */ - @Test - public void initiateMessageTest2() throws PcepParseException { - /* srp, lsp. - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x34, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x20, 0x10, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - 0x01, 0x01, 0x01, 0x01, 0x00, 0x43, (byte) 0x83, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33}; //SymbolicPathTlv - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO objects - * in PcInitiate message. - */ - @Test - public void initiateMessageTest3() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv, StatefulRsvpErrorSpecTlv), END-POINTS, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest4() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest5() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest6() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest7() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest8() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x4c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO objects in PcInitiate message. - */ - @Test - public void initiateMessageTest9() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * END-POINT, ERO. - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x3c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, StatefulRsvpErrorSpecTlv) - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest10() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, StatefulRsvpErrorSpecTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x44, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, (byte) 0xb6, 0x02, 0x4e, 0x1f, - (byte) 0xb6, 0x02, 0x4e, 0x20, 0x00, 0x11, 0x00, 0x04, 0x54, 0x31, 0x32, 0x33, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08 //StatefulLspErrorCodeTlv - }; - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv) objects in PcInitiate message. - */ - @Test - public void initiateMessageTest11() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - StatefulLspErrorCodeTlv).*/ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x44, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08}; //StatefulLspErrorCodeTlv - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv) - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest12() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x3c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00 //SymbolicPathNameTlv - }; - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv) - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest13() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x3c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00}; //SymbolicPathNameTlv - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv) - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest14() throws PcepParseException { - - /* SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x34, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20}; - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv) - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest15() throws PcepParseException { - - /* SRP, LSP (StatefulIPv4LspIdentidiersTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x2c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20}; - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest16() throws PcepParseException { - - //srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest17() throws PcepParseException { - - //srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest18() throws PcepParseException { - //srp,lsp (StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(all tlvs),end-point,ero,lspa,bandwidth,metric-list - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest19() throws PcepParseException { - //srp,lsp(all tlvs),end-point,ero,lspa,bandwidth,metric-list - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x74, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x04, //ERO object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, srp, - * lsp(SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv) objects in PcInitiate message. - */ - @Test - public void initiateMessageTest20() throws PcepParseException { - /* srp,lsp (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, srp, - * lsp(SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv). - */ - byte[] initiateDeletionMsg = new byte[]{0x20, 0x0C, 0x00, 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20}; - - byte[] testInitiateDeletionMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateDeletionMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateDeletionMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateDeletionMsg = new byte[iReadLen]; - buf.readBytes(testInitiateDeletionMsg, 0, iReadLen); - - assertThat(testInitiateDeletionMsg, is(initiateDeletionMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest21() throws PcepParseException { - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero, - * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0x94, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest22() throws PcepParseException { - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero, - * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xA8, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest23() throws PcepParseException { - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero, - * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth - */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xB0, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest24() throws PcepParseException { - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero, - * srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth*/ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xBC, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), end-point,ero,lspa,bandwidth,metric-list - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest25() throws PcepParseException { - - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), - * end-point,ero,lspa,bandwidth,metric-list */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xC4, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth,metric-list, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), end-point,ero,lspa,bandwidth,metric-list - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest26() throws PcepParseException { - - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,bandwidth,metric-list, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), - * end-point,ero,lspa,bandwidth,metric-list */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xD0, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } - - /** - * This test case checks for srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), end-point,ero,lspa,bandwidth,metric-list - * objects in PcInitiate message. - */ - @Test - public void initiateMessageTest27() throws PcepParseException { - - /*srp,lsp(StatefulIPv4LspIdentidiersTlv),end-point,ero,lspa,bandwidth,metric-list, - * srp,lsp(StatefulIPv4LspIdentidiersTlv), - * end-point,ero,lspa,bandwidth,metric-list */ - byte[] initiateCreationMsg = new byte[]{0x20, 0x0C, 0x00, (byte) 0xE4, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x04, 0x12, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, //Endpoints Object - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x08, 0x0C, 0x01, 0x01, 0x02, 0x00, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testInitiateCreationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(initiateCreationMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepInitiateMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testInitiateCreationMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testInitiateCreationMsg = new byte[iReadLen]; - buf.readBytes(testInitiateCreationMsg, 0, iReadLen); - - assertThat(testInitiateCreationMsg, is(initiateCreationMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsgTest.java deleted file mode 100644 index 56cf06b4..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsgTest.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepKeepaliveMsgTest { - - /** - * Common header for keep alive message. - */ - @Test - public void keepaliveMessageTest1() throws PcepParseException { - - byte[] keepaliveMsg = new byte[] {0x20, 0x02, 0x00, 0x04 }; - - byte[] testKeepaliveMsg = {0 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(keepaliveMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepKeepaliveMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - message.writeTo(buf); - - testKeepaliveMsg = buf.array(); - - int iReadLen = buf.writerIndex(); - testKeepaliveMsg = new byte[iReadLen]; - buf.readBytes(testKeepaliveMsg, 0, iReadLen); - - Assert.assertThat(testKeepaliveMsg, is(keepaliveMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsgTest.java deleted file mode 100644 index e1947bd7..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsgTest.java +++ /dev/null @@ -1,402 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.is; - -public class PcepLabelUpdateMsgTest { - - /** - * This test case checks for - * <pce-label-download> SRP, LSP, LABEL Object. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest1() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x24, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-download> SRP, LSP, LABEL Object, LABEL Object. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest2() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x30, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-map> SRP, LABEL, FEC Object. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest3() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x24, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0B, 0x0B}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-download> SRP, LSP, LABEL, LABEL, <pce-label-download> SRP, LSP, LABEL - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest4() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x50, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x11, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x02, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x44}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-map> SRP, LABEL, FEC, <pce-label-map> SRP, LABEL, FEC. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest5() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x44, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0B, 0x0B, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x11, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0C, 0x0C}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-download> SRP, LSP, LABEL, LABEL, <pce-label-download> SRP, LABEL, FEC. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest6() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x50, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0D, 0x0D}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-download> SRP, LABEL, FEC, <pce-label-download> SRP, LSP, LABEL, LABEL. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest7() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x50, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0D, 0x0D, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } - - /** - * This test case checks for - * <pce-label-download> SRP, LABEL, FEC, <pce-label-download> SRP, LSP, LABEL, LABEL. - * <pce-label-download> SRP, LSP, LABEL, LABEL. - * in PcepLabelUpdate message. - */ - @Test - public void labelUpdateMessageTest8() throws PcepParseException { - - byte[] labelUpdate = new byte[]{0x20, 0x0D, 0x00, 0x7C, // common header - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x24, 0x10, 0x00, 0x08, // FEC Object Header - 0x0A, 0x0A, 0x0D, 0x0D, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77, - 0x21, 0x10, 0x00, 0x0C, // SRP Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, - 0x20, 0x10, 0x00, 0x08, // LSP Object Header - 0x00, 0x01, 0x00, 0x00, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x66, - 0x23, 0x10, 0x00, 0x0C, // LABEL Object Header - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x77}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(labelUpdate); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testLabelUpdateMsg = {0}; - - assertThat(message, instanceOf(PcepLabelUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testLabelUpdateMsg = new byte[readLen]; - buf.readBytes(testLabelUpdateMsg, 0, readLen); - - assertThat(testLabelUpdateMsg, is(labelUpdate)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepOpenMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepOpenMsgTest.java deleted file mode 100644 index 6e0a0596..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepOpenMsgTest.java +++ /dev/null @@ -1,558 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; -/** - * Test cases for PCEP OPEN Message. - */ -public class PcepOpenMsgTest { - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV in Pcep Open message. - */ - @Test - public void openMessageTest1() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x10, 0x00, 0x20, 0x20, 0x1e, 0x78, (byte) 0xbd, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV - 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY-TLV in Pcep Open message. - */ - @Test - public void openMessageTest2() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x14, // common header - 0x01, 0x10, 0x00, 0x10, // common object header - 0x20, 0x1E, 0x78, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f}; // STATEFUL-PCE-CAPABILITY - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with GmplsCapability tlv in Pcep Open message. - */ - @Test - public void openMessageTest3() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x14, // common header - 0x01, 0x10, 0x00, 0x10, // common object header - 0x20, 0x1E, 0x78, 0x01, // OPEN object - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00}; //GMPLS-CAPABILITY-TLV - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with StatefulLspDbVer Tlv in Pcep Open message. - */ - @Test - public void openMessageTest4() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x18, - 0x01, 0x10, 0x00, 0x14, 0x20, 0x1e, 0x78, 0x20, - 0x00, 0x17, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }; //StatefulLspDbVerTlv - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with no tlv's in Pcep Open message. - */ - @Test - public void openMessageTest5() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x0C, - 0x01, 0x10, 0x00, 0x08, 0x20, 0x1e, 0x78, (byte) 0xbd }; // no Tlvs in open messsage - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV - * with I bit set in Pcep Open message. - */ - @Test - public void openMessageTest6() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x11, 0x00, 0x20, //p bit not set & i bit set - 0x20, 0x1e, 0x78, (byte) 0xbd, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, // STATEFUL-PCE-CAPABILITY - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV - 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV - * with P bit set in Pcep Open message. - */ - @Test - public void openMessageTest7() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x12, 0x00, 0x20, //p bit set & i bit not set - 0x20, 0x1e, 0x78, (byte) 0xbd, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV - 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV - * with P & I bits set in Pcep Open message. - */ - @Test - public void openMessageTest8() throws PcepParseException { - - /* OPEN OBJECT (STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV) - with p bit set & i bit set. - */ - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x13, 0x00, 0x20, //p bit set & i bit set - 0x20, 0x1e, 0x78, (byte) 0xbd, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV - 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, PCECC-CAPABILITY-TLV - * with P & I bits set and invalid session id in Pcep Open message. - */ - @Test - public void openMessageTest9() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, 0x01, 0x13, 0x00, 0x20, //p bit set & i bit set - 0x20, 0x1e, 0x78, 0x00, //invalid sessionID - 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, //STATEFUL-PCE-CAPABILITY - 0x00, 0x0e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, //GMPLS-CAPABILITY-TLV - 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, //PCECC-CAPABILITY-TLV - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV - * in Pcep Open message. - */ - @Test - public void openMessageTest10() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x1C, // common header - 0x01, 0x10, 0x00, 0x18, // common object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, - 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00}; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV, TED Capability TLV in Pcep Open message. - */ - @Test - public void openMessageTest11() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x2C, // common header - 0x01, 0x10, 0x00, 0x28, // common object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // PCECC-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x03, 0x00, (byte) 0x84, 0x00, 0x04, // TED Capability TLV - 0x00, 0x00, 0x00, 0x00 }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV, - * PCECC-CAPABILITY-TLV in Pcep Open message. - */ - @Test - public void openMessageTest12() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x24, // common header - 0x01, 0x10, 0x00, 0x20, // common object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // PCECC-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x03}; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY, GMPLS-CAPABILITY-TLV - * in Pcep Open message. - */ - @Test - public void openMessageTest13() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x1c, // common header - 0x01, 0x10, 0x00, 0x18, // common object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x04, // GMPLS-CAPABILITY-TLV - 0x00, 0x00, 0x00, 0x00}; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with STATEFUL-PCE-CAPABILITY in Pcep Open message. - */ - @Test - public void openMessageTest14() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x14, // common header - 0x01, 0x10, 0x00, 0x10, // common object header - 0x20, 0x05, 0x1E, 0x01, // OPEN object - 0x00, 0x10, 0x00, 0x04, // STATEFUL-PCE-CAPABILITY - 0x00, 0x00, 0x00, 0x05}; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - - } - - /** - * This test case checks open object with no tlv Pcep Open message. - */ - @Test - public void openMessageTest15() throws PcepParseException { - - byte[] openMsg = new byte[] {0x20, 0x01, 0x00, 0x0c, // common header - 0x01, 0x10, 0x00, 0x08, // common object header - 0x20, 0x05, 0x1E, 0x01 // OPEN object - }; - - byte[] testOpenMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepOpenMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testOpenMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - assertThat(testOpenMsg, is(openMsg)); - - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgExtTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgExtTest.java deleted file mode 100644 index f9921efd..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgExtTest.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepReportMsgExtTest { - - /** - * This test case checks forSRP Object,LSP Object(symbolic path tlv),ERO Object - * SRP Object,LSP Object(symbolic path tlv,ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest39() throws PcepParseException { - - byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x98, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object - * SRP Object,LSP Object(symbolic path tlv),ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest40() throws PcepParseException { - - byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object - * SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object - * in PcRpt message. - */ - @Test - public void reportMessageTest41() throws PcepParseException { - - byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x8c, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object,BandWidth Object, - * Metric-list SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object,BandWidth Object,Metric-list, - * RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest42() throws PcepParseException { - - byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0xE8, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //symbolic path tlv - 0x07, 0x10, 0x00, 0x14, //ERO object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgTest.java deleted file mode 100644 index c9e2bc8b..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgTest.java +++ /dev/null @@ -1,1597 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepReportMsgTest { - - /** - * This test case checks for SRP object, LSP object(Symbolic path name tlv), ERO object - * in PcRpt message. - */ - @Test - public void reportMessageTest1() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, 0x24, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x04}; //ERO Object - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object, LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv - * StatefulLspErrorCodeTlv) ERO Object, LSPA Object, Metric-list, IRO object - * in PcRpt message. - */ - @Test - public void reportMessageTest2() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x7c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object // LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, // IPv4SubObjects - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, //Metric Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - }; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv,StatefulLspErrorCodeTlv) - * ERO Object, LSPA Object, Metric-list, IRO object - * in PcRpt message. - */ - @Test - public void reportMessageTest3() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x70, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, //Ipv4SubObjects - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, //Metric Objects - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - }; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv,StatefulLspErrorCodeTlv) - * ERO Object, LSPA Object, Metric-list - * in PcRpt message. - */ - @Test - public void reportMessageTest4() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object, LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv - * StatefulLspErrorCodeTlv) ERO Object, IRO object - * in PcRpt message. - */ - @Test - public void reportMessageTest5() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object, LSP Object(StatefulIPv4LspIdentidiersTlv,SymbolicPathNameTlv - * StatefulLspErrorCodeTlv) ERO Object, LSPA Object, Metric-list. - * in PcRpt message. - */ - @Test - public void reportMessageTest6() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x6c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x04, //ERO Object - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, //Metric object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - }; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object, ERO Object, LSPA Object, Metric-list, IRO object - * in PcRpt message. - */ - @Test - public void reportMessageTest7() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, // Metric objects - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP object, LSP object( StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv) ERO object, LSPA object, Metric object - * in PcRpt message. - */ - @Test - public void reportMessageTest8() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric Object - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv, - * StatefulLspErrorCodeTlv ),ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest9() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x44, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(StatefulIPv4LspIdentidiersTlv)ERO Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest10() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x74, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(SymbolicPathNameTlv)ERO Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest11() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object, ERO Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest12() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(StatefulLspErrorCodeTlv)ERO Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest13() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(StatefulRsvpErrorSpecTlv),ERO Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest14() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),LSPA Object,ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest15() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x7C, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),BandWidth Object,ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest16() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object,ERO Object,LSPA Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest17() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x74, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object,ERO Object,BandWidth Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest18() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object,ERO Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest19() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x6C, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object,ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest20() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x88, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv, - * StatefulLspErrorCodeTlv ) ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest21() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xac, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest22() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xA0, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * ERO Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest23() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x8c, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * ERO Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest24() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x84, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * ERO Object,LSPA Object,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest25() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x8c, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * ERO Object,LSPA Object - * in PcRpt message. - */ - @Test - public void reportMessageTest26() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x58, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv) - * ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest27() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x44, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for LSP Object(Symbolic path tlv, StatefulIPv4LspIdentidiersTlv,StatefulLspErrorCodeTlv ) - * LSPA Object,BandWidth Object,Metric-list,ERO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest28() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x6c, - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest29() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x74, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,Metric-list,RRO Object - * SRP Object,LSP Object(symbolic path tlv),ERO Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest30() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xE4, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object - * BandWidth Object,Metric-list,RRO Object,SRP Object,LSP Object(symbolic path tlv) - * ERO Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest31() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x01, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object - * BandWidth Object,Metric-list,RRO Object,SRP Object,LSP Object(symbolic path tlv) - * ERO Object,LSPA Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest32() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x01, (byte) 0x14, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path tlv),ERO Object,LSPA Object - * BandWidth Object,Metric-list,RRO Object,SRP Object,LSP Object(symbolic path tlv) - * ERO Object,LSPA Object,BandWidth Object,Metric-list,RRO Object - * in PcRpt message. - */ - @Test - public void reportMessageTest33() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x01, (byte) 0x1c, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x08, 0x10, 0x00, 0x34, 0x01, 0x08, 0x11, 0x01, //RRO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x05, 0x05, 0x05, 0x05, 0x04, 0x00}; - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object(symbolic path Tlv),ERO Object,LSPA Object - * BandWidth Object,Metric-list,SRP Object,LSP Object(symbolic path tlv) - * ERO Object,LSPA Object,BandWidth Object,Metric-list - * in PcRpt message. - */ - @Test - public void reportMessageTest34() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0xB4, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric Object - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x04, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric Object - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } - - /** - * This test case checks for SRP Object,LSP Object)Symbolic path tlv),ERO Object,SRP Object - * LSP Object(symbolic path tlv) ERO Object,LSPA Object, BandWidth Object,Metric-list - * in PcRpt message. - */ - @Test - public void reportMessageTest35() throws PcepParseException { - - byte[] reportMsg = new byte[]{0x20, 0x0a, 0x00, (byte) 0x8C, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x21, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //SRP Object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP Object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, //ERO Object - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x04, 0x00, - 0x01, 0x08, (byte) 0xb6, 0x02, 0x4e, 0x20, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, //LSPA Object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth Object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric Object - - byte[] testReportMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(reportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(reportMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepTEReportMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepTEReportMsgTest.java deleted file mode 100644 index e401c159..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepTEReportMsgTest.java +++ /dev/null @@ -1,1596 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepTEReportMsgTest { - - /** - * This test case checks for - * TE Object (Routing Universe TLV, Local TE Node Descriptors TLV(AutonomousSystemTlv)). - * in PcTERpt message. - */ - @Test - public void teReportMessageTest1() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x28, // common header - 0x0E, 0x10, 0x00, 0x24, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x08, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystem Tlv - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * T E Object (Routing Universe TLV, Local TE Node Descriptors TLV(AutonomousSystemTlv)) with different TE-ID. - * in PcTERpt message. - */ - @Test - public void teReportMessageTest2() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x28, // common header - 0x0E, 0x10, 0x00, 0x24, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x08, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for TE Object (Routing Universe TLV) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest3() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x1c, // common header - 0x0E, 0x10, 0x00, 0x18, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv. - * OSPFareaIDsubTlv, RouterIDSubTlv)). - * in PcTERpt message. - */ - @Test - public void teReportMessageTest4() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x44, // common header - 0x0E, 0x10, 0x00, 0x40, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest5() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x3C, // common header - 0x0E, 0x10, 0x00, 0x38, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x1C, // Local TE Node Descriptors TLV - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(OSPFareaIDsubTlv, - * RouterIDSubTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest6() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x34, // common header - 0x0E, 0x10, 0x00, 0x30, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x14, // Local TE Node Descriptors TLV - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(RouterIDSubTlv)). - * in PcTERpt message. - */ - @Test - public void teReportMessageTest7() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x2C, // common header - 0x0E, 0x10, 0x00, 0x28, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x0C, // Local TE Node Descriptors TLV - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for TE Object (Routing Universe TLV,Local TE Node Descriptors TLV) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest8() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x20, // common header - 0x0E, 0x10, 0x00, 0x1C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x00 // Local TE Node Descriptors TLV - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv. - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv. - * OSPFareaIDsubTlv, RouterIDSubTlv)). - * in PcTERpt message. - */ - @Test - public void teReportMessageTest9() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x6C, // common header - 0x0E, 0x10, 0x00, 0x68, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest10() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x64, // common header - 0x0E, 0x10, 0x00, 0x60, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x1C, //RemoteTENodeDescriptorsTLV - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(OSPFareaIDsubTlv, RouterIDSubTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest11() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x5C, // common header - 0x0E, 0x10, 0x00, 0x58, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x14, //RemoteTENodeDescriptorsTLV - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(RouterIDSubTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest12() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x54, // common header - 0x0E, 0x10, 0x00, 0x50, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x0c, //RemoteTENodeDescriptorsTLV - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest13() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, 0x48, // common header - 0x0E, 0x10, 0x00, 0x44, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x00, //RemoteTENodeDescriptorsTLV - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest14() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0x8C, // common header - 0x0E, 0x10, 0x00, (byte) 0x88, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV( - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest15() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0x80, // common header - 0x0E, 0x10, 0x00, (byte) 0x7C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x10, //TELinkDescriptorsTLV - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(IPv4NeighborAddressTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest16() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0x78, // common header - 0x0E, 0x10, 0x00, (byte) 0x74, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x08, //TELinkDescriptorsTLV - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest17() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0x70, // common header - 0x0E, 0x10, 0x00, (byte) 0x6C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x00, //TELinkDescriptorsTLV - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest18() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0xC0, // common header - 0x0E, 0x10, 0x00, (byte) 0xbC, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x30, //TENodeAttributesTlv - 0x00, 0x0E, 0x00, 0x01, //NodeFlagBitsTlv - (byte) 0x90, 0x00, 0x00, 0x00, - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(NodeFlagBitsTlv - * OpaqueNodeAttributeTlv, NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest19() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0xC0, // common header - 0x0E, 0x10, 0x00, (byte) 0xBC, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x30, //TENodeAttributesTlv - 0x00, 0x0E, 0x00, 0x01, //NodeFlagBitsTlv - (byte) 0x90, 0x00, 0x00, 0x00, - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(OpaqueNodeAttributeTlv - * NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest20() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0xB8, // common header - 0x0E, 0x10, 0x00, (byte) 0xB4, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x28, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv. - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(OpaqueNodeAttributeTlv - * ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest21() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x00, (byte) 0xAC, // common header - 0x0E, 0x10, 0x00, (byte) 0xA8, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x1C, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv. - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv. - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv. - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(NodeFlagBitsTlv. - * OpaqueNodeAttributeTlv, NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv). - * TELinkAttributesTlv(IPv4TERouterIdOfRemoteNodeTlv, IPv6TERouterIdofRemoteNodeTlv, AdministrativeGroupTlv. - * MaximumLinkBandwidthTlv, MaximumReservableLinkBandwidthTlv, UnreservedBandwidthTlv, TEDefaultMetricTlv. - * LinkProtectionTypeTlv, MPLSProtocolMaskTlv, IGPMetricTlv:, SharedRiskLinkGroupTlv. - * OpaqueLinkAttributeTlv, LinkNameTlv)). - * in PcTERpt message. - */ - @Test - public void teReportMessageTest22() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x01, (byte) 0x120, // common header - 0x0E, 0x10, 0x01, (byte) 0x1C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x28, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02, - 0x07, 0x69, 0x00, 0x64, //TELinkAttributesTlv - 0x05, 0x3C, 0x00, 0x04, //IPv4TERouterIdOfRemoteNodeTlv - 0x00, 0x07, 0x08, 0x00, - 0x00, 0x03, 0x00, 0x04, //AdministrativeGroupTlv - 0x00, 0x09, 0x08, 0x00, - 0x00, 0x09, 0x00, 0x04, //MaximumLinkBandwidthTlv - 0x00, 0x09, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x04, //MaximumReservableLinkBandwidthTlv - 0x00, 0x10, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x04, //UnreservedBandwidthTlv - 0x00, 0x00, (byte) 0x90, 0x00, - 0x34, 0x58, 0x00, 0x04, //TEDefaultMetricTlv - 0x00, (byte) 0x99, 0x09, 0x00, - 0x00, 0x14, 0x00, 0x02, //LinkProtectionTypeTlv - 0x09, 0x00, 0x00, 0x00, - 0x04, 0x46, 0x00, 0x01, //MPLSProtocolMaskTlv - (byte) 0x80, 0x00, 0x00, 0x00, - 0x04, 0x47, 0x00, 0x03, //IGPMetricTlv - 0x09, (byte) 0x89, 0x07, 0x00, - 0x04, 0x48, 0x00, 0x08, //SharedRiskLinkGroupTlv - 0x04, 0x47, 0x00, 0x03, - 0x04, 0x47, 0x00, 0x03, //OpaqueLinkAttributeTlv - 0x04, 0x49, 0x00, 0x04, - 0x04, 0x47, 0x00, 0x03, - 0x04, 0x4A, 0x00, 0x04, //LinkNameTlv - 0x04, 0x47, 0x00, 0x03 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(NodeFlagBitsTlv - * OpaqueNodeAttributeTlv, NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv) - * TELinkAttributesTlv(IPv4TERouterIdOfRemoteNodeTlv, IPv6TERouterIdofRemoteNodeTlv, AdministrativeGroupTlv - * MaximumLinkBandwidthTlv, MaximumReservableLinkBandwidthTlv, UnreservedBandwidthTlv, TEDefaultMetricTlv - * LinkProtectionTypeTlv, MPLSProtocolMaskTlv, IGPMetricTlv:, SharedRiskLinkGroupTlv - * OpaqueLinkAttributeTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest23() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x01, (byte) 0x118, // common header - 0x0E, 0x10, 0x01, (byte) 0x14, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x28, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02, - 0x07, 0x69, 0x00, 0x5C, //TELinkAttributesTlv - 0x05, 0x3C, 0x00, 0x04, //IPv4TERouterIdOfRemoteNodeTlv - 0x00, 0x07, 0x08, 0x00, - 0x00, 0x03, 0x00, 0x04, //AdministrativeGroupTlv - 0x00, 0x09, 0x08, 0x00, - 0x00, 0x09, 0x00, 0x04, //MaximumLinkBandwidthTlv - 0x00, 0x09, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x04, //MaximumReservableLinkBandwidthTlv - 0x00, 0x10, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x04, //UnreservedBandwidthTlv - 0x00, 0x00, (byte) 0x90, 0x00, - 0x34, 0x58, 0x00, 0x04, //TEDefaultMetricTlv - 0x00, (byte) 0x99, 0x09, 0x00, - 0x00, 0x14, 0x00, 0x02, //LinkProtectionTypeTlv - 0x09, 0x00, 0x00, 0x00, - 0x04, 0x46, 0x00, 0x01, //MPLSProtocolMaskTlv - (byte) 0x80, 0x00, 0x00, 0x00, - 0x04, 0x47, 0x00, 0x03, //IGPMetricTlv - 0x09, (byte) 0x89, 0x07, 0x00, - 0x04, 0x48, 0x00, 0x08, //SharedRiskLinkGroupTlv - 0x04, 0x47, 0x00, 0x03, - 0x04, 0x47, 0x00, 0x03, //OpaqueLinkAttributeTlv - 0x04, 0x49, 0x00, 0x04, - 0x04, 0x47, 0x00, 0x03 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(NodeFlagBitsTlv - * OpaqueNodeAttributeTlv, NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv) - * TELinkAttributesTlv(IPv4TERouterIdOfRemoteNodeTlv, IPv6TERouterIdofRemoteNodeTlv, AdministrativeGroupTlv - * MaximumLinkBandwidthTlv, MaximumReservableLinkBandwidthTlv, UnreservedBandwidthTlv, TEDefaultMetricTlv - * LinkProtectionTypeTlv, MPLSProtocolMaskTlv, IGPMetricTlv:, SharedRiskLinkGroupTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest24() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x01, (byte) 0x110, // common header - 0x0E, 0x10, 0x01, (byte) 0x0C, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x28, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02, - 0x07, 0x69, 0x00, 0x54, //TELinkAttributesTlv - 0x05, 0x3C, 0x00, 0x04, //IPv4TERouterIdOfRemoteNodeTlv - 0x00, 0x07, 0x08, 0x00, - 0x00, 0x03, 0x00, 0x04, //AdministrativeGroupTlv - 0x00, 0x09, 0x08, 0x00, - 0x00, 0x09, 0x00, 0x04, //MaximumLinkBandwidthTlv - 0x00, 0x09, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x04, //MaximumReservableLinkBandwidthTlv - 0x00, 0x10, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x04, //UnreservedBandwidthTlv - 0x00, 0x00, (byte) 0x90, 0x00, - 0x34, 0x58, 0x00, 0x04, //TEDefaultMetricTlv - 0x00, (byte) 0x99, 0x09, 0x00, - 0x00, 0x14, 0x00, 0x02, //LinkProtectionTypeTlv - 0x09, 0x00, 0x00, 0x00, - 0x04, 0x46, 0x00, 0x01, //MPLSProtocolMaskTlv - (byte) 0x80, 0x00, 0x00, 0x00, - 0x04, 0x47, 0x00, 0x03, //IGPMetricTlv - 0x09, (byte) 0x89, 0x07, 0x00, - 0x04, 0x48, 0x00, 0x08, //SharedRiskLinkGroupTlv - 0x04, 0x47, 0x00, 0x03, - 0x04, 0x47, 0x00, 0x03 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } - - /** - * This test case checks for - * TE Object (Routing Universe TLV,Local TE Node Descriptors TLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), RemoteTENodeDescriptorsTLV(AutonomousSystemTlv, BGPLSidentifierTlv - * OSPFareaIDsubTlv, RouterIDSubTlv), TELinkDescriptorsTLV(LinkLocalRemoteIdentifiersTlv - * IPv4InterfaceAddressTlv, IPv4NeighborAddressTlv), TENodeAttributesTlv(NodeFlagBitsTlv - * OpaqueNodeAttributeTlv, NodeNameTlv, ISISAreaIdentifierTlv, IPv4TERouterIdOfLocalNodeTlv) - * TELinkAttributesTlv(IPv4TERouterIdOfRemoteNodeTlv, IPv6TERouterIdofRemoteNodeTlv, AdministrativeGroupTlv - * MaximumLinkBandwidthTlv, MaximumReservableLinkBandwidthTlv, UnreservedBandwidthTlv, TEDefaultMetricTlv - * LinkProtectionTypeTlv, MPLSProtocolMaskTlv, IGPMetricTlv)) - * in PcTERpt message. - */ - @Test - public void teReportMessageTest25() throws PcepParseException { - - byte[] teReportMsg = new byte[]{0x20, 0x0E, 0x01, (byte) 0x104, // common header - 0x0E, 0x10, 0x01, 0x00, // TE Object Header - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, // TE-ID - 0x00, 0x0E, 0x00, 0x08, // Routing Universe TLV - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x06, 0x65, 0x00, 0x24, // Local TE Node Descriptors TLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xEB, 0x00, 0x24, //RemoteTENodeDescriptorsTLV - 0x00, 0x64, 0x00, 0x04, //AutonomousSystemTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x11, 0x00, 0x04, //BGPLSidentifierTlv - 0x00, 0x00, 0x00, 0x11, - 0x02, 0x58, 0x00, 0x04, //OSPFareaIDsubTlv - 0x00, 0x00, 0x00, 0x11, - 0x03, (byte) 0xE8, 0x00, 0x08, //RouterIDSubTlv - 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, - 0x04, 0x2E, 0x00, 0x1C, //TELinkDescriptorsTLV - 0x00, 0x04, 0x00, 0x08, //LinkLocalRemoteIdentifiersTlv - 0x01, 0x11, 0x00, 0x09, - 0x01, 0x21, 0x00, 0x09, - 0x00, 0x06, 0x00, 0x04, //IPv4InterfaceAddressTlv - 0x01, 0x01, 0x01, 0x01, - 0x00, 0x08, 0x00, 0x04, //IPv4NeighborAddressTlv - 0x01, 0x011, 0x01, 0x10, - 0x04, (byte) 0xF3, 0x00, 0x28, //TENodeAttributesTlv - 0x03, (byte) 0xE9, 0x00, 0x04, //OpaqueNodeAttributeTlv - 0x01, 0x011, 0x01, 0x10, - 0x03, (byte) 0xEF, 0x00, 0x08, //NodeNameTlv - 0x08, 0x00, 0x01, 0x09, - 0x08, 0x00, 0x01, 0x09, - 0x00, 0x6B, 0x00, 0x08, //ISISAreaIdentifierTlv - 0x20, 0x01, 0x22, 0x01, - 0x20, 0x01, 0x22, 0x01, - 0x00, (byte) 0x86, 0x00, 0x04, //IPv4TERouterIdOfLocalNodeTlv - 0x00, 0x01, 0x01, 0x02, - 0x07, 0x69, 0x00, 0x48, //TELinkAttributesTlv - 0x05, 0x3C, 0x00, 0x04, //IPv4TERouterIdOfRemoteNodeTlv - 0x00, 0x07, 0x08, 0x00, - 0x00, 0x03, 0x00, 0x04, //AdministrativeGroupTlv - 0x00, 0x09, 0x08, 0x00, - 0x00, 0x09, 0x00, 0x04, //MaximumLinkBandwidthTlv - 0x00, 0x09, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x04, //MaximumReservableLinkBandwidthTlv - 0x00, 0x10, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x04, //UnreservedBandwidthTlv - 0x00, 0x00, (byte) 0x90, 0x00, - 0x34, 0x58, 0x00, 0x04, //TEDefaultMetricTlv - 0x00, (byte) 0x99, 0x09, 0x00, - 0x00, 0x14, 0x00, 0x02, //LinkProtectionTypeTlv - 0x09, 0x00, 0x00, 0x00, - 0x04, 0x46, 0x00, 0x01, //MPLSProtocolMaskTlv - (byte) 0x80, 0x00, 0x00, 0x00, - 0x04, 0x47, 0x00, 0x03, //IGPMetricTlv - 0x09, (byte) 0x89, 0x07, 0x00 - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(teReportMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - byte[] testReportMsg = {0}; - - assertThat(message, instanceOf(PcepTEReportMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testReportMsg = new byte[readLen]; - buf.readBytes(testReportMsg, 0, readLen); - - assertThat(testReportMsg, is(teReportMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgExtTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgExtTest.java deleted file mode 100644 index 40234a69..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgExtTest.java +++ /dev/null @@ -1,1269 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -/** - * Test cases for PCEP update message. - */ -public class PcepUpdateMsgExtTest { - - /** - * This test case is for SRP object(symbolic path tlv), LSP object(StatefulLspDbVerTlv), ERO object, - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest1() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x8c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x38, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object, - * LSPA, Bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest2() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSP object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object, ERO object, LSPA, bandwidth object - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest3() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object,bandwidth object - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest4() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object,bandwidth object - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest5() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object, LSPA, bandwidth object - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest6() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object, - * bandwidth object Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest7() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest8() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulRsvpErrorSpecTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest9() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x18, 0x00, 0x00, 0x10, 0x03, - 0x00, 0x15, 0x00, 0x0c, //StatefulRsvpErrorSpecTlv - 0x00, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulRsvpErrorSpecTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest10() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPa object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest11() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest12() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object,LSPA - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest13() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object,LSPA - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest14() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object, ERO object,LSPA - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest15() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //lspa object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object,LSPA - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest16() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object,LSPA - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest17() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object,LSPA - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest18() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object, - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest19() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest20() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object, ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest21() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest22() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspDbVerTlv), ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest23() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(SymbolicPathNameTlv), ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest24() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(SymbolicPathNameTlv), ERO object, - * Bandwidth , metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest25() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulIPv4LspIdentidiersTlv), ERO object, - * LSPA object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest26() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object, ERO object, - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest27() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x34, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object, LSP object(StatefulLspErrorCodeTlv), ERO object, - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest28() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(StatefulLspErrorCodeTlv), ERO object, - * lspa object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest29() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(StatefulLspErrorCodeTlv), ERO object, - * bandwidth object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest30() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(SymbolicPathNameTlv), LSP object(StatefulLspErrorCodeTlv), ERO object, - * metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest31() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case is for SRP object(symbolic path tlv), LSP object(StatefulLspDbVerTlv), ERO object, - * Metric object in PcepUpdate message. - */ - @Test - public void pcepUpdateMsgTest32() throws PcepParseException { - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x17, 0x00, 0x08, //StatefulLspDbVerTlv - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO Object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } -} - diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgTest.java deleted file mode 100644 index 1db30641..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgTest.java +++ /dev/null @@ -1,1423 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.pcepio.exceptions.PcepParseException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -public class PcepUpdateMsgTest { - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), ERO in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest1() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x30, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, (byte) 0xb6, 0x02, 0x4e, 0x1f, //StatefulIPv4LspIdentidiersTlv - 0x00, 0x01, (byte) 0x80, 0x01, (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x04 }; //ERO object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP(SymbolicPathNameTlv), LSP (StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspErrorCodeTlv), ERO, LSPA, Metric-list in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest2() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x94, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object // lsp object - 0x00, 0x12, 0x00, 0x10, (byte) 0xb6, 0x02, 0x4e, 0x1f, //StatefulIPv4LspIdentidiersTlv - 0x00, 0x01, (byte) 0x80, 0x01, (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x24, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, - 0x01, 0x02, 0x04, 0x00, 0x01, 0x08, 0x12, 0x01, 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv), - * ERO objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest3() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x38, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x04 }; //ERO object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv), ERO objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest4() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x04 }; //ERO object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv), ERO objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest5() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x40, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x04 }; //ERO object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest6() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x04 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest7() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x04}; //ERO object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject) objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest8() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x50, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x0c, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject) objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest9() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject), LSPA objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest10() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x6c, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject),LSPA, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest11() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x78, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest12() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest13() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * ERO (IPv4SubObject, IPv4SubObject),LSPA, metric Object objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest14() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv), - * ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest15() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject),LSPA, metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest16() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x60, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject),LSPA objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest17() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x05, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00 }; - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject),Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest18() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x4c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject),Metric-list objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest19() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x58, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20, //Metric object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv),ERO (IPv4SubObject, IPv4SubObject),LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest20() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x80, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject), Bandwidth objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest21() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x48, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest22() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5C, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; //Bandwidth object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest23() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv) - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest24() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv) - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest25() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x70, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x24, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv) ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, - * Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest26() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x78, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv, SymbolicPathNameTlv, - * StatefulLspErrorCodeTlv) ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, - * Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest27() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x78, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, StatefulIPv4LspIdentidiersTlv, - * SymbolicPathNameTlv, StatefulLspErrorCodeTlv), ERO (IPv4SubObject, IPv4SubObject), - * LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest28() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x80, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulIPv4LspIdentidiersTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest29() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x68, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x12, 0x00, 0x10, //StatefulIPv4LspIdentidiersTlv - (byte) 0xb6, 0x02, 0x4e, 0x1f, 0x00, 0x01, (byte) 0x80, 0x01, - (byte) 0xb6, 0x02, 0x4e, 0x1f, (byte) 0xb6, 0x02, 0x4e, 0x20, - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP, - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest30() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20}; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (StatefulLspErrorCodeTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest31() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, //StatefulLspErrorCodeTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP, - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest32() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x54, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x8, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest33() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x5c, - 0x21, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } - - /** - * This test case checks for SRP, LSP (SymbolicPathNameTlv, SymbolicPathNameTlv), - * ERO (IPv4SubObject, IPv4SubObject), LSPA, Bandwidth, Metric objects in PcUpd message. - */ - @Test - public void pcepUpdateMsgTest34() throws PcepParseException { - - byte[] updateMsg = new byte[] {0x20, 0x0b, 0x00, (byte) 0x64, - 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, //SRP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x03, //LSP object - 0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, //SymbolicPathNameTlv - 0x07, 0x10, 0x00, 0x14, 0x01, 0x08, 0x11, 0x01, //ERO object - 0x01, 0x01, 0x04, 0x00, 0x01, 0x08, 0x11, 0x01, - 0x01, 0x01, 0x04, 0x00, - 0x09, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, //LSPA object - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, - 0x05, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //Bandwidth object - 0x06, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x20 }; //Metric object - - byte[] testupdateMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader(); - PcepMessage message = null; - - message = reader.readFrom(buffer); - - assertThat(message, instanceOf(PcepUpdateMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testupdateMsg = buf.array(); - - int readLen = buf.writerIndex() - 0; - testupdateMsg = new byte[readLen]; - buf.readBytes(testupdateMsg, 0, readLen); - - assertThat(testupdateMsg, is(updateMsg)); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AdministrativeGroupTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AdministrativeGroupTlvTest.java deleted file mode 100644 index 41e88445..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AdministrativeGroupTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the AdministrativeGroupTlv. - */ -public class AdministrativeGroupTlvTest { - private final AdministrativeGroupTlv tlv1 = AdministrativeGroupTlv.of(1); - private final AdministrativeGroupTlv sameAsTlv1 = AdministrativeGroupTlv.of(1); - private final AdministrativeGroupTlv tlv2 = AdministrativeGroupTlv.of(2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemTlvTest.java deleted file mode 100644 index 904a71ef..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the AutonomousSystemTlv. - */ -public class AutonomousSystemTlvTest { - private final AutonomousSystemTlv tlv1 = AutonomousSystemTlv.of(1); - private final AutonomousSystemTlv sameAsTlv1 = AutonomousSystemTlv.of(1); - private final AutonomousSystemTlv tlv2 = AutonomousSystemTlv.of(2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/BGPLSidentifierTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/BGPLSidentifierTlvTest.java deleted file mode 100644 index 7ac6cea4..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/BGPLSidentifierTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the BGPLSidentifierTlv. - */ -public class BGPLSidentifierTlvTest { - private final BGPLSidentifierTlv tlv1 = BGPLSidentifierTlv.of(1); - private final BGPLSidentifierTlv sameAsTlv1 = BGPLSidentifierTlv.of(1); - private final BGPLSidentifierTlv tlv2 = BGPLSidentifierTlv.of(2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/GmplsCapabilityTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/GmplsCapabilityTlvTest.java deleted file mode 100644 index 7972712f..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/GmplsCapabilityTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the GmplsCapabilityTlv. - */ -public class GmplsCapabilityTlvTest { - private final GmplsCapabilityTlv tlv1 = GmplsCapabilityTlv.of(1); - private final GmplsCapabilityTlv sameAsTlv1 = GmplsCapabilityTlv.of(1); - private final GmplsCapabilityTlv tlv2 = GmplsCapabilityTlv.of(2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IGPMetricTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IGPMetricTlvTest.java deleted file mode 100644 index 061a9cea..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IGPMetricTlvTest.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IGPMetricTlv. - */ -public class IGPMetricTlvTest { - private final byte[] b1 = new byte[] {0x01, 0x02}; - private final byte[] b2 = new byte[] {0x01, 0x02}; - private final IGPMetricTlv tlv1 = IGPMetricTlv.of(b1, (short) 2); - private final IGPMetricTlv sameAsTlv1 = IGPMetricTlv.of(b1, (short) 2); - private final IGPMetricTlv tlv2 = IGPMetricTlv.of(b2, (short) 2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlvTest.java deleted file mode 100644 index eb3a16a8..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv4InterfaceAddressTlv. - */ -public class IPv4InterfaceAddressTlvTest { - - private final IPv4InterfaceAddressTlv tlv1 = IPv4InterfaceAddressTlv.of(2); - private final IPv4InterfaceAddressTlv sameAsTlv1 = IPv4InterfaceAddressTlv.of(2); - private final IPv4InterfaceAddressTlv tlv2 = IPv4InterfaceAddressTlv.of(3); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlvTest.java deleted file mode 100644 index 5f10b4c1..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv4NeighborAddressTlv. - */ -public class IPv4NeighborAddressTlvTest { - - private final IPv4NeighborAddressTlv tlv1 = IPv4NeighborAddressTlv.of(2); - private final IPv4NeighborAddressTlv sameAsTlv1 = IPv4NeighborAddressTlv.of(2); - private final IPv4NeighborAddressTlv tlv2 = IPv4NeighborAddressTlv.of(3); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4SubObjectTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4SubObjectTest.java deleted file mode 100644 index 10f54015..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4SubObjectTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv4SubObject. - */ -public class IPv4SubObjectTest { - - private final IPv4SubObject subObj1 = IPv4SubObject.of(2, (byte) 16, (byte) 0); - private final IPv4SubObject sameAsSubObj1 = IPv4SubObject.of(2, (byte) 16, (byte) 0); - private final IPv4SubObject subObj2 = IPv4SubObject.of(3, (byte) 16, (byte) 0); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(subObj1, sameAsSubObj1) - .addEqualityGroup(subObj2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlvTest.java deleted file mode 100644 index 3880ca7f..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv4TERouterIdOfLocalNodeTlv. - */ -public class IPv4TERouterIdOfLocalNodeTlvTest { - - private final IPv4TERouterIdOfLocalNodeTlv tlv1 = IPv4TERouterIdOfLocalNodeTlv.of(2); - private final IPv4TERouterIdOfLocalNodeTlv sameAsTlv1 = IPv4TERouterIdOfLocalNodeTlv.of(2); - private final IPv4TERouterIdOfLocalNodeTlv tlv2 = IPv4TERouterIdOfLocalNodeTlv.of(3); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlvTest.java deleted file mode 100644 index f40ede04..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv4TERouterIdOfRemoteNodeTlv. - */ -public class IPv4TERouterIdOfRemoteNodeTlvTest { - - private final IPv4TERouterIdOfRemoteNodeTlv tlv1 = IPv4TERouterIdOfRemoteNodeTlv.of(2); - private final IPv4TERouterIdOfRemoteNodeTlv sameAsTlv1 = IPv4TERouterIdOfRemoteNodeTlv.of(2); - private final IPv4TERouterIdOfRemoteNodeTlv tlv2 = IPv4TERouterIdOfRemoteNodeTlv.of(3); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlvTest.java deleted file mode 100644 index aa2e5d9b..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlvTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv6InterfaceAddressTlv. - */ -public class IPv6InterfaceAddressTlvTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00}; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final IPv6InterfaceAddressTlv tlv1 = IPv6InterfaceAddressTlv.of(b1); - private final IPv6InterfaceAddressTlv sameAsTlv1 = IPv6InterfaceAddressTlv.of(b1); - private final IPv6InterfaceAddressTlv tlv2 = IPv6InterfaceAddressTlv.of(b2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlvTest.java deleted file mode 100644 index 65e257b0..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlvTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv6NeighborAddressTlv. - */ -public class IPv6NeighborAddressTlvTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00}; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final IPv6NeighborAddressTlv tlv1 = IPv6NeighborAddressTlv.of(b1); - private final IPv6NeighborAddressTlv sameAsTlv1 = IPv6NeighborAddressTlv.of(b1); - private final IPv6NeighborAddressTlv tlv2 = IPv6NeighborAddressTlv.of(b2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6SubObjectTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6SubObjectTest.java deleted file mode 100644 index f23b11d8..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6SubObjectTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv6SubObject. - */ -public class IPv6SubObjectTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00}; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final IPv6SubObject subObj1 = IPv6SubObject.of(b1); - private final IPv6SubObject sameAsSubObj1 = IPv6SubObject.of(b1); - private final IPv6SubObject subObj2 = IPv6SubObject.of(b2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(subObj1, sameAsSubObj1).addEqualityGroup(subObj2).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlvTest.java deleted file mode 100644 index 6516ed3d..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlvTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv6TERouterIdofLocalNodeTlv. - */ -public class IPv6TERouterIdofLocalNodeTlvTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00}; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final IPv6TERouterIdofLocalNodeTlv tlv1 = IPv6TERouterIdofLocalNodeTlv.of(b1); - private final IPv6TERouterIdofLocalNodeTlv sameAsTlv1 = IPv6TERouterIdofLocalNodeTlv.of(b1); - private final IPv6TERouterIdofLocalNodeTlv tlv2 = IPv6TERouterIdofLocalNodeTlv.of(b2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlvTest.java deleted file mode 100644 index f3828609..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlvTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the IPv6TERouterIdofRemoteNodeTlv. - */ -public class IPv6TERouterIdofRemoteNodeTlvTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00}; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final IPv6TERouterIdofRemoteNodeTlv tlv1 = IPv6TERouterIdofRemoteNodeTlv.of(b1); - private final IPv6TERouterIdofRemoteNodeTlv sameAsTlv1 = IPv6TERouterIdofRemoteNodeTlv.of(b1); - private final IPv6TERouterIdofRemoteNodeTlv tlv2 = IPv6TERouterIdofRemoteNodeTlv.of(b2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlvTest.java deleted file mode 100644 index 17584ac1..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlvTest.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the ISISAreaIdentifierTlv. - */ -public class ISISAreaIdentifierTlvTest { - - private final byte[] b1 = new byte[] {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; - private final byte[] b2 = new byte[] {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; - - private final ISISAreaIdentifierTlv tlv1 = ISISAreaIdentifierTlv.of(b1, (short) 20); - private final ISISAreaIdentifierTlv sameAsTlv1 = ISISAreaIdentifierTlv.of(b1, (short) 20); - private final ISISAreaIdentifierTlv tlv2 = ISISAreaIdentifierTlv.of(b2, (short) 20); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LabelSubObjectTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LabelSubObjectTest.java deleted file mode 100644 index 511d0a20..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LabelSubObjectTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the LabelSubObject. - */ -public class LabelSubObjectTest { - - private final LabelSubObject subObj1 = LabelSubObject.of((byte) 0, (byte) 1, 20); - private final LabelSubObject sameAsSubObj1 = LabelSubObject.of((byte) 0, (byte) 1, 20); - private final LabelSubObject subObj2 = LabelSubObject.of((byte) 0, (byte) 1, 30); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(subObj1, sameAsSubObj1) - .addEqualityGroup(subObj2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlvTest.java deleted file mode 100644 index e25bda02..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the LinkLocalRemoteIdentifiersTlv. - */ -public class LinkLocalRemoteIdentifiersTlvTest { - - private final LinkLocalRemoteIdentifiersTlv tlv1 = LinkLocalRemoteIdentifiersTlv.of(10, 20); - private final LinkLocalRemoteIdentifiersTlv sameAsTlv1 = LinkLocalRemoteIdentifiersTlv.of(10, 20); - private final LinkLocalRemoteIdentifiersTlv tlv2 = LinkLocalRemoteIdentifiersTlv.of(20, 30); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkNameTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkNameTlvTest.java deleted file mode 100644 index 7d9dcb26..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkNameTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for LinkNameTlv. - */ -public class LinkNameTlvTest { - private final byte[] rawValue1 = new byte[] {0x01, 0x00}; - private final byte[] rawValue2 = new byte[] {0x02, 0x00}; - - private final LinkNameTlv tlv1 = new LinkNameTlv(rawValue1, (short) rawValue1.length); - private final LinkNameTlv sameAsTlv1 = LinkNameTlv.of(tlv1.getValue(), tlv1.getLength()); - private final LinkNameTlv tlv2 = new LinkNameTlv(rawValue2, (short) 0); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkProtectionTypeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkProtectionTypeTlvTest.java deleted file mode 100644 index 61928f22..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkProtectionTypeTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the LinkProtectionTypeTlv. - */ -public class LinkProtectionTypeTlvTest { - private final byte rawValue1 = 0x0A; - private final byte rawValue2 = 0x0B; - - private final LinkProtectionTypeTlv tlv1 = new LinkProtectionTypeTlv(rawValue1); - private final LinkProtectionTypeTlv sameAsTlv1 = new LinkProtectionTypeTlv(rawValue1); - private final LinkProtectionTypeTlv tlv2 = new LinkProtectionTypeTlv(rawValue2, (byte) 0); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlvTest.java deleted file mode 100644 index e8b6abcc..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlvTest.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import java.util.LinkedList; - -/** - * Test of the LocalTENodeDescriptorsTlv. - */ -public class LocalTENodeDescriptorsTlvTest { - - private final AutonomousSystemTlv baAutoSysTlvRawValue1 = new AutonomousSystemTlv(1); - private final BGPLSidentifierTlv baBgplsIdRawValue1 = new BGPLSidentifierTlv(1); - - private final AutonomousSystemTlv baAutoSysTlvRawValue2 = new AutonomousSystemTlv(2); - private final BGPLSidentifierTlv baBgplsIdRawValue2 = new BGPLSidentifierTlv(2); - - private final LinkedList<PcepValueType> llNodeDescriptorSubTLVs1 = new LinkedList<PcepValueType>(); - private final boolean a = llNodeDescriptorSubTLVs1.add(baAutoSysTlvRawValue1); - private final boolean b = llNodeDescriptorSubTLVs1.add(baBgplsIdRawValue1); - - private final LinkedList<PcepValueType> llNodeDescriptorSubTLVs2 = new LinkedList<PcepValueType>(); - private final boolean c = llNodeDescriptorSubTLVs2.add(baAutoSysTlvRawValue2); - private final boolean d = llNodeDescriptorSubTLVs2.add(baBgplsIdRawValue2); - - private final LocalTENodeDescriptorsTlv tlv1 = LocalTENodeDescriptorsTlv.of(llNodeDescriptorSubTLVs1); - private final LocalTENodeDescriptorsTlv sameAstlv1 = LocalTENodeDescriptorsTlv.of(llNodeDescriptorSubTLVs1); - private final LocalTENodeDescriptorsTlv tlv2 = LocalTENodeDescriptorsTlv.of(llNodeDescriptorSubTLVs2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAstlv1).addEqualityGroup(tlv2).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlvTest.java deleted file mode 100644 index 5e79e284..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the MPLSProtocolMaskTlv. - */ -public class MPLSProtocolMaskTlvTest { - private final byte rawValue1 = 0x0A; - private final byte rawValue2 = 0x0B; - - private final MPLSProtocolMaskTlv tlv1 = new MPLSProtocolMaskTlv(rawValue1); - private final MPLSProtocolMaskTlv sameAsTlv1 = new MPLSProtocolMaskTlv(rawValue1); - private final MPLSProtocolMaskTlv tlv2 = MPLSProtocolMaskTlv.of(rawValue2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlvTest.java deleted file mode 100644 index 4e022b82..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the MaximumLinkBandwidthTlv. - */ -public class MaximumLinkBandwidthTlvTest { - private final int rawValue1 = 0x0A; - private final int rawValue2 = 0x0B; - - private final MaximumLinkBandwidthTlv tlv1 = new MaximumLinkBandwidthTlv(rawValue1); - private final MaximumLinkBandwidthTlv sameAsTlv1 = new MaximumLinkBandwidthTlv(rawValue1); - private final MaximumLinkBandwidthTlv tlv2 = MaximumLinkBandwidthTlv.of(rawValue2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlvTest.java deleted file mode 100644 index 7b370359..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the MaximumReservableLinkBandwidthTlv. - */ -public class MaximumReservableLinkBandwidthTlvTest { - private final int rawValue1 = 0x0A; - private final int rawValue2 = 0x0B; - - private final MaximumReservableLinkBandwidthTlv tlv1 = new MaximumReservableLinkBandwidthTlv(rawValue1); - private final MaximumReservableLinkBandwidthTlv sameAsTlv1 = new MaximumReservableLinkBandwidthTlv(rawValue1); - private final MaximumReservableLinkBandwidthTlv tlv2 = MaximumReservableLinkBandwidthTlv.of(rawValue2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv4addressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv4addressTlvTest.java deleted file mode 100644 index 39c699bc..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv4addressTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for NexthopIPv4addressTlv. - */ -public class NexthopIPv4addressTlvTest { - - private final NexthopIPv4addressTlv tlv1 = new NexthopIPv4addressTlv(0x0A); - private final NexthopIPv4addressTlv sameAsTlv1 = new NexthopIPv4addressTlv(0x0A); - private final NexthopIPv4addressTlv tlv2 = NexthopIPv4addressTlv.of(0x0B); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv6addressTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv6addressTlvTest.java deleted file mode 100644 index 4621336e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv6addressTlvTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for NexthopIPv6addressTlv. - */ -public class NexthopIPv6addressTlvTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, 0x00, 0x00 }; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, 0x00, 0x00 }; - - private final NexthopIPv6addressTlv tlv1 = NexthopIPv6addressTlv.of(b1); - private final NexthopIPv6addressTlv sameAsTlv1 = NexthopIPv6addressTlv.of(b1); - private final NexthopIPv6addressTlv tlv2 = NexthopIPv6addressTlv.of(b2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlvTest.java deleted file mode 100644 index 906c6526..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlvTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for NexthopUnnumberedIPv4IDTlv. - */ -public class NexthopUnnumberedIPv4IDTlvTest { - - private final NexthopUnnumberedIPv4IDTlv tlv1 = new NexthopUnnumberedIPv4IDTlv(0x0A, 0x0A); - private final NexthopUnnumberedIPv4IDTlv sameAsTlv1 = new NexthopUnnumberedIPv4IDTlv(0x0A, 0x0A); - private final NexthopUnnumberedIPv4IDTlv tlv2 = NexthopUnnumberedIPv4IDTlv.of(0x0B, 0x0B); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeFlagBitsTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeFlagBitsTlvTest.java deleted file mode 100644 index fb90fedb..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeFlagBitsTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the NodeFlagBitsTlv. - */ -public class NodeFlagBitsTlvTest { - private final byte rawValue1 = 0x0A; - private final byte rawValue2 = 0x0B; - - private final NodeFlagBitsTlv tlv1 = new NodeFlagBitsTlv(rawValue1); - private final NodeFlagBitsTlv sameAsTlv1 = new NodeFlagBitsTlv(rawValue1); - private final NodeFlagBitsTlv tlv2 = NodeFlagBitsTlv.of(rawValue2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeNameTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeNameTlvTest.java deleted file mode 100644 index d6d53d6f..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeNameTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the NodeNameTlv. - */ -public class NodeNameTlvTest { - private final byte[] rawValue1 = new byte[] {0x01, 0x02}; - private final byte[] rawValue2 = new byte[] {0x14, 0x15}; - - private final NodeNameTlv tlv1 = new NodeNameTlv(rawValue1, (short) rawValue1.length); - private final NodeNameTlv sameAsTlv1 = NodeNameTlv.of(tlv1.getValue(), tlv1.getLength()); - private final NodeNameTlv tlv2 = new NodeNameTlv(rawValue2, (short) 0); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OSPFareaIDsubTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OSPFareaIDsubTlvTest.java deleted file mode 100644 index 3f741ed6..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OSPFareaIDsubTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the OSPFareaIDsubTlv. - */ -public class OSPFareaIDsubTlvTest { - private final int rawValue1 = 0x0A; - - private final OSPFareaIDsubTlv tlv1 = new OSPFareaIDsubTlv(rawValue1); - private final OSPFareaIDsubTlv tlv2 = OSPFareaIDsubTlv.of(tlv1.getInt()); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlvTest.java deleted file mode 100644 index f437fb57..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the OpaqueLinkAttributeTlv. - */ -public class OpaqueLinkAttributeTlvTest { - private final byte[] rawValue1 = new byte[] {0x01, 0x02}; - private final byte[] rawValue2 = new byte[] {0x14, 0x15}; - - private final OpaqueLinkAttributeTlv tlv1 = new OpaqueLinkAttributeTlv(rawValue1, (short) rawValue1.length); - private final OpaqueLinkAttributeTlv sameAsTlv1 = OpaqueLinkAttributeTlv.of(tlv1.getValue(), tlv1.getLength()); - private final OpaqueLinkAttributeTlv tlv2 = new OpaqueLinkAttributeTlv(rawValue2, (short) 0); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathKeySubObjectTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathKeySubObjectTest.java deleted file mode 100644 index 64cda54e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathKeySubObjectTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the PathKeySubObject. - */ -public class PathKeySubObjectTest { - - private final PathKeySubObject tlv1 = new PathKeySubObject((short) 0x0A, 0x0A); - private final PathKeySubObject sameAsTlv1 = PathKeySubObject.of((short) 0x0A, 0x0A); - private final PathKeySubObject tlv2 = new PathKeySubObject((short) 0x0B, 0x0B); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathSetupTypeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathSetupTypeTlvTest.java deleted file mode 100644 index d82c943e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathSetupTypeTlvTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the PathSetupTypeTlv. - */ -public class PathSetupTypeTlvTest { - - private final PathSetupTypeTlv tlv1 = PathSetupTypeTlv.of(0x0A); - private final PathSetupTypeTlv sameAsTlv1 = PathSetupTypeTlv.of(0x0A); - private final PathSetupTypeTlv tlv2 = PathSetupTypeTlv.of(0x0B); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PceccCapabilityTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PceccCapabilityTlvTest.java deleted file mode 100644 index 30892b18..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PceccCapabilityTlvTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the PceccCapabilityTlv. - */ -public class PceccCapabilityTlvTest { - private final int rawValue1 = 0x0A; - private final int rawValue2 = 0x0B; - - private final PceccCapabilityTlv tlv1 = new PceccCapabilityTlv(rawValue1); - private final PceccCapabilityTlv sameAsTlv1 = new PceccCapabilityTlv(rawValue1); - private final PceccCapabilityTlv tlv2 = PceccCapabilityTlv.of(rawValue2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4AdjacencyTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4AdjacencyTest.java deleted file mode 100644 index 3ebc9a1e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4AdjacencyTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for PcepNaiIpv4Adjacency. - */ -public class PcepNaiIpv4AdjacencyTest { - - private final PcepNaiIpv4Adjacency obj1 = PcepNaiIpv4Adjacency.of(2, 16); - private final PcepNaiIpv4Adjacency sameAsObj1 = PcepNaiIpv4Adjacency.of(2, 16); - private final PcepNaiIpv4Adjacency obj2 = PcepNaiIpv4Adjacency.of(3, 16); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(obj1, sameAsObj1).addEqualityGroup(obj2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeIdTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeIdTest.java deleted file mode 100644 index 5ea5edd6..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeIdTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -public class PcepNaiIpv4NodeIdTest { - - private final PcepNaiIpv4NodeId tlv1 = PcepNaiIpv4NodeId.of(1); - private final PcepNaiIpv4NodeId tlv2 = PcepNaiIpv4NodeId.of(1); - private final PcepNaiIpv4NodeId tlv3 = PcepNaiIpv4NodeId.of(3); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, tlv2) - .addEqualityGroup(tlv3) - .testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6AdjacencyTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6AdjacencyTest.java deleted file mode 100644 index 52c40f94..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6AdjacencyTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -public class PcepNaiIpv6AdjacencyTest { - private final byte[] localIpv6Addr1 = {(byte) 0x01010101 }; - private final byte[] remoteIpv6Addr1 = {(byte) 0x02020202 }; - private final byte[] localIpv6Addr2 = {(byte) 0x01010101 }; - private final byte[] remoteIpv6Addr2 = {(byte) 0x02020202 }; - private final byte[] localIpv6Addr3 = {(byte) 0x05050505 }; - private final byte[] remoteIpv6Addr3 = {(byte) 0x06060606 }; - - private final PcepNaiIpv6Adjacency tlv1 = PcepNaiIpv6Adjacency.of(localIpv6Addr1, remoteIpv6Addr1); - private final PcepNaiIpv6Adjacency tlv2 = PcepNaiIpv6Adjacency.of(localIpv6Addr1, remoteIpv6Addr1); - private final PcepNaiIpv6Adjacency tlv3 = PcepNaiIpv6Adjacency.of(localIpv6Addr3, remoteIpv6Addr3); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeIdTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeIdTest.java deleted file mode 100644 index 29771a0f..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeIdTest.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for PcepNaiIpv6NodeId. - */ -public class PcepNaiIpv6NodeIdTest { - - private final byte[] b1 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x29, 0x00, 0x02, - 0x00, 0x00 }; - private final byte[] b2 = new byte[] {(byte) 0xFE, (byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - (byte) 0xB3, (byte) 0xFF, (byte) 0xFE, 0x1E, (byte) 0x83, 0x30, 0x00, 0x02, - 0x00, 0x00 }; - - private final PcepNaiIpv6NodeId tlv1 = PcepNaiIpv6NodeId.of(b1); - private final PcepNaiIpv6NodeId sameAsTlv1 = PcepNaiIpv6NodeId.of(b1); - private final PcepNaiIpv6NodeId tlv2 = PcepNaiIpv6NodeId.of(b2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4Test.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4Test.java deleted file mode 100644 index 60ae22fd..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4Test.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -public class PcepNaiUnnumberedAdjacencyIpv4Test { - - private final int localNodeId1 = 1; - private final int localInterfaceId1 = 1; - private final int remoteNodeId1 = 1; - private final int remoteInterfaceId1 = 1; - private final PcepNaiUnnumberedAdjacencyIpv4 tlv1 = PcepNaiUnnumberedAdjacencyIpv4.of(localNodeId1, - localInterfaceId1, remoteNodeId1, remoteInterfaceId1); - - private final int localNodeId2 = 1; - private final int localInterfaceId2 = 1; - private final int remoteNodeId2 = 1; - private final int remoteInterfaceId2 = 1; - private final PcepNaiUnnumberedAdjacencyIpv4 tlv2 = PcepNaiUnnumberedAdjacencyIpv4.of(localNodeId2, - localInterfaceId2, remoteNodeId2, remoteInterfaceId2); - - private final int localNodeId3 = 2; - private final int localInterfaceId3 = 2; - private final int remoteNodeId3 = 2; - private final int remoteInterfaceId3 = 2; - - private final PcepNaiUnnumberedAdjacencyIpv4 tlv3 = PcepNaiUnnumberedAdjacencyIpv4.of(localNodeId3, - localInterfaceId3, remoteNodeId3, remoteInterfaceId3); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlvTest.java deleted file mode 100644 index 112e4a4e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlvTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import java.util.LinkedList; - -/** - * Test case for Remote TE Node Descriptors tlv. - */ -public class RemoteTENodeDescriptorsTlvTest { - - private final AutonomousSystemTlv autonomousSystemTlv1 = new AutonomousSystemTlv(10); - private final BGPLSidentifierTlv bGPLSidentifierTlv1 = new BGPLSidentifierTlv(20); - - private final AutonomousSystemTlv autonomousSystemTlv2 = new AutonomousSystemTlv(20); - private final BGPLSidentifierTlv bGPLSidentifierTlv2 = new BGPLSidentifierTlv(30); - - private final LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLV1 = new LinkedList<>(); - private final boolean a = llRemoteTENodeDescriptorSubTLV1.add(autonomousSystemTlv1); - private final boolean b = llRemoteTENodeDescriptorSubTLV1.add(bGPLSidentifierTlv1); - - private final LinkedList<PcepValueType> llRemoteTENodeDescriptorSubTLV2 = new LinkedList<>(); - private final boolean c = llRemoteTENodeDescriptorSubTLV2.add(autonomousSystemTlv2); - private final boolean d = llRemoteTENodeDescriptorSubTLV2.add(bGPLSidentifierTlv2); - - private final RemoteTENodeDescriptorsTlv tlv1 = RemoteTENodeDescriptorsTlv.of(llRemoteTENodeDescriptorSubTLV1); - private final RemoteTENodeDescriptorsTlv sameAsTlv1 = - RemoteTENodeDescriptorsTlv.of(llRemoteTENodeDescriptorSubTLV1); - private final RemoteTENodeDescriptorsTlv tlv2 = RemoteTENodeDescriptorsTlv.of(llRemoteTENodeDescriptorSubTLV2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RouterIDSubTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RouterIDSubTlvTest.java deleted file mode 100644 index 2f9e18a9..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RouterIDSubTlvTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for Router ID Sub tlv. - */ -public class RouterIDSubTlvTest { - - private final byte[] value1 = {1, 2 }; - private final Short length1 = 2; - private final RouterIDSubTlv tlv1 = RouterIDSubTlv.of(value1, length1); - - private final Short length2 = 2; - private final RouterIDSubTlv tlv2 = RouterIDSubTlv.of(value1, length2); - - private final byte[] value3 = {1, 2, 3 }; - private final Short length3 = 3; - private final RouterIDSubTlv tlv3 = RouterIDSubTlv.of(value3, length3); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RoutingUniverseTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RoutingUniverseTlvTest.java deleted file mode 100644 index 18aa2851..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RoutingUniverseTlvTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Equality test for RoutingUniverseTlv. - */ -public class RoutingUniverseTlvTest { - - private final RoutingUniverseTlv tlv1 = RoutingUniverseTlv.of(2); - private final RoutingUniverseTlv tlv2 = RoutingUniverseTlv.of(2); - private final RoutingUniverseTlv tlv3 = RoutingUniverseTlv.of(3); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlvTest.java deleted file mode 100644 index 7c8ec570..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlvTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for Shared Risk Link Group tlv. - */ -public class SharedRiskLinkGroupTlvTest { - - private final int[] raw = {1 }; - private final Short hLength = 2; - private final SharedRiskLinkGroupTlv tlv1 = SharedRiskLinkGroupTlv.of(raw, hLength); - - private final SharedRiskLinkGroupTlv sameAsTlv1 = SharedRiskLinkGroupTlv.of(raw, hLength); - - private final int[] raw2 = {2 }; - private final Short hLength2 = 3; - private final SharedRiskLinkGroupTlv tlv2 = SharedRiskLinkGroupTlv.of(raw2, hLength2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SrEroSubObjectTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SrEroSubObjectTest.java deleted file mode 100644 index d91569b9..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SrEroSubObjectTest.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.pcepio.protocol.PcepNai; - -public class SrEroSubObjectTest { - - private final boolean bFFlag = false; - private final boolean bSFlag = false; - private final boolean bCFlag = false; - private final boolean bMFlag = false; - private final byte st = 1; - private final int sID = 1; - private final PcepNai nai = null; - - private final SrEroSubObject tlv1 = SrEroSubObject.of(st, bFFlag, bSFlag, bCFlag, bMFlag, sID, nai); - - private final boolean bFFlag1 = false; - private final boolean bSFlag1 = false; - private final boolean bCFlag1 = false; - private final boolean bMFlag1 = false; - private final byte st1 = 1; - private final int sID1 = 1; - private final PcepNai nai1 = null; - - private final SrEroSubObject tlv2 = SrEroSubObject.of(st1, bFFlag1, bSFlag1, bCFlag1, bMFlag1, sID1, nai1); - - private final boolean bFFlag2 = true; - private final boolean bSFlag2 = true; - private final boolean bCFlag2 = true; - private final boolean bMFlag2 = true; - private final byte st2 = 2; - private final int sID2 = 2; - private final PcepNai nai2 = null; - - private final SrEroSubObject tlv3 = SrEroSubObject.of(st2, bFFlag2, bSFlag2, bCFlag2, bMFlag2, sID2, nai2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlvTest.java deleted file mode 100644 index d1798fa3..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlvTest.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -public class StatefulIPv4LspIdentidiersTlvTest { - - private final int ipv4IngressAddress = 1; - private final short lspId = 1; - private final short tunnelId = 1; - private final int extendedTunnelId = 1; - private final int ipv4EgressAddress = 1; - - private final StatefulIPv4LspIdentidiersTlv tlv1 = StatefulIPv4LspIdentidiersTlv.of(ipv4IngressAddress, lspId, - tunnelId, extendedTunnelId, ipv4EgressAddress); - - private final int ipv4IngressAddress1 = 1; - private final short lspId1 = 1; - private final short tunnelId1 = 1; - private final int extendedTunnelId1 = 1; - private final int ipv4EgressAddress1 = 1; - - private final StatefulIPv4LspIdentidiersTlv tlv2 = StatefulIPv4LspIdentidiersTlv.of(ipv4IngressAddress1, lspId1, - tunnelId1, extendedTunnelId1, ipv4EgressAddress1); - - private final int ipv4IngressAddress2 = 2; - private final short lspId2 = 2; - private final short tunnelId2 = 2; - private final int extendedTunnelId2 = 2; - private final int ipv4EgressAddress2 = 2; - - private final StatefulIPv4LspIdentidiersTlv tlv3 = StatefulIPv4LspIdentidiersTlv.of(ipv4IngressAddress2, lspId2, - tunnelId2, extendedTunnelId2, ipv4EgressAddress2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspDbVerTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspDbVerTlvTest.java deleted file mode 100644 index 7076bc9e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspDbVerTlvTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for Stateful Lsp Db Ver tlv. - */ -public class StatefulLspDbVerTlvTest { - - private final StatefulLspDbVerTlv tlv1 = StatefulLspDbVerTlv.of(1); - private final StatefulLspDbVerTlv tlv2 = StatefulLspDbVerTlv.of(1); - private final StatefulLspDbVerTlv tlv3 = StatefulLspDbVerTlv.of(2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlvTest.java deleted file mode 100644 index 039108ae..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlvTest.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -public class StatefulLspErrorCodeTlvTest { - - private final StatefulLspErrorCodeTlv tlv1 = StatefulLspErrorCodeTlv.of(1); - private final StatefulLspErrorCodeTlv tlv2 = StatefulLspErrorCodeTlv.of(1); - private final StatefulLspErrorCodeTlv tlv3 = StatefulLspErrorCodeTlv.of(2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlvTest.java deleted file mode 100644 index 8637024c..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlvTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for Stateful Pce Capability tlv. - */ -public class StatefulPceCapabilityTlvTest { - - private final StatefulPceCapabilityTlv tlv1 = StatefulPceCapabilityTlv.of(1); - private final StatefulPceCapabilityTlv tlv2 = StatefulPceCapabilityTlv.of(1); - private final StatefulPceCapabilityTlv tlv3 = StatefulPceCapabilityTlv.of(2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SymbolicPathNameTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SymbolicPathNameTlvTest.java deleted file mode 100644 index 8d458f4e..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SymbolicPathNameTlvTest.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for Symbolic path tlv. - */ -public class SymbolicPathNameTlvTest { - - private final byte[] value1 = {0x41 }; - private final Short length1 = 2; - private final SymbolicPathNameTlv tlv1 = SymbolicPathNameTlv.of(value1, length1); - - private final byte[] value2 = {0x41 }; - private final Short length2 = 2; - private final SymbolicPathNameTlv tlv2 = SymbolicPathNameTlv.of(value1, length2); - - private final byte[] value3 = {0x41, 0x43 }; - private final Short length3 = 3; - private final SymbolicPathNameTlv tlv3 = SymbolicPathNameTlv.of(value3, length3); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TEDefaultMetricTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TEDefaultMetricTlvTest.java deleted file mode 100644 index c46b0af1..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TEDefaultMetricTlvTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for TE Default Metric tlv. - */ -public class TEDefaultMetricTlvTest { - - private final TEDefaultMetricTlv tlv1 = TEDefaultMetricTlv.of(1); - private final TEDefaultMetricTlv tlv2 = TEDefaultMetricTlv.of(1); - private final TEDefaultMetricTlv tlv3 = TEDefaultMetricTlv.of(2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkAttributesTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkAttributesTlvTest.java deleted file mode 100644 index 8504a87c..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkAttributesTlvTest.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import java.util.LinkedList; - -/** - * Test case for TE Link Attribute Tlv. - */ -public class TELinkAttributesTlvTest { - - private final AdministrativeGroupTlv administrativeGroupTlv1 = new AdministrativeGroupTlv(10); - private final MaximumReservableLinkBandwidthTlv maximumReservableLinkBandwidthTlv1 = - new MaximumReservableLinkBandwidthTlv(20); - - private final AdministrativeGroupTlv administrativeGroupTlv2 = new AdministrativeGroupTlv(20); - private final MaximumReservableLinkBandwidthTlv maximumReservableLinkBandwidthTlv2 = - new MaximumReservableLinkBandwidthTlv(30); - - private final LinkedList<PcepValueType> llLinkAttributesSubTLV1 = new LinkedList<>(); - private final boolean a = llLinkAttributesSubTLV1.add(administrativeGroupTlv1); - private final boolean b = llLinkAttributesSubTLV1.add(maximumReservableLinkBandwidthTlv1); - - private final LinkedList<PcepValueType> llLinkAttributesSubTLV2 = new LinkedList<>(); - - private final boolean c = llLinkAttributesSubTLV2.add(administrativeGroupTlv2); - private final boolean d = llLinkAttributesSubTLV2.add(maximumReservableLinkBandwidthTlv2); - - private final TELinkAttributesTlv tlv1 = TELinkAttributesTlv.of(llLinkAttributesSubTLV1); - private final TELinkAttributesTlv sameAsTlv1 = TELinkAttributesTlv.of(llLinkAttributesSubTLV1); - private final TELinkAttributesTlv tlv2 = TELinkAttributesTlv.of(llLinkAttributesSubTLV2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkDescriptorsTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkDescriptorsTlvTest.java deleted file mode 100644 index 4e942097..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkDescriptorsTlvTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import java.util.LinkedList; - -/** - * Test case for TE link descriptors Tlv. - */ -public class TELinkDescriptorsTlvTest { - private final LinkLocalRemoteIdentifiersTlv linkLocalRemoteIdentifiersTlv1 = new - LinkLocalRemoteIdentifiersTlv(10, 10); - private final IPv4InterfaceAddressTlv iPv4InterfaceAddressTlv1 = new IPv4InterfaceAddressTlv(0x01010101); - - private final LinkLocalRemoteIdentifiersTlv linkLocalRemoteIdentifiersTlv2 = new - LinkLocalRemoteIdentifiersTlv(20, 20); - private final IPv4InterfaceAddressTlv iPv4InterfaceAddressTlv2 = new IPv4InterfaceAddressTlv(0x02020202); - - private final LinkedList<PcepValueType> llLinkDescriptorsSubTLVs1 = new LinkedList<>(); - private final boolean a = llLinkDescriptorsSubTLVs1.add(linkLocalRemoteIdentifiersTlv1); - private final boolean b = llLinkDescriptorsSubTLVs1.add(iPv4InterfaceAddressTlv1); - - private final LinkedList<PcepValueType> llLinkDescriptorsSubTLVs2 = new LinkedList<>(); - private final boolean c = llLinkDescriptorsSubTLVs2.add(linkLocalRemoteIdentifiersTlv2); - private final boolean d = llLinkDescriptorsSubTLVs2.add(iPv4InterfaceAddressTlv2); - - private final TELinkDescriptorsTlv tlv1 = TELinkDescriptorsTlv.of(llLinkDescriptorsSubTLVs1); - private final TELinkDescriptorsTlv sameAstlv1 = TELinkDescriptorsTlv.of(llLinkDescriptorsSubTLVs1); - private final TELinkDescriptorsTlv tlv2 = TELinkDescriptorsTlv.of(llLinkDescriptorsSubTLVs2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAstlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TENodeAttributesTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TENodeAttributesTlvTest.java deleted file mode 100644 index 28cf27d4..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TENodeAttributesTlvTest.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import java.util.LinkedList; - -/** - * Test case for TE Node Attribute tlv. - */ -public class TENodeAttributesTlvTest { - - private final NodeFlagBitsTlv nodeFlagBitsTlv1 = new NodeFlagBitsTlv((byte) 10); - private final IPv4TERouterIdOfLocalNodeTlv iPv4TERouterIdOfLocalNodeTlv1 = new - IPv4TERouterIdOfLocalNodeTlv(0x01010101); - - private final NodeFlagBitsTlv nodeFlagBitsTlv2 = new NodeFlagBitsTlv((byte) 20); - private final IPv4TERouterIdOfLocalNodeTlv iPv4TERouterIdOfLocalNodeTlv2 = new - IPv4TERouterIdOfLocalNodeTlv(0x02020202); - - private final LinkedList<PcepValueType> llNodeAttributesSubTLV1 = new LinkedList<>(); - private final boolean a = llNodeAttributesSubTLV1.add(nodeFlagBitsTlv1); - private final boolean b = llNodeAttributesSubTLV1.add(iPv4TERouterIdOfLocalNodeTlv1); - - private final LinkedList<PcepValueType> llNodeAttributesSubTLV2 = new LinkedList<>(); - - private final boolean c = llNodeAttributesSubTLV2.add(nodeFlagBitsTlv2); - private final boolean d = llNodeAttributesSubTLV2.add(iPv4TERouterIdOfLocalNodeTlv2); - - private final TENodeAttributesTlv tlv1 = TENodeAttributesTlv.of(llNodeAttributesSubTLV1); - private final TENodeAttributesTlv sameAsTlv1 = TENodeAttributesTlv.of(llNodeAttributesSubTLV1); - private final TENodeAttributesTlv tlv2 = TENodeAttributesTlv.of(llNodeAttributesSubTLV2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, sameAsTlv1).addEqualityGroup(tlv2).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TedCapabilityTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TedCapabilityTlvTest.java deleted file mode 100644 index 18677ca3..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TedCapabilityTlvTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test case for TED Capability tlv. - */ -public class TedCapabilityTlvTest { - - private final TedCapabilityTlv tlv1 = TedCapabilityTlv.of(1); - private final TedCapabilityTlv tlv2 = TedCapabilityTlv.of(1); - private final TedCapabilityTlv tlv3 = TedCapabilityTlv.of(2); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } -} diff --git a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/UnreservedBandwidthTlvTest.java b/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/UnreservedBandwidthTlvTest.java deleted file mode 100644 index a50fd9f4..00000000 --- a/framework/src/onos/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/UnreservedBandwidthTlvTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.types; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Unit Test case for Unreserved Bandwidth Tlv. - */ -public class UnreservedBandwidthTlvTest { - - // Objects of unreserved bandwidth tlv - private final UnreservedBandwidthTlv tlv1 = UnreservedBandwidthTlv.of(100); - private final UnreservedBandwidthTlv tlv2 = UnreservedBandwidthTlv.of(100); - private final UnreservedBandwidthTlv tlv3 = UnreservedBandwidthTlv.of(200); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(tlv1, tlv2).addEqualityGroup(tlv3).testEquals(); - } - -} diff --git a/framework/src/onos/pcep/pom.xml b/framework/src/onos/pcep/pom.xml deleted file mode 100755 index f0b9f8c3..00000000 --- a/framework/src/onos/pcep/pom.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Copyright 2014 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos</artifactId> - <version>1.4.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-pcep-controller</artifactId> - <packaging>pom</packaging> - - <description>ONOS Pcep Protocol subsystem</description> - - <modules> - <module>api</module> - <module>ctl</module> - <module>pcepio</module> - </modules> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-misc</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-junit</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/pom.xml b/framework/src/onos/pom.xml index 89930f59..78fbcf2d 100644 --- a/framework/src/onos/pom.xml +++ b/framework/src/onos/pom.xml @@ -39,15 +39,15 @@ <description>Open Network Operating System root project</description> <modules> + <module>tools/package/maven-plugin</module> <module>utils</module> <module>core</module> <module>web</module> <module>cli</module> - <module>openflow</module> + <module>protocols</module> + <!-- FIXME move to protocols/ --> <module>ovsdb</module> - <module>netconf</module> - <module>pcep</module> <module>bgp</module> <module>providers</module> @@ -545,7 +545,20 @@ <rerunFailingTestsCount>1</rerunFailingTestsCount> </configuration> </plugin> - + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.10.3</version> + <configuration> + <tags> + <tag> + <name>rsModel</name> + <placement>m</placement> + <head>Json model for REST api:</head> + </tag> + </tags> + </configuration> + </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> @@ -631,8 +644,8 @@ <plugin> <groupId>org.onosproject</groupId> <artifactId>onos-maven-plugin</artifactId> - <version>1.5</version> - <executions> + <version>1.6-SNAPSHOT</version> + <executions> <execution> <id>cfg</id> <phase>generate-resources</phase> diff --git a/framework/src/onos/providers/host/pom.xml b/framework/src/onos/providers/host/pom.xml index e8f32ca1..ddbdbfc5 100644 --- a/framework/src/onos/providers/host/pom.xml +++ b/framework/src/onos/providers/host/pom.xml @@ -29,7 +29,11 @@ <artifactId>onos-host-provider</artifactId> <packaging>bundle</packaging> - <description>ONOS host tracking provider</description> + <properties> + <onos.app.name>org.onosproject.hostprovider</onos.app.name> + </properties> + + <description>ONOS host location provider</description> <dependencies> <dependency> <groupId>org.onosproject</groupId> diff --git a/framework/src/onos/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java b/framework/src/onos/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java index 6cbb623b..566eb0c4 100644 --- a/framework/src/onos/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java +++ b/framework/src/onos/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java @@ -196,16 +196,16 @@ public class HostLocationProviderTest { providerService.clear(); // new host - testProcessor.process(new TestNAPacketContext(DEV4)); + testProcessor.process(new TestNaPacketContext(DEV4)); assertNotNull("new host expected", providerService.added); assertNull("host motion unexpected", providerService.moved); // the host moved to new switch - testProcessor.process(new TestNAPacketContext(DEV5)); + testProcessor.process(new TestNaPacketContext(DEV5)); assertNotNull("host motion expected", providerService.moved); // the host was misheard on a spine - testProcessor.process(new TestNAPacketContext(DEV6)); + testProcessor.process(new TestNaPacketContext(DEV6)); assertNull("host misheard on spine switch", providerService.spine); } @@ -213,7 +213,7 @@ public class HostLocationProviderTest { public void removeHostByDeviceRemove() { provider.modified(CTX_FOR_REMOVE); testProcessor.process(new TestArpPacketContext(DEV1)); - testProcessor.process(new TestNAPacketContext(DEV4)); + testProcessor.process(new TestNaPacketContext(DEV4)); Device device = new DefaultDevice(ProviderId.NONE, deviceId(DEV1), SWITCH, "m", "h", "s", "n", new ChassisId(0L)); @@ -292,8 +292,8 @@ public class HostLocationProviderTest { * When receiving NeighborAdvertisement, updates location and IP. */ @Test - public void testReceiveNA() { - testProcessor.process(new TestNAPacketContext(DEV4)); + public void testReceiveNa() { + testProcessor.process(new TestNaPacketContext(DEV4)); assertNotNull(providerService.added); HostDescription descr = providerService.added; assertThat(descr.location(), is(LOCATION2)); @@ -306,8 +306,8 @@ public class HostLocationProviderTest { * When receiving NeighborSolicitation, updates location and IP. */ @Test - public void testReceiveNS() { - testProcessor.process(new TestNSPacketContext(DEV4)); + public void testReceiveNs() { + testProcessor.process(new TestNsPacketContext(DEV4)); HostDescription descr = providerService.added; assertThat(descr.location(), is(LOCATION2)); assertThat(descr.hwAddress(), is(MAC2)); @@ -319,7 +319,7 @@ public class HostLocationProviderTest { * When receiving RouterAdvertisement, ignores it. */ @Test - public void testReceivesRA() { + public void testReceivesRa() { testProcessor.process(new TestRAPacketContext(DEV4)); assertNull(providerService.added); } @@ -328,7 +328,7 @@ public class HostLocationProviderTest { * When receiving RouterSolicitation, ignores it. */ @Test - public void testReceiveRS() { + public void testReceiveRs() { testProcessor.process(new TestRSPacketContext(DEV4)); assertNull(providerService.added); } @@ -337,8 +337,8 @@ public class HostLocationProviderTest { * When receiving Duplicate Address Detection (DAD), ignores it. */ @Test - public void testReceiveDAD() { - testProcessor.process(new TestDADPacketContext(DEV4)); + public void testReceiveDad() { + testProcessor.process(new TestDadPacketContext(DEV4)); assertNull(providerService.added); } @@ -415,7 +415,7 @@ public class HostLocationProviderTest { public void hostDetected(HostId hostId, HostDescription hostDescription, boolean replaceIps) { if (added == null) { added = hostDescription; - } else if ((moved == null) && !hostDescription.equals(added)) { + } else if ((moved == null) && hostDescription != added) { moved = hostDescription; } else { spine = hostDescription; @@ -575,10 +575,10 @@ public class HostLocationProviderTest { /** * Generates NeighborAdvertisement packet. */ - private class TestNAPacketContext implements PacketContext { + private class TestNaPacketContext implements PacketContext { private final String deviceId; - public TestNAPacketContext(String deviceId) { + public TestNaPacketContext(String deviceId) { this.deviceId = deviceId; } @@ -637,10 +637,10 @@ public class HostLocationProviderTest { /** * Generates NeighborSolicitation packet. */ - private class TestNSPacketContext implements PacketContext { + private class TestNsPacketContext implements PacketContext { private final String deviceId; - public TestNSPacketContext(String deviceId) { + public TestNsPacketContext(String deviceId) { this.deviceId = deviceId; } @@ -699,10 +699,10 @@ public class HostLocationProviderTest { /** * Generates Duplicate Address Detection packet. */ - private class TestDADPacketContext implements PacketContext { + private class TestDadPacketContext implements PacketContext { private final String deviceId; - public TestDADPacketContext(String deviceId) { + public TestDadPacketContext(String deviceId) { this.deviceId = deviceId; } diff --git a/framework/src/onos/providers/lldp/pom.xml b/framework/src/onos/providers/lldp/pom.xml index e47d26c7..7bf92ed2 100644 --- a/framework/src/onos/providers/lldp/pom.xml +++ b/framework/src/onos/providers/lldp/pom.xml @@ -30,7 +30,11 @@ <artifactId>onos-lldp-provider</artifactId> <packaging>bundle</packaging> - <description>ONOS LLDP Link Discovery</description> + <properties> + <onos.app.name>org.onosproject.lldpprovider</onos.app.name> + </properties> + + <description>ONOS LLDP link provider</description> <dependencies> <dependency> diff --git a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/DiscoveryContext.java b/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/DiscoveryContext.java index 0cd19242..a9da92ab 100644 --- a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/DiscoveryContext.java +++ b/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/DiscoveryContext.java @@ -58,7 +58,7 @@ interface DiscoveryContext { * * @return true to emit BDDP */ - boolean useBDDP(); + boolean useBddp(); /** * Touches the link identified by the given key to indicate that it's active. diff --git a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java b/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java deleted file mode 100644 index 98442033..00000000 --- a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java +++ /dev/null @@ -1,637 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.provider.lldp.impl; - -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Maps; -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Modified; -import org.apache.felix.scr.annotations.Property; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.onlab.packet.Ethernet; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.cluster.ClusterService; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.mastership.MastershipEvent; -import org.onosproject.mastership.MastershipListener; -import org.onosproject.mastership.MastershipService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.LinkKey; -import org.onosproject.net.Port; -import org.onosproject.net.config.NetworkConfigRegistry; -import org.onosproject.net.device.DeviceEvent; -import org.onosproject.net.device.DeviceListener; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.link.DefaultLinkDescription; -import org.onosproject.net.link.LinkProvider; -import org.onosproject.net.link.LinkProviderRegistry; -import org.onosproject.net.link.LinkProviderService; -import org.onosproject.net.link.LinkService; -import org.onosproject.net.packet.PacketContext; -import org.onosproject.net.packet.PacketPriority; -import org.onosproject.net.packet.PacketProcessor; -import org.onosproject.net.packet.PacketService; -import org.onosproject.net.provider.AbstractProvider; -import org.onosproject.net.provider.ProviderId; -import org.osgi.service.component.ComponentContext; -import org.slf4j.Logger; - -import java.io.IOException; -import java.util.Dictionary; -import java.util.EnumSet; -import java.util.Map; -import java.util.Optional; -import java.util.Properties; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ScheduledExecutorService; - -import static com.google.common.base.Strings.isNullOrEmpty; -import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; -import static java.util.concurrent.TimeUnit.SECONDS; -import static org.onlab.packet.Ethernet.TYPE_BSN; -import static org.onlab.packet.Ethernet.TYPE_LLDP; -import static org.onlab.util.Tools.get; -import static org.onlab.util.Tools.groupedThreads; -import static org.onosproject.net.Link.Type.DIRECT; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provider which uses LLDP and BDDP packets to detect network infrastructure links. - */ -@Component(immediate = true) -public class LLDPLinkProvider extends AbstractProvider implements LinkProvider { - - private static final String PROVIDER_NAME = "org.onosproject.provider.lldp"; - - private static final String FORMAT = - "Settings: enabled={}, useBDDP={}, probeRate={}, " + - "staleLinkAge={}, lldpSuppression={}"; - - // When a Device/Port has this annotation, do not send out LLDP/BDDP - public static final String NO_LLDP = "no-lldp"; - - - private final Logger log = getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected LinkProviderRegistry providerRegistry; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DeviceService deviceService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected LinkService linkService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected PacketService packetService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected MastershipService masterService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ComponentConfigService cfgService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ClusterService clusterService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected NetworkConfigRegistry cfgRegistry; - - private LinkProviderService providerService; - - private ScheduledExecutorService executor; - - // TODO: Add sanity checking for the configurable params based on the delays - private static final long DEVICE_SYNC_DELAY = 5; - private static final long LINK_PRUNER_DELAY = 3; - - private static final String PROP_ENABLED = "enabled"; - @Property(name = PROP_ENABLED, boolValue = true, - label = "If false, link discovery is disabled") - private boolean enabled = false; - - private static final String PROP_USE_BDDP = "useBDDP"; - @Property(name = PROP_USE_BDDP, boolValue = true, - label = "Use BDDP for link discovery") - private boolean useBDDP = true; - - private static final String PROP_PROBE_RATE = "probeRate"; - private static final int DEFAULT_PROBE_RATE = 3_000; - @Property(name = PROP_PROBE_RATE, intValue = DEFAULT_PROBE_RATE, - label = "LLDP and BDDP probe rate specified in millis") - private int probeRate = DEFAULT_PROBE_RATE; - - private static final String PROP_STALE_LINK_AGE = "staleLinkAge"; - private static final int DEFAULT_STALE_LINK_AGE = 10_000; - @Property(name = PROP_STALE_LINK_AGE, intValue = DEFAULT_STALE_LINK_AGE, - label = "Number of millis beyond which links will be considered stale") - private int staleLinkAge = DEFAULT_STALE_LINK_AGE; - - // FIXME: convert to use network config subsystem instead - private static final String PROP_LLDP_SUPPRESSION = "lldpSuppression"; - private static final String DEFAULT_LLDP_SUPPRESSION_CONFIG = "../config/lldp_suppression.json"; - @Property(name = PROP_LLDP_SUPPRESSION, value = DEFAULT_LLDP_SUPPRESSION_CONFIG, - label = "Path to LLDP suppression configuration file") - private String lldpSuppression = DEFAULT_LLDP_SUPPRESSION_CONFIG; - - private final DiscoveryContext context = new InternalDiscoveryContext(); - private final InternalRoleListener roleListener = new InternalRoleListener(); - private final InternalDeviceListener deviceListener = new InternalDeviceListener(); - private final InternalPacketProcessor packetProcessor = new InternalPacketProcessor(); - - // Device link discovery helpers. - protected final Map<DeviceId, LinkDiscovery> discoverers = new ConcurrentHashMap<>(); - - // Most recent time a tracked link was seen; links are tracked if their - // destination connection point is mastered by this controller instance. - private final Map<LinkKey, Long> linkTimes = Maps.newConcurrentMap(); - - private SuppressionRules rules; - private ApplicationId appId; - - /** - * Creates an OpenFlow link provider. - */ - public LLDPLinkProvider() { - super(new ProviderId("lldp", PROVIDER_NAME)); - } - - @Activate - public void activate(ComponentContext context) { - cfgService.registerProperties(getClass()); - appId = coreService.registerApplication(PROVIDER_NAME); - modified(context); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - cfgService.unregisterProperties(getClass(), false); - disable(); - log.info("Stopped"); - } - - @Modified - public void modified(ComponentContext context) { - Dictionary<?, ?> properties = context != null ? context.getProperties() : new Properties(); - - boolean newEnabled, newUseBddp; - int newProbeRate, newStaleLinkAge; - String newLldpSuppression; - try { - String s = get(properties, PROP_ENABLED); - newEnabled = isNullOrEmpty(s) || Boolean.parseBoolean(s.trim()); - - s = get(properties, PROP_USE_BDDP); - newUseBddp = isNullOrEmpty(s) || Boolean.parseBoolean(s.trim()); - - s = get(properties, PROP_PROBE_RATE); - newProbeRate = isNullOrEmpty(s) ? probeRate : Integer.parseInt(s.trim()); - - s = get(properties, PROP_STALE_LINK_AGE); - newStaleLinkAge = isNullOrEmpty(s) ? staleLinkAge : Integer.parseInt(s.trim()); - - s = get(properties, PROP_LLDP_SUPPRESSION); - newLldpSuppression = isNullOrEmpty(s) ? DEFAULT_LLDP_SUPPRESSION_CONFIG : s; - - } catch (NumberFormatException e) { - log.warn("Component configuration had invalid values", e); - newEnabled = enabled; - newUseBddp = useBDDP; - newProbeRate = probeRate; - newStaleLinkAge = staleLinkAge; - newLldpSuppression = lldpSuppression; - } - - boolean wasEnabled = enabled; - - enabled = newEnabled; - useBDDP = newUseBddp; - probeRate = newProbeRate; - staleLinkAge = newStaleLinkAge; - lldpSuppression = newLldpSuppression; - - if (!wasEnabled && enabled) { - enable(); - } else if (wasEnabled && !enabled) { - disable(); - } else { - // reflect changes in suppression rules to discovery helpers - // FIXME: After migrating to Network Configuration Subsystem, - // it should be possible to update only changed subset - if (enabled) { - // update all discovery helper state - loadDevices(); - } - } - - log.info(FORMAT, enabled, useBDDP, probeRate, staleLinkAge, lldpSuppression); - } - - /** - * Enables link discovery processing. - */ - private void enable() { - providerService = providerRegistry.register(this); - masterService.addListener(roleListener); - deviceService.addListener(deviceListener); - packetService.addProcessor(packetProcessor, PacketProcessor.advisor(0)); - - loadSuppressionRules(); - loadDevices(); - - executor = newSingleThreadScheduledExecutor(groupedThreads("onos/link", "discovery-%d")); - executor.scheduleAtFixedRate(new SyncDeviceInfoTask(), - DEVICE_SYNC_DELAY, DEVICE_SYNC_DELAY, SECONDS); - executor.scheduleAtFixedRate(new LinkPrunerTask(), - LINK_PRUNER_DELAY, LINK_PRUNER_DELAY, SECONDS); - - requestIntercepts(); - } - - /** - * Disables link discovery processing. - */ - private void disable() { - withdrawIntercepts(); - - providerRegistry.unregister(this); - masterService.removeListener(roleListener); - deviceService.removeListener(deviceListener); - packetService.removeProcessor(packetProcessor); - - if (executor != null) { - executor.shutdownNow(); - } - discoverers.values().forEach(LinkDiscovery::stop); - discoverers.clear(); - - providerService = null; - } - - /** - * Loads available devices and registers their ports to be probed. - */ - private void loadDevices() { - deviceService.getAvailableDevices() - .forEach(d -> updateDevice(d) - .ifPresent(ld -> updatePorts(ld, d.id()))); - } - - /** - * Updates discovery helper for specified device. - * - * Adds and starts a discovery helper for specified device if enabled, - * calls {@link #removeDevice(DeviceId)} otherwise. - * - * @param device device to add - * @return discovery helper if discovery is enabled for the device - */ - private Optional<LinkDiscovery> updateDevice(Device device) { - if (rules.isSuppressed(device)) { - log.trace("LinkDiscovery from {} disabled by configuration", device.id()); - removeDevice(device.id()); - return Optional.empty(); - } - LinkDiscovery ld = discoverers.computeIfAbsent(device.id(), - did -> new LinkDiscovery(device, context)); - if (ld.isStopped()) { - ld.start(); - } - return Optional.of(ld); - } - - /** - * Removes after stopping discovery helper for specified device. - * @param deviceId device to remove - */ - private void removeDevice(final DeviceId deviceId) { - discoverers.computeIfPresent(deviceId, (did, ld) -> { - ld.stop(); - providerService.linksVanished(deviceId); - return null; - }); - - } - - /** - * Updates ports of the specified device to the specified discovery helper. - */ - private void updatePorts(LinkDiscovery discoverer, DeviceId deviceId) { - deviceService.getPorts(deviceId).forEach(p -> updatePort(discoverer, p)); - } - - /** - * Updates discovery helper state of the specified port. - * - * Adds a port to the discovery helper if up and discovery is enabled, - * or calls {@link #removePort(Port)} otherwise. - */ - private void updatePort(LinkDiscovery discoverer, Port port) { - if (rules.isSuppressed(port)) { - log.trace("LinkDiscovery from {} disabled by configuration", port); - removePort(port); - return; - } - - // check if enabled and turn off discovery? - if (!port.isEnabled()) { - removePort(port); - return; - } - - if (!port.number().isLogical()) { - discoverer.addPort(port); - } - } - - /** - * Removes a port from the specified discovery helper. - * @param port the port - */ - private void removePort(Port port) { - if (port.element() instanceof Device) { - Device d = (Device) port.element(); - LinkDiscovery ld = discoverers.get(d.id()); - if (ld != null) { - ld.removePort(port.number()); - } - - ConnectPoint point = new ConnectPoint(d.id(), port.number()); - providerService.linksVanished(point); - } else { - log.warn("Attempted to remove non-Device port", port); - } - } - - /** - * Loads LLDP suppression rules. - */ - private void loadSuppressionRules() { - // FIXME: convert to use network configuration - SuppressionRulesStore store = new SuppressionRulesStore(lldpSuppression); - try { - log.info("Reading suppression rules from {}", lldpSuppression); - rules = store.read(); - } catch (IOException e) { - log.info("Failed to load {}, using built-in rules", lldpSuppression); - // default rule to suppress ROADM to maintain compatibility - rules = new SuppressionRules(ImmutableSet.of(), - EnumSet.of(Device.Type.ROADM), - ImmutableMap.of(NO_LLDP, SuppressionRules.ANY_VALUE)); - } - - // should refresh discoverers when we need dynamic reconfiguration - } - - /** - * Requests packet intercepts. - */ - private void requestIntercepts() { - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.matchEthType(TYPE_LLDP); - packetService.requestPackets(selector.build(), PacketPriority.CONTROL, appId); - - selector.matchEthType(TYPE_BSN); - if (useBDDP) { - packetService.requestPackets(selector.build(), PacketPriority.CONTROL, appId); - } else { - packetService.cancelPackets(selector.build(), PacketPriority.CONTROL, appId); - } - } - - /** - * Withdraws packet intercepts. - */ - private void withdrawIntercepts() { - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.matchEthType(TYPE_LLDP); - packetService.cancelPackets(selector.build(), PacketPriority.CONTROL, appId); - selector.matchEthType(TYPE_BSN); - packetService.cancelPackets(selector.build(), PacketPriority.CONTROL, appId); - } - - /** - * Processes device mastership role changes. - */ - private class InternalRoleListener implements MastershipListener { - @Override - public void event(MastershipEvent event) { - if (MastershipEvent.Type.BACKUPS_CHANGED.equals(event.type())) { - // only need new master events - return; - } - - DeviceId deviceId = event.subject(); - Device device = deviceService.getDevice(deviceId); - if (device == null) { - log.debug("Device {} doesn't exist, or isn't there yet", deviceId); - return; - } - if (clusterService.getLocalNode().id().equals(event.roleInfo().master())) { - updateDevice(device).ifPresent(ld -> updatePorts(ld, device.id())); - } - } - - } - - /** - * Processes device events. - */ - private class InternalDeviceListener implements DeviceListener { - @Override - public void event(DeviceEvent event) { - Device device = event.subject(); - Port port = event.port(); - if (device == null) { - log.error("Device is null."); - return; - } - log.trace("{} {} {}", event.type(), event.subject(), event); - final DeviceId deviceId = device.id(); - switch (event.type()) { - case DEVICE_ADDED: - case DEVICE_UPDATED: - updateDevice(device).ifPresent(ld -> updatePorts(ld, deviceId)); - break; - case PORT_ADDED: - case PORT_UPDATED: - if (port.isEnabled()) { - updateDevice(device).ifPresent(ld -> updatePort(ld, port)); - } else { - log.debug("Port down {}", port); - removePort(port); - } - break; - case PORT_REMOVED: - log.debug("Port removed {}", port); - removePort(port); - break; - case DEVICE_REMOVED: - case DEVICE_SUSPENDED: - log.debug("Device removed {}", deviceId); - removeDevice(deviceId); - break; - case DEVICE_AVAILABILITY_CHANGED: - if (deviceService.isAvailable(deviceId)) { - log.debug("Device up {}", deviceId); - updateDevice(device); - } else { - log.debug("Device down {}", deviceId); - removeDevice(deviceId); - } - break; - case PORT_STATS_UPDATED: - break; - default: - log.debug("Unknown event {}", event); - } - } - } - - /** - * Processes incoming packets. - */ - private class InternalPacketProcessor implements PacketProcessor { - @Override - public void process(PacketContext context) { - if (context == null || context.isHandled()) { - return; - } - - Ethernet eth = context.inPacket().parsed(); - if (eth == null || (eth.getEtherType() != TYPE_LLDP && eth.getEtherType() != TYPE_BSN)) { - return; - } - - LinkDiscovery ld = discoverers.get(context.inPacket().receivedFrom().deviceId()); - if (ld == null) { - return; - } - - if (ld.handleLLDP(context)) { - context.block(); - } - } - } - - /** - * Auxiliary task to keep device ports up to date. - */ - private final class SyncDeviceInfoTask implements Runnable { - @Override - public void run() { - if (Thread.currentThread().isInterrupted()) { - log.info("Interrupted, quitting"); - return; - } - // check what deviceService sees, to see if we are missing anything - try { - loadDevices(); - } catch (Exception e) { - // Catch all exceptions to avoid task being suppressed - log.error("Exception thrown during synchronization process", e); - } - } - } - - /** - * Auxiliary task for pruning stale links. - */ - private class LinkPrunerTask implements Runnable { - @Override - public void run() { - if (Thread.currentThread().isInterrupted()) { - log.info("Interrupted, quitting"); - return; - } - - try { - // TODO: There is still a slight possibility of mastership - // change occurring right with link going stale. This will - // result in the stale link not being pruned. - Maps.filterEntries(linkTimes, e -> { - if (!masterService.isLocalMaster(e.getKey().dst().deviceId())) { - return true; - } - if (isStale(e.getValue())) { - providerService.linkVanished(new DefaultLinkDescription(e.getKey().src(), - e.getKey().dst(), - DIRECT)); - return true; - } - return false; - }).clear(); - - } catch (Exception e) { - // Catch all exceptions to avoid task being suppressed - log.error("Exception thrown during link pruning process", e); - } - } - - private boolean isStale(long lastSeen) { - return lastSeen < System.currentTimeMillis() - staleLinkAge; - } - } - - /** - * Provides processing context for the device link discovery helpers. - */ - private class InternalDiscoveryContext implements DiscoveryContext { - @Override - public MastershipService mastershipService() { - return masterService; - } - - @Override - public LinkProviderService providerService() { - return providerService; - } - - @Override - public PacketService packetService() { - return packetService; - } - - @Override - public long probeRate() { - return probeRate; - } - - @Override - public boolean useBDDP() { - return useBDDP; - } - - @Override - public void touchLink(LinkKey key) { - linkTimes.put(key, System.currentTimeMillis()); - } - } - -} diff --git a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LinkDiscovery.java b/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LinkDiscovery.java index 7dc9aed0..4b962ae5 100644 --- a/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LinkDiscovery.java +++ b/framework/src/onos/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LinkDiscovery.java @@ -155,7 +155,7 @@ class LinkDiscovery implements TimerTask { * @param packetContext packet context * @return true if handled */ - boolean handleLLDP(PacketContext packetContext) { + boolean handleLldp(PacketContext packetContext) { Ethernet eth = packetContext.inPacket().parsed(); if (eth == null) { return false; @@ -216,7 +216,7 @@ class LinkDiscovery implements TimerTask { * @param port the port * @return Packet_out message with LLDP data */ - private OutboundPacket createOutBoundLLDP(Long port) { + private OutboundPacket createOutBoundLldp(Long port) { if (port == null) { return null; } @@ -233,7 +233,7 @@ class LinkDiscovery implements TimerTask { * @param port the port * @return Packet_out message with LLDP data */ - private OutboundPacket createOutBoundBDDP(Long port) { + private OutboundPacket createOutBoundBddp(Long port) { if (port == null) { return null; } @@ -246,10 +246,10 @@ class LinkDiscovery implements TimerTask { private void sendProbes(Long portNumber) { log.trace("Sending probes out to {}@{}", portNumber, device.id()); - OutboundPacket pkt = createOutBoundLLDP(portNumber); + OutboundPacket pkt = createOutBoundLldp(portNumber); context.packetService().emit(pkt); - if (context.useBDDP()) { - OutboundPacket bpkt = createOutBoundBDDP(portNumber); + if (context.useBddp()) { + OutboundPacket bpkt = createOutBoundBddp(portNumber); context.packetService().emit(bpkt); } } diff --git a/framework/src/onos/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java b/framework/src/onos/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java deleted file mode 100644 index 6070b857..00000000 --- a/framework/src/onos/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LLDPLinkProviderTest.java +++ /dev/null @@ -1,630 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.provider.lldp.impl; - -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.ChassisId; -import org.onlab.packet.Ethernet; -import org.onlab.packet.ONOSLLDP; -import org.onosproject.cfg.ComponentConfigAdapter; -import org.onosproject.cluster.NodeId; -import org.onosproject.cluster.RoleInfo; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.core.DefaultApplicationId; -import org.onosproject.mastership.MastershipListener; -import org.onosproject.mastership.MastershipService; -import org.onosproject.net.Annotations; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.DefaultDevice; -import org.onosproject.net.DefaultPort; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.device.DeviceEvent; -import org.onosproject.net.device.DeviceListener; -import org.onosproject.net.device.DeviceServiceAdapter; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.link.LinkDescription; -import org.onosproject.net.link.LinkProvider; -import org.onosproject.net.link.LinkProviderRegistry; -import org.onosproject.net.link.LinkProviderService; -import org.onosproject.net.link.LinkServiceAdapter; -import org.onosproject.net.packet.DefaultInboundPacket; -import org.onosproject.net.packet.InboundPacket; -import org.onosproject.net.packet.OutboundPacket; -import org.onosproject.net.packet.PacketContext; -import org.onosproject.net.packet.PacketProcessor; -import org.onosproject.net.packet.PacketServiceAdapter; -import org.onosproject.net.provider.AbstractProviderService; -import org.onosproject.net.provider.ProviderId; - -import java.nio.ByteBuffer; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.CompletableFuture; - -import static org.easymock.EasyMock.*; -import static org.junit.Assert.*; - -public class LLDPLinkProviderTest { - - private static final DeviceId DID1 = DeviceId.deviceId("of:0000000000000001"); - private static final DeviceId DID2 = DeviceId.deviceId("of:0000000000000002"); - private static final DeviceId DID3 = DeviceId.deviceId("of:0000000000000003"); - - private static Port pd1; - private static Port pd2; - private static Port pd3; - private static Port pd4; - - private final LLDPLinkProvider provider = new LLDPLinkProvider(); - private final TestLinkRegistry linkRegistry = new TestLinkRegistry(); - private final TestLinkService linkService = new TestLinkService(); - private final TestPacketService packetService = new TestPacketService(); - private final TestDeviceService deviceService = new TestDeviceService(); - private final TestMasterShipService masterService = new TestMasterShipService(); - - private CoreService coreService; - private TestLinkProviderService providerService; - - private PacketProcessor testProcessor; - private DeviceListener deviceListener; - - private ApplicationId appId = - new DefaultApplicationId(100, "org.onosproject.provider.lldp"); - - @Before - public void setUp() { - coreService = createMock(CoreService.class); - expect(coreService.registerApplication(appId.name())) - .andReturn(appId).anyTimes(); - replay(coreService); - - provider.cfgService = new ComponentConfigAdapter(); - provider.coreService = coreService; - - provider.deviceService = deviceService; - provider.linkService = linkService; - provider.packetService = packetService; - provider.providerRegistry = linkRegistry; - provider.masterService = masterService; - - provider.activate(null); - } - - @Test - public void basics() { - assertNotNull("registration expected", providerService); - assertEquals("incorrect provider", provider, providerService.provider()); - } - - @Test - public void switchAdd() { - DeviceEvent de = deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1); - deviceListener.event(de); - - assertFalse("Device not added", provider.discoverers.isEmpty()); - } - - @Test - public void switchRemove() { - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_REMOVED, DID1)); - - final LinkDiscovery linkDiscovery = provider.discoverers.get(DID1); - if (linkDiscovery != null) { - // If LinkDiscovery helper is there after DEVICE_REMOVED, - // it should be stopped - assertTrue("Discoverer is not stopped", linkDiscovery.isStopped()); - } - assertTrue("Device is not gone.", vanishedDpid(DID1)); - } - - /** - * Checks that links on a reconfigured switch are properly removed. - */ - @Test - public void switchSuppressed() { - // add device to stub DeviceService - deviceService.putDevice(device(DID3)); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID3)); - - assertFalse("Device not added", provider.discoverers.isEmpty()); - - // update device in stub DeviceService with suppression config - deviceService.putDevice(device(DID3, DefaultAnnotations.builder() - .set(LLDPLinkProvider.NO_LLDP, "true") - .build())); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_UPDATED, DID3)); - - assertTrue("Links on suppressed Device was expected to vanish.", vanishedDpid(DID3)); - } - - @Test - public void portUp() { - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID1, port(DID1, 3, true))); - - assertTrue("Port not added to discoverer", - provider.discoverers.get(DID1).containsPort(3L)); - } - - @Test - public void portDown() { - - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID1, port(DID1, 1, false))); - - assertFalse("Port added to discoverer", - provider.discoverers.get(DID1).containsPort(1L)); - assertTrue("Port is not gone.", vanishedPort(1L)); - } - - @Test - public void portRemoved() { - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID1, port(DID1, 3, true))); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_REMOVED, DID1, port(DID1, 3, true))); - - assertTrue("Port is not gone.", vanishedPort(3L)); - assertFalse("Port was not removed from discoverer", - provider.discoverers.get(DID1).containsPort(3L)); - } - - /** - * Checks that discovery on reconfigured switch are properly restarted. - */ - @Test - public void portSuppressedByDeviceConfig() { - - /// When Device is configured with suppression:ON, Port also is same - - // add device in stub DeviceService with suppression configured - deviceService.putDevice(device(DID3, DefaultAnnotations.builder() - .set(LLDPLinkProvider.NO_LLDP, "true") - .build())); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID3)); - - // non-suppressed port added to suppressed device - final long portno3 = 3L; - deviceService.putPorts(DID3, port(DID3, portno3, true)); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID3, port(DID3, portno3, true))); - - // discovery on device is expected to be stopped - LinkDiscovery linkDiscovery = provider.discoverers.get(DID3); - if (linkDiscovery != null) { - assertTrue("Discovery expected to be stopped", linkDiscovery.isStopped()); - } - - /// When Device is reconfigured without suppression:OFF, - /// Port should be included for discovery - - // update device in stub DeviceService without suppression configured - deviceService.putDevice(device(DID3)); - // update the Port in stub DeviceService. (Port has reference to Device) - deviceService.putPorts(DID3, port(DID3, portno3, true)); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_UPDATED, DID3)); - - // discovery should come back on - assertFalse("Discoverer is expected to start", provider.discoverers.get(DID3).isStopped()); - assertTrue("Discoverer should contain the port there", provider.discoverers.get(DID3).containsPort(portno3)); - } - - /** - * Checks that discovery on reconfigured port are properly restarted. - */ - @Test - public void portSuppressedByPortConfig() { - // add device in stub DeviceService without suppression configured - deviceService.putDevice(device(DID3)); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID3)); - - // suppressed port added to non-suppressed device - final long portno3 = 3L; - final Port port3 = port(DID3, portno3, true, - DefaultAnnotations.builder() - .set(LLDPLinkProvider.NO_LLDP, "true") - .build()); - deviceService.putPorts(DID3, port3); - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID3, port3)); - - // discovery helper should be there turned on - assertFalse("Discoverer is expected to start", provider.discoverers.get(DID3).isStopped()); - assertFalse("Discoverer should not contain the port there", - provider.discoverers.get(DID3).containsPort(portno3)); - } - - @Test - public void portUnknown() { - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - // Note: DID3 hasn't been added to TestDeviceService, but only port is added - deviceListener.event(portEvent(DeviceEvent.Type.PORT_ADDED, DID3, port(DID3, 1, false))); - - - assertNull("DeviceId exists", - provider.discoverers.get(DID3)); - } - - @Test - public void unknownPktCtx() { - - // Note: DID3 hasn't been added to TestDeviceService - PacketContext pktCtx = new TestPacketContext(device(DID3)); - - testProcessor.process(pktCtx); - assertFalse("Context should still be free", pktCtx.isHandled()); - } - - @Test - public void knownPktCtx() { - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID1)); - deviceListener.event(deviceEvent(DeviceEvent.Type.DEVICE_ADDED, DID2)); - PacketContext pktCtx = new TestPacketContext(deviceService.getDevice(DID2)); - - - testProcessor.process(pktCtx); - - assertTrue("Link not detected", detectedLink(DID1, DID2)); - - } - - - @After - public void tearDown() { - provider.deactivate(); - provider.coreService = null; - provider.providerRegistry = null; - provider.deviceService = null; - provider.packetService = null; - } - - private DeviceEvent deviceEvent(DeviceEvent.Type type, DeviceId did) { - return new DeviceEvent(type, deviceService.getDevice(did)); - - } - - private DefaultDevice device(DeviceId did) { - return new DefaultDevice(ProviderId.NONE, did, Device.Type.SWITCH, - "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId()); - } - - private DefaultDevice device(DeviceId did, Annotations annotations) { - return new DefaultDevice(ProviderId.NONE, did, Device.Type.SWITCH, - "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId(), annotations); - } - - @SuppressWarnings(value = { "unused" }) - private DeviceEvent portEvent(DeviceEvent.Type type, DeviceId did, PortNumber port) { - return new DeviceEvent(type, deviceService.getDevice(did), - deviceService.getPort(did, port)); - } - - private DeviceEvent portEvent(DeviceEvent.Type type, DeviceId did, Port port) { - return new DeviceEvent(type, deviceService.getDevice(did), port); - } - - private Port port(DeviceId did, long port, boolean enabled) { - return new DefaultPort(deviceService.getDevice(did), - PortNumber.portNumber(port), enabled); - } - - private Port port(DeviceId did, long port, boolean enabled, Annotations annotations) { - return new DefaultPort(deviceService.getDevice(did), - PortNumber.portNumber(port), enabled, annotations); - } - - private boolean vanishedDpid(DeviceId... dids) { - for (int i = 0; i < dids.length; i++) { - if (!providerService.vanishedDpid.contains(dids[i])) { - return false; - } - } - return true; - } - - private boolean vanishedPort(Long... ports) { - for (int i = 0; i < ports.length; i++) { - if (!providerService.vanishedPort.contains(ports[i])) { - return false; - } - } - return true; - } - - private boolean detectedLink(DeviceId src, DeviceId dst) { - for (DeviceId key : providerService.discoveredLinks.keySet()) { - if (key.equals(src)) { - return providerService.discoveredLinks.get(src).equals(dst); - } - } - return false; - } - - - private class TestLinkRegistry implements LinkProviderRegistry { - - @Override - public LinkProviderService register(LinkProvider provider) { - providerService = new TestLinkProviderService(provider); - return providerService; - } - - @Override - public void unregister(LinkProvider provider) { - } - - @Override - public Set<ProviderId> getProviders() { - return null; - } - - } - - private class TestLinkProviderService - extends AbstractProviderService<LinkProvider> - implements LinkProviderService { - - List<DeviceId> vanishedDpid = Lists.newLinkedList(); - List<Long> vanishedPort = Lists.newLinkedList(); - Map<DeviceId, DeviceId> discoveredLinks = Maps.newHashMap(); - - protected TestLinkProviderService(LinkProvider provider) { - super(provider); - } - - @Override - public void linkDetected(LinkDescription linkDescription) { - DeviceId sDid = linkDescription.src().deviceId(); - DeviceId dDid = linkDescription.dst().deviceId(); - discoveredLinks.put(sDid, dDid); - } - - @Override - public void linkVanished(LinkDescription linkDescription) { - } - - @Override - public void linksVanished(ConnectPoint connectPoint) { - vanishedPort.add(connectPoint.port().toLong()); - - } - - @Override - public void linksVanished(DeviceId deviceId) { - vanishedDpid.add(deviceId); - } - - - } - - - - private class TestPacketContext implements PacketContext { - - protected Device device; - protected boolean blocked = false; - - public TestPacketContext(Device dev) { - device = dev; - } - - @Override - public long time() { - return 0; - } - - @Override - public InboundPacket inPacket() { - ONOSLLDP lldp = new ONOSLLDP(); - lldp.setChassisId(device.chassisId()); - lldp.setPortId((int) pd1.number().toLong()); - lldp.setDevice(deviceService.getDevice(DID1).id().toString()); - - - Ethernet ethPacket = new Ethernet(); - ethPacket.setEtherType(Ethernet.TYPE_LLDP); - ethPacket.setDestinationMACAddress(ONOSLLDP.LLDP_NICIRA); - ethPacket.setPayload(lldp); - ethPacket.setPad(true); - - - - ethPacket.setSourceMACAddress("DE:AD:BE:EF:BA:11"); - - ConnectPoint cp = new ConnectPoint(device.id(), pd3.number()); - - return new DefaultInboundPacket(cp, ethPacket, - ByteBuffer.wrap(ethPacket.serialize())); - - } - - @Override - public OutboundPacket outPacket() { - return null; - } - - @Override - public TrafficTreatment.Builder treatmentBuilder() { - return null; - } - - @Override - public void send() { - - } - - @Override - public boolean block() { - blocked = true; - return blocked; - } - - @Override - public boolean isHandled() { - return blocked; - } - - } - - private class TestPacketService extends PacketServiceAdapter { - @Override - public void addProcessor(PacketProcessor processor, int priority) { - testProcessor = processor; - } - } - - private class TestDeviceService extends DeviceServiceAdapter { - - private final Map<DeviceId, Device> devices = new HashMap<>(); - private final ArrayListMultimap<DeviceId, Port> ports = - ArrayListMultimap.create(); - public TestDeviceService() { - Device d1 = new DefaultDevice(ProviderId.NONE, DID1, Device.Type.SWITCH, - "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId()); - Device d2 = new DefaultDevice(ProviderId.NONE, DID2, Device.Type.SWITCH, - "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId()); - devices.put(DID1, d1); - devices.put(DID2, d2); - pd1 = new DefaultPort(d1, PortNumber.portNumber(1), true); - pd2 = new DefaultPort(d1, PortNumber.portNumber(2), true); - pd3 = new DefaultPort(d2, PortNumber.portNumber(1), true); - pd4 = new DefaultPort(d2, PortNumber.portNumber(2), true); - - ports.putAll(DID1, Lists.newArrayList(pd1, pd2)); - ports.putAll(DID2, Lists.newArrayList(pd3, pd4)); - } - - private void putDevice(Device device) { - DeviceId deviceId = device.id(); - devices.put(deviceId, device); - } - - private void putPorts(DeviceId did, Port...ports) { - this.ports.putAll(did, Lists.newArrayList(ports)); - } - - @Override - public int getDeviceCount() { - return devices.values().size(); - } - - @Override - public Iterable<Device> getDevices() { - return ImmutableList.copyOf(devices.values()); - } - - @Override - public Device getDevice(DeviceId deviceId) { - return devices.get(deviceId); - } - - @Override - public MastershipRole getRole(DeviceId deviceId) { - return MastershipRole.MASTER; - } - - @Override - public List<Port> getPorts(DeviceId deviceId) { - return ports.get(deviceId); - } - - @Override - public Port getPort(DeviceId deviceId, PortNumber portNumber) { - for (Port p : ports.get(deviceId)) { - if (p.number().equals(portNumber)) { - return p; - } - } - return null; - } - - @Override - public boolean isAvailable(DeviceId deviceId) { - return true; - } - - @Override - public void addListener(DeviceListener listener) { - deviceListener = listener; - - } - - @Override - public void removeListener(DeviceListener listener) { - - } - } - - private final class TestMasterShipService implements MastershipService { - - @Override - public MastershipRole getLocalRole(DeviceId deviceId) { - return MastershipRole.MASTER; - } - - @Override - public CompletableFuture<MastershipRole> requestRoleFor(DeviceId deviceId) { - return CompletableFuture.completedFuture(null); - } - - @Override - public CompletableFuture<Void> relinquishMastership(DeviceId deviceId) { - return null; - } - - @Override - public NodeId getMasterFor(DeviceId deviceId) { - return null; - } - - @Override - public Set<DeviceId> getDevicesOf(NodeId nodeId) { - return null; - } - - @Override - public void addListener(MastershipListener listener) { - - } - - @Override - public void removeListener(MastershipListener listener) { - - } - - @Override - public RoleInfo getNodesFor(DeviceId deviceId) { - return new RoleInfo(new NodeId("foo"), Collections.<NodeId>emptyList()); - } - } - - - private class TestLinkService extends LinkServiceAdapter { - } -} diff --git a/framework/src/onos/providers/netconf/app/app.xml b/framework/src/onos/providers/netconf/app/app.xml index f2d47627..d920d240 100644 --- a/framework/src/onos/providers/netconf/app/app.xml +++ b/framework/src/onos/providers/netconf/app/app.xml @@ -19,6 +19,13 @@ features="${project.artifactId}"> <description>${project.description}</description> + <artifact>mvn:${project.groupId}/onos-netconf-rfc/${project.version}</artifact> + <artifact>mvn:${project.groupId}/onos-netconf-api/${project.version}</artifact> + <artifact>mvn:${project.groupId}/onos-netconf-ctl/${project.version}</artifact> + <artifact>mvn:${project.groupId}/onos-drivers/${project.version}</artifact> + <artifact>mvn:${project.groupId}/onos-netconf-provider-device/${project.version}</artifact> + + <!--<artifact>mvn:${project.groupId}/onos-netconf-provider-device/${project.version}</artifact>--> <!-- Question: should there be the jnc stuff here? Or is it just for testing --> </app> diff --git a/framework/src/onos/providers/netconf/app/features.xml b/framework/src/onos/providers/netconf/app/features.xml index bc7491e6..ef0fb738 100644 --- a/framework/src/onos/providers/netconf/app/features.xml +++ b/framework/src/onos/providers/netconf/app/features.xml @@ -20,6 +20,9 @@ description="${project.description}"> <feature>onos-api</feature> <bundle>mvn:io.netty/netty/3.9.2.Final</bundle> + <bundle>mvn:${project.groupId}/onos-netconf-api/${project.version}</bundle> + <bundle>mvn:${project.groupId}/onos-netconf-ctl/${project.version}</bundle> + <bundle>mvn:${project.groupId}/onos-netconf-provider-device/${project.version}</bundle> <!-- Question: should there be the jnc stuff here? Or is it just for testing --> </feature> diff --git a/framework/src/onos/providers/netconf/device/pom.xml b/framework/src/onos/providers/netconf/device/pom.xml index 3465bc3a..15ad475a 100644 --- a/framework/src/onos/providers/netconf/device/pom.xml +++ b/framework/src/onos/providers/netconf/device/pom.xml @@ -33,129 +33,29 @@ <dependencies> <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> - </dependency> - <dependency> - <groupId>ch.ethz.ganymed</groupId> - <artifactId>ganymed-ssh2</artifactId> - <version>262</version> - </dependency> - <dependency> - <!-- TODO: change this appropriately when the official TailF JNC is available --> <groupId>org.onosproject</groupId> - <artifactId>jnc</artifactId> - <version>1.0</version> - </dependency> - <dependency> - <groupId>org.jdom</groupId> - <artifactId>jdom2</artifactId> - <version>2.0.5</version> - </dependency> - <dependency> - <groupId>jaxen</groupId> - <artifactId>jaxen</artifactId> - <version>1.1.4</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> + <artifactId>onlab-junit</artifactId> + <scope>test</scope> </dependency> <dependency> <groupId>org.onosproject</groupId> - <artifactId>onlab-junit</artifactId> - <scope>test</scope> + <artifactId>onos-netconf-api</artifactId> + <version>${project.version}</version> </dependency> <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> - <scope>test</scope> + <groupId>org.onosproject</groupId> + <artifactId>onos-netconf-ctl</artifactId> + <version>${project.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <version>2.3</version> - <configuration> - <filters> - <filter> - <artifact>com.tailf:JNC</artifact> - <includes> - <include>com/tailf/jnc/**</include> - </includes> - </filter> - <filter> - <artifact>ch.ethz.ganymed:ganymed-ssh2</artifact> - <includes> - <include>ch/ethz/ssh2/**</include> - </includes> - </filter> - <filter> - <artifact>org.jdom:jdom2</artifact> - <includes> - <include>org/jdom2/**</include> - </includes> - </filter> - </filters> - </configuration> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-scr-plugin</artifactId> </plugin> <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <configuration> - <instructions> - <Export-Package> - com.tailf.jnc, - ch.ethz.ssh2, - ch.ethz.ssh2.auth, - ch.ethz.ssh2.channel, - ch.ethz.ssh2.crypto, - ch.ethz.ssh2.crypto.cipher, - ch.ethz.ssh2.crypto.dh, - ch.ethz.ssh2.crypto.digest, - ch.ethz.ssh2.log, - ch.ethz.ssh2.packets, - ch.ethz.ssh2.server, - ch.ethz.ssh2.sftp, - ch.ethz.ssh2.signature, - ch.ethz.ssh2.transport, - ch.ethz.ssh2.util, - org.jdom2, - org.jdom2.input, - org.jdom2.output, - org.jdom2.adapters, - org.jdom2.filter, - org.jdom2.internal, - org.jdom2.located, - org.jdom2.transform, - org.jdom2.util, - org.jdom2.xpath, - org.jdom2.input.sax, - org.jdom2.input.stax, - org.jdom2.output.support, - org.jdom2.xpath.jaxen, - org.jdom2.xpath.util - </Export-Package> - </instructions> - </configuration> - </plugin> - <plugin> <groupId>org.onosproject</groupId> <artifactId>onos-maven-plugin</artifactId> </plugin> diff --git a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDevice.java b/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDevice.java deleted file mode 100644 index b3d26b06..00000000 --- a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDevice.java +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.provider.netconf.device.impl; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onlab.util.Tools.delay; -import static org.slf4j.LoggerFactory.getLogger; - -import java.io.IOException; -import java.io.StringReader; -import java.util.ArrayList; -import java.util.List; - -import org.jdom2.Document; -import org.jdom2.Element; -import org.jdom2.input.SAXBuilder; -import org.jdom2.output.Format; -import org.jdom2.output.XMLOutputter; -import org.slf4j.Logger; - -import com.tailf.jnc.Capabilities; -import com.tailf.jnc.JNCException; -import com.tailf.jnc.SSHConnection; -import com.tailf.jnc.SSHSession; - -/** - * This is a logical representation of actual NETCONF device, carrying all the - * necessary information to connect and execute NETCONF operations. - */ -public class NetconfDevice { - private final Logger log = getLogger(NetconfDevice.class); - - /** - * The Device State is used to determine whether the device is active or - * inactive. This state infomation will help Device Creator to add or delete - * the device from the core. - */ - public static enum DeviceState { - /* Used to specify Active state of the device */ - ACTIVE, - /* Used to specify inactive state of the device */ - INACTIVE, - /* Used to specify invalid state of the device */ - INVALID - } - - private static final int DEFAULT_SSH_PORT = 22; - private static final int DEFAULT_CON_TIMEOUT = 0; - private static final String XML_CAPABILITY_KEY = "capability"; - private static final int EVENTINTERVAL = 2000; - private static final int CONNECTION_CHECK_INTERVAL = 3; - private static final String INPUT_HELLO_XML_MSG = new StringBuilder( - "<?xml version=\"1.0\" encoding=\"UTF-8\"?>") - .append("<hello xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">") - .append("<capabilities><capability>urn:ietf:params:netconf:base:1.0</capability>") - .append("</capabilities></hello>").toString(); - - private String sshHost; - private int sshPort = DEFAULT_SSH_PORT; - private int connectTimeout = DEFAULT_CON_TIMEOUT; - private String username; - private String password; - private boolean reachable = false; - - private List<String> capabilities = new ArrayList<String>(); - private SSHConnection sshConnection = null; - - private DeviceState deviceState = DeviceState.INVALID; - - protected NetconfDevice(String sshHost, int sshPort, String username, - String password) { - this.username = checkNotNull(username, - "Netconf Username Cannot be null"); - this.sshHost = checkNotNull(sshHost, "Netconf Device IP cannot be null"); - this.sshPort = checkNotNull(sshPort, - "Netconf Device SSH port cannot be null"); - this.password = password; - } - - /** - * This will try to connect to NETCONF device and find all the capabilities. - * - * @throws Exception if unable to connect to the device - */ - // FIXME: this should not be a generic Exception; perhaps wrap in some RuntimeException - public void init() throws Exception { - try { - if (sshConnection == null) { - sshConnection = new SSHConnection(sshHost, sshPort, connectTimeout); - sshConnection.authenticateWithPassword(username, password); - } - // Send hello message to retrieve capabilities. - } catch (IOException e) { - log.error("Fatal Error while creating connection to the device: " - + deviceInfo(), e); - throw e; - } catch (JNCException e) { - log.error("Failed to connect to the device: " + deviceInfo(), e); - throw e; - } - - hello(); - } - - private void hello() { - SSHSession ssh = null; - try { - ssh = new SSHSession(sshConnection); - String helloRequestXML = INPUT_HELLO_XML_MSG.trim(); - - log.debug("++++++++++++++++++++++++++++++++++Sending Hello: " - + sshConnection.getGanymedConnection().getHostname() - + "++++++++++++++++++++++++++++++++++"); - printPrettyXML(helloRequestXML); - ssh.print(helloRequestXML); - // ssh.print(endCharSeq); - ssh.flush(); - String xmlResponse = null; - int i = CONNECTION_CHECK_INTERVAL; - while (!ssh.ready() && i > 0) { - delay(EVENTINTERVAL); - i--; - } - - if (ssh.ready()) { - StringBuffer readOne = ssh.readOne(); - if (readOne == null) { - log.error("The Hello Contains No Capabilites"); - throw new JNCException( - JNCException.SESSION_ERROR, - "server does not support NETCONF base capability: " - + Capabilities.NETCONF_BASE_CAPABILITY); - } else { - xmlResponse = readOne.toString().trim(); - - log.debug("++++++++++++++++++++++++++++++++++Reading Capabilities: " - + sshConnection.getGanymedConnection() - .getHostname() - + "++++++++++++++++++++++++++++++++++"); - - printPrettyXML(xmlResponse); - processCapabilities(xmlResponse); - } - } - reachable = true; - } catch (IOException e) { - log.error("Fatal Error while sending Hello Message to the device: " - + deviceInfo(), e); - } catch (JNCException e) { - log.error("Fatal Error while sending Hello Message to the device: " - + deviceInfo(), e); - } finally { - log.debug("Closing the session after successful execution"); - if (ssh != null) { - ssh.close(); - } - } - } - - private void processCapabilities(String xmlResponse) throws JNCException { - if (xmlResponse.isEmpty()) { - log.error("The capability response cannot be empty"); - throw new JNCException( - JNCException.SESSION_ERROR, - "server does not support NETCONF base capability: " - + Capabilities.NETCONF_BASE_CAPABILITY); - } - try { - Document doc = new SAXBuilder() - .build(new StringReader(xmlResponse)); - Element rootElement = doc.getRootElement(); - processCapabilities(rootElement); - } catch (Exception e) { - log.error("ERROR while parsing the XML " + xmlResponse); - } - } - - private void processCapabilities(Element rootElement) { - List<Element> children = rootElement.getChildren(); - if (children.isEmpty()) { - return; - } - for (Element child : children) { - - if (child.getName().equals(XML_CAPABILITY_KEY)) { - capabilities.add(child.getValue()); - } - if (!child.getChildren().isEmpty()) { - processCapabilities(child); - } - } - } - - private void printPrettyXML(String xmlstring) { - try { - Document doc = new SAXBuilder().build(new StringReader(xmlstring)); - XMLOutputter xmOut = new XMLOutputter(Format.getPrettyFormat()); - String outputString = xmOut.outputString(doc); - log.debug(outputString); - } catch (Exception e) { - log.error("ERROR while parsing the XML " + xmlstring, e); - - } - } - - /** - * This would return host IP and host Port, used by this particular Netconf - * Device. - * @return Device Information. - */ - public String deviceInfo() { - return new StringBuilder("host: ").append(sshHost).append(". port: ") - .append(sshPort).toString(); - } - - /** - * This will terminate the device connection. - */ - public void disconnect() { - sshConnection.close(); - reachable = false; - } - - /** - * This will list down all the capabilities supported on the device. - * @return Capability list. - */ - public List<String> getCapabilities() { - return capabilities; - } - - /** - * This api is intended to know whether the device is connected or not. - * @return true if connected - */ - public boolean isReachable() { - return reachable; - } - - /** - * This will return the IP used connect ssh on the device. - * @return Netconf Device IP - */ - public String getSshHost() { - return sshHost; - } - - /** - * This will return the SSH Port used connect the device. - * @return SSH Port number - */ - public int getSshPort() { - return sshPort; - } - - /** - * The usename used to connect Netconf Device. - * @return Device Username - */ - public String getUsername() { - return username; - } - - /** - * Retrieve current state of the device. - * @return Current Device State - */ - public DeviceState getDeviceState() { - return deviceState; - } - - /** - * This is set the state information for the device. - * @param deviceState Next Device State - */ - public void setDeviceState(DeviceState deviceState) { - this.deviceState = deviceState; - } - - /** - * Check whether the device is in Active state. - * @return true if the device is Active - */ - public boolean isActive() { - return deviceState == DeviceState.ACTIVE ? true : false; - } - - public void setConnectTimeout(int connectTimeout) { - this.connectTimeout = connectTimeout; - } -} diff --git a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java b/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java index f9194a7e..d12c6474 100644 --- a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java +++ b/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java @@ -13,39 +13,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.onosproject.provider.netconf.device.impl; - -import static com.google.common.base.Strings.isNullOrEmpty; -import static org.onlab.util.Tools.delay; -import static org.onlab.util.Tools.get; -import static org.onlab.util.Tools.groupedThreads; -import static org.slf4j.LoggerFactory.getLogger; -import java.io.IOException; -import java.net.SocketTimeoutException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Dictionary; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; +package org.onosproject.provider.netconf.device.impl; +import com.google.common.base.Preconditions; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Modified; -import org.apache.felix.scr.annotations.Property; import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.ReferenceCardinality; import org.onlab.packet.ChassisId; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.cluster.ClusterService; +import org.onosproject.core.ApplicationId; +import org.onosproject.core.CoreService; +import org.onosproject.incubator.net.config.basics.ConfigException; +import org.onosproject.net.DefaultAnnotations; import org.onosproject.net.Device; import org.onosproject.net.DeviceId; import org.onosproject.net.MastershipRole; +import org.onosproject.net.SparseAnnotations; +import org.onosproject.net.config.ConfigFactory; +import org.onosproject.net.config.NetworkConfigEvent; +import org.onosproject.net.config.NetworkConfigListener; +import org.onosproject.net.config.NetworkConfigRegistry; import org.onosproject.net.device.DefaultDeviceDescription; import org.onosproject.net.device.DeviceDescription; import org.onosproject.net.device.DeviceProvider; @@ -54,305 +43,180 @@ import org.onosproject.net.device.DeviceProviderService; import org.onosproject.net.device.DeviceService; import org.onosproject.net.provider.AbstractProvider; import org.onosproject.net.provider.ProviderId; -import org.onosproject.provider.netconf.device.impl.NetconfDevice.DeviceState; -import org.osgi.service.component.ComponentContext; +import org.onosproject.netconf.NetconfController; +import org.onosproject.netconf.NetconfDevice; +import org.onosproject.netconf.NetconfDeviceInfo; +import org.onosproject.netconf.NetconfDeviceListener; import org.slf4j.Logger; +import java.util.Map; + +import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY; +import static org.slf4j.LoggerFactory.getLogger; + /** - * Provider which will try to fetch the details of NETCONF devices from the core - * and run a capability discovery on each of the device. + * Provider which uses an NETCONF controller to detect device. */ @Component(immediate = true) public class NetconfDeviceProvider extends AbstractProvider implements DeviceProvider { - - private final Logger log = getLogger(NetconfDeviceProvider.class); - - protected Map<DeviceId, NetconfDevice> netconfDeviceMap = new ConcurrentHashMap<DeviceId, NetconfDevice>(); - - private DeviceProviderService providerService; + private final Logger log = getLogger(getClass()); @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected DeviceProviderRegistry providerRegistry; @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected DeviceService deviceService; - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ClusterService clusterService; + protected NetconfController controller; //where is initiated ? @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ComponentConfigService cfgService; - - private ExecutorService deviceBuilder = Executors - .newFixedThreadPool(1, groupedThreads("onos/netconf", "device-creator")); + protected NetworkConfigRegistry cfgService; - // Delay between events in ms. - private static final int EVENTINTERVAL = 5; - - private static final String SCHEME = "netconf"; + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) + protected CoreService coreService; - @Property(name = "devConfigs", value = "", label = "Instance-specific configurations") - private String devConfigs = null; - @Property(name = "devPasswords", value = "", label = "Instance-specific password") - private String devPasswords = null; + private DeviceProviderService providerService; + private NetconfDeviceListener innerNodeListener = new InnerNetconfDeviceListener(); + protected static final String ISNOTNULL = "NetconfDeviceInfo is not null"; + private static final String UNKNOWN = "unknown"; + + private final ConfigFactory factory = + new ConfigFactory<ApplicationId, NetconfProviderConfig>(APP_SUBJECT_FACTORY, + NetconfProviderConfig.class, + "devices", + true) { + @Override + public NetconfProviderConfig createConfig() { + return new NetconfProviderConfig(); + } + }; + private final NetworkConfigListener cfgLister = new InternalNetworkConfigListener(); + private ApplicationId appId; - /** - * Creates a provider with the supplier identifier. - */ - public NetconfDeviceProvider() { - super(new ProviderId("netconf", "org.onosproject.provider.netconf")); - } @Activate - public void activate(ComponentContext context) { - cfgService.registerProperties(getClass()); + public void activate() { providerService = providerRegistry.register(this); - modified(context); + cfgService.registerConfigFactory(factory); + cfgService.addListener(cfgLister); + controller.addDeviceListener(innerNodeListener); + connectExistingDevices(); log.info("Started"); } + @Deactivate - public void deactivate(ComponentContext context) { - cfgService.unregisterProperties(getClass(), false); - try { - for (Entry<DeviceId, NetconfDevice> deviceEntry : netconfDeviceMap - .entrySet()) { - deviceBuilder.submit(new DeviceCreator(deviceEntry.getValue(), - false)); - } - deviceBuilder.awaitTermination(1000, TimeUnit.MILLISECONDS); - } catch (InterruptedException e) { - log.error("Device builder did not terminate"); - } - deviceBuilder.shutdownNow(); - netconfDeviceMap.clear(); + public void deactivate() { providerRegistry.unregister(this); providerService = null; + cfgService.unregisterConfigFactory(factory); log.info("Stopped"); } - @Modified - public void modified(ComponentContext context) { - if (context == null) { - log.info("No configuration file"); - return; - } - Dictionary<?, ?> properties = context.getProperties(); - String deviceCfgValue = get(properties, "devConfigs"); - log.info("Settings: devConfigs={}", deviceCfgValue); - if (!isNullOrEmpty(deviceCfgValue)) { - addOrRemoveDevicesConfig(deviceCfgValue); - } - } - - private void addOrRemoveDevicesConfig(String deviceConfig) { - for (String deviceEntry : deviceConfig.split(",")) { - NetconfDevice device = processDeviceEntry(deviceEntry); - if (device != null) { - log.info("Device Detail: username: {}, host={}, port={}, state={}", - device.getUsername(), device.getSshHost(), - device.getSshPort(), device.getDeviceState().name()); - if (device.isActive()) { - deviceBuilder.submit(new DeviceCreator(device, true)); - } else { - deviceBuilder.submit(new DeviceCreator(device, false)); - } - } - } - } - - private NetconfDevice processDeviceEntry(String deviceEntry) { - if (deviceEntry == null) { - log.info("No content for Device Entry, so cannot proceed further."); - return null; - } - log.info("Trying to convert Device Entry String: " + deviceEntry - + " to a Netconf Device Object"); - NetconfDevice device = null; - try { - String userInfo = deviceEntry.substring(0, deviceEntry - .lastIndexOf('@')); - String hostInfo = deviceEntry.substring(deviceEntry - .lastIndexOf('@') + 1); - String[] infoSplit = userInfo.split(":"); - String username = infoSplit[0]; - String password = infoSplit[1]; - infoSplit = hostInfo.split(":"); - String hostIp = infoSplit[0]; - Integer hostPort; - try { - hostPort = Integer.parseInt(infoSplit[1]); - } catch (NumberFormatException nfe) { - log.error("Bad Configuration Data: Failed to parse host port number string: " - + infoSplit[1]); - throw nfe; - } - String deviceState = infoSplit[2]; - if (isNullOrEmpty(username) || isNullOrEmpty(password) - || isNullOrEmpty(hostIp) || hostPort == 0) { - log.warn("Bad Configuration Data: both user and device information parts of Configuration " - + deviceEntry + " should be non-nullable"); - } else { - device = new NetconfDevice(hostIp, hostPort, username, password); - if (!isNullOrEmpty(deviceState)) { - if (deviceState.toUpperCase().equals(DeviceState.ACTIVE - .name())) { - device.setDeviceState(DeviceState.ACTIVE); - } else if (deviceState.toUpperCase() - .equals(DeviceState.INACTIVE.name())) { - device.setDeviceState(DeviceState.INACTIVE); - } else { - log.warn("Device State Information can not be empty, so marking the state as INVALID"); - device.setDeviceState(DeviceState.INVALID); - } - } else { - log.warn("The device entry do not specify state information, so marking the state as INVALID"); - device.setDeviceState(DeviceState.INVALID); - } - } - } catch (ArrayIndexOutOfBoundsException aie) { - log.error("Error while reading config infromation from the config file: " - + "The user, host and device state infomation should be " - + "in the order 'userInfo@hostInfo:deviceState'" - + deviceEntry, aie); - } catch (Exception e) { - log.error("Error while parsing config information for the device entry: " - + deviceEntry, e); - } - return device; + public NetconfDeviceProvider() { + super(new ProviderId("netconf", "org.onosproject.netconf.provider.device")); } @Override public void triggerProbe(DeviceId deviceId) { - // TODO Auto-generated method stub + // TODO: This will be implemented later. + log.info("Triggering probe on device {}", deviceId); } @Override public void roleChanged(DeviceId deviceId, MastershipRole newRole) { - + // TODO: This will be implemented later. } @Override public boolean isReachable(DeviceId deviceId) { - NetconfDevice netconfDevice = netconfDeviceMap.get(deviceId); + Map<DeviceId, NetconfDevice> devices = controller.getDevicesMap(); + + NetconfDevice netconfDevice = null; + for (DeviceId key : devices.keySet()) { + if (key.equals(deviceId)) { + netconfDevice = controller.getDevicesMap().get(key); + } + } if (netconfDevice == null) { log.warn("BAD REQUEST: the requested device id: " - + deviceId.toString() - + " is not associated to any NETCONF Device"); + + deviceId.toString() + + " is not associated to any NETCONF Device"); return false; } - return netconfDevice.isReachable(); + return netconfDevice.isActive(); } - /** - * This class is intended to add or remove Configured Netconf Devices. - * Functionality relies on 'createFlag' and 'NetconfDevice' content. The - * functionality runs as a thread and dependening on the 'createFlag' value - * it will create or remove Device entry from the core. - */ - private class DeviceCreator implements Runnable { + private class InnerNetconfDeviceListener implements NetconfDeviceListener { - private NetconfDevice device; - private boolean createFlag; + @Override + public void deviceAdded(NetconfDeviceInfo nodeId) { + Preconditions.checkNotNull(nodeId, ISNOTNULL); + DeviceId deviceId = nodeId.getDeviceId(); + //TODO filter for not netconf devices + //Netconf configuration object + ChassisId cid = new ChassisId(); + String ipAddress = nodeId.ip().toString(); + SparseAnnotations annotations = DefaultAnnotations.builder() + .set("ipaddress", ipAddress).build(); + DeviceDescription deviceDescription = new DefaultDeviceDescription( + deviceId.uri(), + Device.Type.SWITCH, + UNKNOWN, UNKNOWN, + UNKNOWN, UNKNOWN, + cid, + annotations); + providerService.deviceConnected(deviceId, deviceDescription); - public DeviceCreator(NetconfDevice device, boolean createFlag) { - this.device = device; - this.createFlag = createFlag; } @Override - public void run() { - if (createFlag) { - log.info("Trying to create Device Info on ONOS core"); - advertiseDevices(); - } else { - log.info("Trying to remove Device Info on ONOS core"); - removeDevices(); - } + public void deviceRemoved(NetconfDeviceInfo nodeId) { + Preconditions.checkNotNull(nodeId, ISNOTNULL); + DeviceId deviceId = nodeId.getDeviceId(); + providerService.deviceDisconnected(deviceId); + } + } - /** - * For each Netconf Device, remove the entry from the device store. - */ - private void removeDevices() { - if (device == null) { - log.warn("The Request Netconf Device is null, cannot proceed further"); - return; - } + private void connectExistingDevices() { + //TODO consolidate + appId = coreService.registerApplication("org.onosproject.netconf"); + connectDevices(); + } + + private void connectDevices() { + NetconfProviderConfig cfg = cfgService.getConfig(appId, NetconfProviderConfig.class); + if (cfg != null) { + log.info("cfg {}", cfg); try { - DeviceId did = getDeviceId(); - if (!netconfDeviceMap.containsKey(did)) { - log.error("BAD Request: 'Currently device is not discovered, " - + "so cannot remove/disconnect the device: " - + device.deviceInfo() + "'"); - return; - } - providerService.deviceDisconnected(did); - device.disconnect(); - netconfDeviceMap.remove(did); - delay(EVENTINTERVAL); - } catch (URISyntaxException uriSyntaxExcpetion) { - log.error("Syntax Error while creating URI for the device: " - + device.deviceInfo() - + " couldn't remove the device from the store", - uriSyntaxExcpetion); + cfg.getDevicesAddresses().stream().forEach(addr -> controller + .connectDevice(new NetconfDeviceInfo(addr.name(), + addr.password(), + addr.ip(), + addr.port()))); + } catch (ConfigException e) { + log.error("Cannot read config error " + e); } } + } - /** - * Initialize Netconf Device object, and notify core saying device - * connected. - */ - private void advertiseDevices() { - try { - if (device == null) { - log.warn("The Request Netconf Device is null, cannot proceed further"); - return; - } - device.init(); - DeviceId did = getDeviceId(); - ChassisId cid = new ChassisId(); - DeviceDescription desc = new DefaultDeviceDescription( - did.uri(), - Device.Type.OTHER, - "", "", - "", "", - cid); - log.info("Persisting Device" + did.uri().toString()); - - netconfDeviceMap.put(did, device); - providerService.deviceConnected(did, desc); - log.info("Done with Device Info Creation on ONOS core. Device Info: " - + device.deviceInfo() + " " + did.uri().toString()); - delay(EVENTINTERVAL); - } catch (URISyntaxException e) { - log.error("Syntax Error while creating URI for the device: " - + device.deviceInfo() - + " couldn't persist the device onto the store", e); - } catch (SocketTimeoutException e) { - log.error("Error while setting connection for the device: " - + device.deviceInfo(), e); - } catch (IOException e) { - log.error("Error while setting connection for the device: " - + device.deviceInfo(), e); - } catch (Exception e) { - log.error("Error while initializing session for the device: " - + (device != null ? device.deviceInfo() : null), e); - } + private class InternalNetworkConfigListener implements NetworkConfigListener { + + + @Override + public void event(NetworkConfigEvent event) { + connectDevices(); } - /** - * This will build a device id for the device. - */ - private DeviceId getDeviceId() throws URISyntaxException { - String additionalSSP = new StringBuilder(device.getUsername()) - .append("@").append(device.getSshHost()).append(":") - .append(device.getSshPort()).toString(); - DeviceId did = DeviceId.deviceId(new URI(SCHEME, additionalSSP, - null)); - return did; + @Override + public boolean isRelevant(NetworkConfigEvent event) { + //TODO refactor + return event.configClass().equals(NetconfProviderConfig.class) && + (event.type() == NetworkConfigEvent.Type.CONFIG_ADDED || + event.type() == NetworkConfigEvent.Type.CONFIG_UPDATED); } } } diff --git a/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTest.java b/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTest.java deleted file mode 100644 index e56c5959..00000000 --- a/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTest.java +++ /dev/null @@ -1,421 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.provider.netconf.device.impl; - -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.junit.Assert.assertFalse; -import static org.onlab.util.Tools.delay; -import static org.onosproject.provider.netconf.device.impl.NetconfDeviceProviderTestConstant.*; -import static org.slf4j.LoggerFactory.getLogger; - -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Collection; -import java.util.Dictionary; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import org.easymock.EasyMock; -import org.junit.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.onlab.packet.ChassisId; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.device.DefaultDeviceDescription; -import org.onosproject.net.device.DeviceDescription; -import org.onosproject.net.device.DeviceProvider; -import org.onosproject.net.device.DeviceProviderRegistry; -import org.onosproject.net.device.DeviceProviderService; -import org.onosproject.net.device.PortDescription; -import org.onosproject.net.device.PortStatistics; -import org.onosproject.net.provider.ProviderId; -import org.osgi.service.component.ComponentContext; -import org.slf4j.Logger; - -import com.tailf.jnc.JNCException; - -/** - * Test Case to Validate Netconf Device Provider. - */ -public class NetconfDeviceProviderTest { - TestDeviceCreator create; - - private final Logger log = getLogger(NetconfDeviceProviderTest.class); - - private Map<DeviceId, NetconfDevice> netconfDeviceMap = new ConcurrentHashMap<DeviceId, NetconfDevice>(); - - private DeviceProviderService providerService; - - private static final DeviceId DID1 = DeviceId.deviceId(DEVICE_ID); - - private final NetconfDeviceProvider provider = new NetconfDeviceProvider(); - private final TestDeviceRegistry registry = new TestDeviceRegistry(); - - private ComponentConfigService mockCfgService; - - @Before - public void setUp() { - mockCfgService = EasyMock.createMock(ComponentConfigService.class); - provider.cfgService = mockCfgService; - provider.providerRegistry = registry; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockWithoutValues(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)).andReturn(NULL); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockWithDeviceEntryNull(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)).andReturn(NULL_NULL); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockDeviceEntryNumberFomatEx(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)) - .andReturn(CONFIG_WITH_INVALID_ENTRY_NUMBER) - .andThrow(new NumberFormatException()); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockWithoutUsernameAndPassword(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)).andReturn(CONFIG_WITH_NULL_ENTRY); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockWithDifferentDeviceState(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)) - .andReturn(CONFIG_WITH_DIFFERENT_DEVICE_STATE); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockDeviceWithArrayOutOFBoundEx(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)) - .andReturn(CONFIG_WITH_ARRAY_OUT_OF_BOUNDEX) - .andThrow(new ArrayIndexOutOfBoundsException()); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @SuppressWarnings("unchecked") - private Dictionary<String, String> getDictionaryMockDeviceEntryForDeactivate(ComponentContext componentContext) { - Dictionary<String, String> dictionary = EasyMock - .createMock(Dictionary.class); - expect(dictionary.get(DEV_CONFIG)) - .andReturn(CONFIG_ENTRY_FOR_DEACTIVATE) - .andThrow(new ArrayIndexOutOfBoundsException()); - replay(dictionary); - expect(componentContext.getProperties()).andReturn(dictionary); - return dictionary; - } - - @Ignore - @Test(expected = IOException.class) - public void testSSHAuthentication() throws IOException, JNCException { - TestDeviceCreator objForTestDev = new TestDeviceCreator( - new NetconfDevice( - DEVICE_IP, - DEVICE_PORT, - DEVICE_USERNAME, - DEVICE_PASSWORD), - true); - objForTestDev.run(); - } - - @After - public void tearDown() { - provider.providerRegistry = null; - provider.cfgService = null; - } - - // To check if deviceCfgValue is empty or null - @Test - public void testActiveWithcomponentContextIsNull() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockWithoutValues(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - // To check deviceEntry and device is null - @Test - public void testActiveWithDeviceEntryIsNull() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockWithDeviceEntryNull(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - @Test - public void testActiveWithDeviceEntryWithoutUsernameAndPassword() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockWithoutUsernameAndPassword(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - @Test - public void testActiveWithDeviceEntryWithNumberFomatEx() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockDeviceEntryNumberFomatEx(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - @Test - public void testActiveWithDeviceEntryWithDifferentDeviceState() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockWithDifferentDeviceState(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - @Test - public void testActiveWithDeviceEntryWithArrayOutOFBoundEx() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockDeviceWithArrayOutOFBoundEx(componentContext); - replay(componentContext); - provider.activate(componentContext); - } - - @Test - public void isReachableWithInvalidDeviceId() { - assertFalse("Initially the Device ID Should not be reachable", - provider.isReachable(DID1)); - NetconfDevice device = new NetconfDevice(NULL, ZERO, NULL, NULL); - provider.netconfDeviceMap.put(DID1, device); - assertFalse("Particular Device ID cannot be Reachable", - provider.isReachable(DID1)); - } - - @Test - public void testDeactivate() { - - ComponentContext componentContext = EasyMock - .createMock(ComponentContext.class); - getDictionaryMockDeviceEntryForDeactivate(componentContext); - replay(componentContext); - testActiveWithDeviceEntryWithDifferentDeviceState(); - provider.deactivate(componentContext); - } - - private class TestDeviceCreator { - - private NetconfDevice device; - private boolean createFlag; - - public TestDeviceCreator(NetconfDevice device, boolean createFlag) { - this.device = device; - this.createFlag = createFlag; - } - - public void run() throws JNCException, IOException { - if (createFlag) { - log.info("Trying to create Device Info on ONOS core"); - advertiseDevices(); - } else { - log.info("Trying to remove Device Info on ONOS core"); - removeDevices(); - } - } - - /** - * For each Netconf Device, remove the entry from the device store. - */ - private void removeDevices() { - if (device == null) { - log.warn("The Request Netconf Device is null, cannot proceed further"); - return; - } - try { - DeviceId did = getDeviceId(); - if (!netconfDeviceMap.containsKey(did)) { - log.error("BAD Request: 'Currently device is not discovered, " - + "so cannot remove/disconnect the device: " - + device.deviceInfo() + "'"); - return; - } - providerService.deviceDisconnected(did); - device.disconnect(); - netconfDeviceMap.remove(did); - delay(EVENTINTERVAL); - } catch (URISyntaxException uriSyntaxExcpetion) { - log.error("Syntax Error while creating URI for the device: " - + device.deviceInfo() - + " couldn't remove the device from the store", - uriSyntaxExcpetion); - } - } - - /** - * Initialize Netconf Device object, and notify core saying device - * connected. - */ - private void advertiseDevices() throws JNCException, IOException { - try { - if (device == null) { - log.warn("The Request Netconf Device is null, cannot proceed further"); - return; - } - device.init(); - DeviceId did = getDeviceId(); - ChassisId cid = new ChassisId(); - DeviceDescription desc = new DefaultDeviceDescription( - did.uri(), - Device.Type.OTHER, - NULL, - NULL, - NULL, - NULL, cid); - log.info("Persisting Device" + did.uri().toString()); - - netconfDeviceMap.put(did, device); - providerService.deviceConnected(did, desc); - log.info("Done with Device Info Creation on ONOS core. Device Info: " - + device.deviceInfo() + " " + did.uri().toString()); - delay(EVENTINTERVAL); - } catch (URISyntaxException e) { - log.error("Syntax Error while creating URI for the device: " - + device.deviceInfo() - + " couldn't persist the device onto the store", e); - } catch (JNCException e) { - throw e; - } catch (IOException e) { - throw e; - } catch (Exception e) { - log.error("Error while initializing session for the device: " - + device.deviceInfo(), e); - } - } - - private DeviceId getDeviceId() throws URISyntaxException { - String additionalSSP = new StringBuilder(device.getUsername()) - .append(AT_THE_RATE).append(device.getSshHost()) - .append(COLON).append(device.getSshPort()).toString(); - DeviceId did = DeviceId.deviceId(new URI(SCHEME_NETCONF, - additionalSSP, null)); - return did; - } - } - - private class TestDeviceRegistry implements DeviceProviderRegistry { - - @Override - public DeviceProviderService register(DeviceProvider provider) { - return new TestProviderService(); - } - - @Override - public void unregister(DeviceProvider provider) { - } - - @Override - public Set<ProviderId> getProviders() { - return null; - } - - private class TestProviderService implements DeviceProviderService { - - @Override - public DeviceProvider provider() { - return null; - } - - @Override - public void deviceConnected(DeviceId deviceId, - DeviceDescription deviceDescription) { - } - - @Override - public void deviceDisconnected(DeviceId deviceId) { - - } - - @Override - public void updatePorts(DeviceId deviceId, - List<PortDescription> portDescriptions) { - - } - - @Override - public void portStatusChanged(DeviceId deviceId, - PortDescription portDescription) { - - } - - @Override - public void receivedRoleReply(DeviceId deviceId, - MastershipRole requested, - MastershipRole response) { - - } - - @Override - public void updatePortStatistics(DeviceId deviceId, - Collection<PortStatistics> portStatistics) { - - } - } - } -} diff --git a/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTestConstant.java b/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTestConstant.java deleted file mode 100644 index 1d848e26..00000000 --- a/framework/src/onos/providers/netconf/device/src/test/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProviderTestConstant.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.provider.netconf.device.impl; - -public final class NetconfDeviceProviderTestConstant { - - private NetconfDeviceProviderTestConstant() { - } - - public static final int ZERO = 0; - public static final int EVENTINTERVAL = 5; - public static final String DEV_CONFIG = "devConfigs"; - public static final String CONFIG_WITH_INVALID_ENTRY_NUMBER = "cisco:cisco" - + "@10.18.11.14:cisco:active"; - public static final String CONFIG_WITH_NULL_ENTRY = "null:null@null:0:active"; - public static final String CONFIG_WITH_DIFFERENT_DEVICE_STATE = "cisco:cisco@10.18.11.14:22:active," - + "cisco:cisco@10.18.11.18:22:inactive,cisco:cisco@10.18.11.14:22:invalid," - + "cisco:cisco@10.18.11.14:22:null"; - public static final String CONFIG_WITH_ARRAY_OUT_OF_BOUNDEX = "@10.18.11.14:22:active"; - public static final String CONFIG_ENTRY_FOR_DEACTIVATE = "netconf:cisco" - + "@10.18.11.14:22:active"; - public static final String DEVICE_IP = "10.18.14.19"; - public static final int DEVICE_PORT = 22; - public static final String DEVICE_USERNAME = "cisco"; - public static final String DEVICE_PASSWORD = "cisco"; - public static final String AT_THE_RATE = "@"; - public static final String COLON = ":"; - public static final String NULL = ""; - public static final String NULL_NULL = "null,null"; - public static final String SCHEME_NETCONF = "netconf"; - public static final String DEVICE_ID = "of:0000000000000001"; - -} diff --git a/framework/src/onos/providers/openflow/app/app.xml b/framework/src/onos/providers/openflow/app/app.xml deleted file mode 100644 index e54d1a8a..00000000 --- a/framework/src/onos/providers/openflow/app/app.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Copyright 2015 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<app name="org.onosproject.openflow" origin="ON.Lab" version="${project.version}" - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" - features="${project.artifactId}"> - <description>${project.description}</description> - - <artifact>mvn:${project.groupId}/onos-of-api/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-ctl/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-drivers/${project.version}</artifact> - - <artifact>mvn:${project.groupId}/onos-lldp-provider/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-host-provider/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-provider-device/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-provider-packet/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-provider-flow/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-provider-group/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-of-provider-meter/${project.version}</artifact> -</app> diff --git a/framework/src/onos/providers/openflow/app/features.xml b/framework/src/onos/providers/openflow/app/features.xml deleted file mode 100644 index 9dbae8af..00000000 --- a/framework/src/onos/providers/openflow/app/features.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<!-- - ~ Copyright 2015 Open Networking Laboratory - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> -<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${project.version}"> - <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository> - <feature name="${project.artifactId}" version="${project.version}" - description="${project.description}"> - <feature>onos-api</feature> - <bundle>mvn:io.netty/netty/3.9.2.Final</bundle> - <bundle>mvn:${project.groupId}/onos-of-api/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-ctl/${project.version}</bundle> - - <bundle>mvn:${project.groupId}/onos-lldp-provider/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-host-provider/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-provider-device/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-provider-packet/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-provider-flow/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-provider-group/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-of-provider-meter/${project.version}</bundle> - </feature> -</features> diff --git a/framework/src/onos/providers/openflow/app/pom.xml b/framework/src/onos/providers/openflow/app/pom.xml index cb55463b..ac5f6eee 100644 --- a/framework/src/onos/providers/openflow/app/pom.xml +++ b/framework/src/onos/providers/openflow/app/pom.xml @@ -27,55 +27,23 @@ </parent> <artifactId>onos-openflow</artifactId> - <packaging>pom</packaging> + <packaging>bundle</packaging> - <description>OpenFlow protocol southbound providers</description> + <properties> + <onos.app.name>org.onosproject.openflow</onos.app.name> + <onos.app.requires> + org.onosproject.openflow-base, + org.onosproject.hostprovider, + org.onosproject.lldpprovider + </onos.app.requires> + </properties> + + <description>OpenFlow southbound meta application</description> <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-api</artifactId> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-ctl</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-drivers</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-provider-device</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-provider-packet</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-provider-flow</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-of-provider-group</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-lldp-provider</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-host-provider</artifactId> - <version>${project.version}</version> - </dependency> + <dependency> + <groupId>org.onosproject</groupId> + <artifactId>onos-of-api</artifactId> + </dependency> </dependencies> - </project> diff --git a/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java b/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java index c591f47d..f4ab0173 100644 --- a/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java +++ b/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java @@ -707,10 +707,13 @@ public class FlowEntryBuilder { long tunnelId = match.get(MatchField.TUNNEL_ID).getValue(); builder.matchTunnelId(tunnelId); break; + case ARP_THA: + mac = MacAddress.valueOf(match.get(MatchField.ARP_THA).getLong()); + builder.matchArpTha(mac); + break; case ARP_OP: case ARP_SHA: case ARP_SPA: - case ARP_THA: case ARP_TPA: case MPLS_TC: default: diff --git a/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java b/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java index 010d7e7c..2e5be654 100644 --- a/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java +++ b/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java @@ -24,6 +24,7 @@ import org.onosproject.net.OchSignal; import org.onosproject.net.driver.DriverService; import org.onosproject.net.flow.FlowRule; import org.onosproject.net.flow.TrafficSelector; +import org.onosproject.net.flow.criteria.ArpHaCriterion; import org.onosproject.net.flow.criteria.Criterion; import org.onosproject.net.flow.criteria.EthCriterion; import org.onosproject.net.flow.criteria.EthTypeCriterion; @@ -178,6 +179,7 @@ public abstract class FlowModBuilder { UdpPortCriterion udpPortCriterion; SctpPortCriterion sctpPortCriterion; IPv6NDLinkLayerAddressCriterion llAddressCriterion; + ArpHaCriterion arpHaCriterion; for (Criterion c : selector.criteria()) { switch (c.type()) { @@ -415,10 +417,14 @@ public abstract class FlowModBuilder { mplsBos.mplsBos() ? OFBooleanValue.TRUE : OFBooleanValue.FALSE); break; + case ARP_THA: + arpHaCriterion = (ArpHaCriterion) c; + mBuilder.setExact(MatchField.ARP_THA, + MacAddress.of(arpHaCriterion.mac().toLong())); + break; case ARP_OP: case ARP_SHA: case ARP_SPA: - case ARP_THA: case ARP_TPA: case MPLS_TC: case PBB_ISID: diff --git a/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java b/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java index d5804f44..c91616df 100644 --- a/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java +++ b/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java @@ -15,11 +15,25 @@ */ package org.onosproject.provider.of.group.impl; +import static org.slf4j.LoggerFactory.getLogger; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.Optional; + import org.onlab.packet.Ip4Address; import org.onlab.packet.Ip6Address; import org.onosproject.core.GroupId; +import org.onosproject.net.DeviceId; import org.onosproject.net.PortNumber; +import org.onosproject.net.driver.DefaultDriverData; +import org.onosproject.net.driver.DefaultDriverHandler; +import org.onosproject.net.driver.Driver; +import org.onosproject.net.driver.DriverService; import org.onosproject.net.flow.TrafficTreatment; +import org.onosproject.net.flow.instructions.ExtensionInstruction; import org.onosproject.net.flow.instructions.Instruction; import org.onosproject.net.flow.instructions.Instructions; import org.onosproject.net.flow.instructions.L0ModificationInstruction; @@ -28,6 +42,7 @@ import org.onosproject.net.flow.instructions.L3ModificationInstruction; import org.onosproject.net.group.GroupBucket; import org.onosproject.net.group.GroupBuckets; import org.onosproject.net.group.GroupDescription; +import org.onosproject.openflow.controller.ExtensionInterpreter; import org.projectfloodlight.openflow.protocol.OFBucket; import org.projectfloodlight.openflow.protocol.OFFactory; import org.projectfloodlight.openflow.protocol.OFGroupAdd; @@ -52,14 +67,6 @@ import org.projectfloodlight.openflow.types.U32; import org.projectfloodlight.openflow.types.VlanPcp; import org.slf4j.Logger; -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.Optional; - -import static org.slf4j.LoggerFactory.getLogger; - /* * Builder for GroupMod. */ @@ -70,6 +77,7 @@ public final class GroupModBuilder { private GroupDescription.Type type; private OFFactory factory; private Long xid; + private Optional<DriverService> driverService; private final Logger log = getLogger(getClass()); @@ -85,6 +93,16 @@ public final class GroupModBuilder { this.xid = xid.orElse((long) 0); } + private GroupModBuilder(GroupBuckets buckets, GroupId groupId, + GroupDescription.Type type, OFFactory factory, + Optional<Long> xid, Optional<DriverService> driverService) { + this.buckets = buckets; + this.groupId = groupId; + this.type = type; + this.factory = factory; + this.xid = xid.orElse((long) 0); + this.driverService = driverService; + } /** * Creates a builder for GroupMod. * @@ -103,6 +121,24 @@ public final class GroupModBuilder { } /** + * Creates a builder for GroupMod. + * + * @param buckets GroupBuckets object + * @param groupId Group Id to create + * @param type Group type + * @param factory OFFactory object + * @param xid transaction ID + * @param driverService driver Service + * @return GroupModBuilder object + */ + public static GroupModBuilder builder(GroupBuckets buckets, GroupId groupId, + GroupDescription.Type type, OFFactory factory, + Optional<Long> xid, Optional<DriverService> driverService) { + + return new GroupModBuilder(buckets, groupId, type, factory, xid, driverService); + } + + /** * Builds the GroupAdd OF message. * * @return GroupAdd OF message @@ -118,8 +154,17 @@ public final class GroupModBuilder { if (type == GroupDescription.Type.SELECT) { bucketBuilder.setWeight(1); } - bucketBuilder.setWatchGroup(OFGroup.ANY); - bucketBuilder.setWatchPort(OFPort.ANY); + + if (type == GroupDescription.Type.FAILOVER && bucket.watchPort() != null) { + bucketBuilder.setWatchPort(OFPort.of((int) bucket.watchPort().toLong())); + } else { + bucketBuilder.setWatchPort(OFPort.ANY); + } + if (type == GroupDescription.Type.FAILOVER && bucket.watchGroup() != null) { + bucketBuilder.setWatchGroup(OFGroup.of(bucket.watchGroup().id())); + } else { + bucketBuilder.setWatchGroup(OFGroup.ANY); + } OFBucket ofBucket = bucketBuilder.build(); ofBuckets.add(ofBucket); } @@ -218,6 +263,12 @@ public final class GroupModBuilder { .setGroup(OFGroup.of(grp.groupId().id())); actions.add(actgrp.build()); break; + case EXTENSION: + Instructions.ExtensionInstructionWrapper wrapper = + (Instructions.ExtensionInstructionWrapper) i; + actions.add(buildExtensionAction( + wrapper.extensionInstruction(), wrapper.deviceId())); + break; default: log.warn("Instruction type {} not yet implemented.", i.type()); } @@ -372,5 +423,21 @@ public final class GroupModBuilder { } return null; } + + private OFAction buildExtensionAction(ExtensionInstruction i, DeviceId deviceId) { + if (!driverService.isPresent()) { + log.error("No driver service present"); + return null; + } + Driver driver = driverService.get().getDriver(deviceId); + if (driver.hasBehaviour(ExtensionInterpreter.class)) { + DefaultDriverHandler handler = + new DefaultDriverHandler(new DefaultDriverData(driver, deviceId)); + ExtensionInterpreter interpreter = handler.behaviour(ExtensionInterpreter.class); + return interpreter.mapInstruction(factory, i); + } + + return null; + } } diff --git a/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java b/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java index 5783c842..e69fd6b9 100644 --- a/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java +++ b/framework/src/onos/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java @@ -16,7 +16,12 @@ package org.onosproject.provider.of.group.impl; -import com.google.common.collect.Maps; +import static org.slf4j.LoggerFactory.getLogger; + +import java.util.Collection; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicLong; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; @@ -26,6 +31,7 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; import org.onosproject.core.DefaultGroupId; import org.onosproject.core.GroupId; import org.onosproject.net.DeviceId; +import org.onosproject.net.driver.DriverService; import org.onosproject.net.group.DefaultGroup; import org.onosproject.net.group.Group; import org.onosproject.net.group.GroupBuckets; @@ -60,12 +66,7 @@ import org.projectfloodlight.openflow.protocol.OFStatsType; import org.projectfloodlight.openflow.protocol.OFVersion; import org.slf4j.Logger; -import java.util.Collection; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.atomic.AtomicLong; - -import static org.slf4j.LoggerFactory.getLogger; +import com.google.common.collect.Maps; /** * Provider which uses an OpenFlow controller to handle Group. @@ -81,6 +82,9 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected GroupProviderRegistry providerRegistry; + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) + protected DriverService driverService; + private GroupProviderService providerService; static final int POLL_INTERVAL = 10; @@ -139,12 +143,21 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv return; } final Long groupModXid = XID_COUNTER.getAndIncrement(); - GroupModBuilder builder = - GroupModBuilder.builder(groupOperation.buckets(), - groupOperation.groupId(), - groupOperation.groupType(), - sw.factory(), - Optional.of(groupModXid)); + GroupModBuilder builder = null; + if (driverService == null) { + builder = GroupModBuilder.builder(groupOperation.buckets(), + groupOperation.groupId(), + groupOperation.groupType(), + sw.factory(), + Optional.of(groupModXid)); + } else { + builder = GroupModBuilder.builder(groupOperation.buckets(), + groupOperation.groupId(), + groupOperation.groupType(), + sw.factory(), + Optional.of(groupModXid), + Optional.of(driverService)); + } OFGroupMod groupMod = null; switch (groupOperation.opType()) { case ADD: @@ -158,6 +171,7 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv break; default: log.error("Unsupported Group operation"); + return; } sw.sendMsg(groupMod); GroupId groudId = new DefaultGroupId(groupMod.getGroup().getGroupNumber()); diff --git a/framework/src/onos/providers/openflow/pom.xml b/framework/src/onos/providers/openflow/pom.xml index c098a609..1250af61 100644 --- a/framework/src/onos/providers/openflow/pom.xml +++ b/framework/src/onos/providers/openflow/pom.xml @@ -37,6 +37,7 @@ <module>flow</module> <module>group</module> <module>meter</module> + <module>base</module> <module>app</module> </modules> diff --git a/framework/src/onos/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java b/framework/src/onos/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java index 10e745e3..d573458e 100644 --- a/framework/src/onos/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java +++ b/framework/src/onos/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java @@ -27,6 +27,7 @@ import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.ReferenceCardinality; import org.apache.felix.scr.annotations.Service; import org.onlab.packet.ChassisId; +import org.onlab.packet.IpAddress; import org.onosproject.net.DefaultAnnotations; import org.onosproject.net.Device; import org.onosproject.net.DeviceId; @@ -40,6 +41,7 @@ import org.onosproject.net.device.DeviceProviderService; import org.onosproject.net.device.DeviceService; import org.onosproject.net.provider.AbstractProvider; import org.onosproject.net.provider.ProviderId; +import org.onosproject.ovsdb.controller.OvsdbClientService; import org.onosproject.ovsdb.controller.OvsdbController; import org.onosproject.ovsdb.controller.OvsdbNodeId; import org.onosproject.ovsdb.controller.OvsdbNodeListener; @@ -87,8 +89,14 @@ public class OvsdbDeviceProvider extends AbstractProvider @Override public void triggerProbe(DeviceId deviceId) { - // TODO: This will be implemented later. log.info("Triggering probe on device {}", deviceId); + if (!isReachable(deviceId)) { + log.error("Failed to probe device {}", deviceId); + providerService.deviceDisconnected(deviceId); + return; + } else { + log.trace("Confirmed device {} connection", deviceId); + } } @Override @@ -98,7 +106,8 @@ public class OvsdbDeviceProvider extends AbstractProvider @Override public boolean isReachable(DeviceId deviceId) { - return true; + OvsdbClientService ovsdbClient = controller.getOvsdbClient(changeDeviceIdToNodeId(deviceId)); + return !(ovsdbClient == null || !ovsdbClient.isConnected()); } private class InnerOvsdbNodeListener implements OvsdbNodeListener { @@ -131,4 +140,12 @@ public class OvsdbDeviceProvider extends AbstractProvider } } + + private OvsdbNodeId changeDeviceIdToNodeId(DeviceId deviceId) { + String[] strings = deviceId.toString().split(":"); + if (strings.length < 1) { + return null; + } + return new OvsdbNodeId(IpAddress.valueOf(strings[1]), 0); + } } diff --git a/framework/src/onos/tools/package/maven-plugin/pom.xml b/framework/src/onos/tools/package/maven-plugin/pom.xml index 54839b11..c2b5d8ae 100644 --- a/framework/src/onos/tools/package/maven-plugin/pom.xml +++ b/framework/src/onos/tools/package/maven-plugin/pom.xml @@ -85,6 +85,11 @@ <artifactId>jackson-annotations</artifactId> <version>2.4.2</version> </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>2.4</version> + </dependency> </dependencies> <build> diff --git a/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java b/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java index 5558b13a..09cf4dd9 100644 --- a/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java +++ b/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java @@ -163,7 +163,7 @@ public class OnosAppMojo extends AbstractMojo { origin = origin != null ? origin : DEFAULT_ORIGIN; requiredApps = (String) project.getProperties().get(ONOS_APP_REQUIRES); - requiredApps = requiredApps == null ? "" : requiredApps; + requiredApps = requiredApps == null ? "" : requiredApps.replaceAll("[\\s]", ""); if (appFile.exists()) { loadAppFile(appFile); diff --git a/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java b/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java index ea847459..a75127a3 100644 --- a/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java +++ b/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java @@ -18,6 +18,7 @@ package org.onosproject.maven; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.google.common.base.Charsets; import com.google.common.io.ByteStreams; import com.google.common.io.Files; import com.thoughtworks.qdox.JavaProjectBuilder; @@ -124,11 +125,13 @@ public class OnosSwaggerMojo extends AbstractMojo { ObjectNode root = initializeRoot(); ArrayNode tags = mapper.createArrayNode(); ObjectNode paths = mapper.createObjectNode(); + ObjectNode definitions = mapper.createObjectNode(); root.set("tags", tags); root.set("paths", paths); + root.set("definitions", definitions); - builder.getClasses().forEach(jc -> processClass(jc, paths, tags)); + builder.getClasses().forEach(jc -> processClass(jc, paths, tags, definitions)); if (paths.size() > 0) { getLog().info("Generating ONOS REST API documentation..."); @@ -172,7 +175,7 @@ public class OnosSwaggerMojo extends AbstractMojo { // Checks whether javaClass has a path tag associated with it and if it does // processes its methods and creates a tag for the class on the root - void processClass(JavaClass javaClass, ObjectNode paths, ArrayNode tags) { + void processClass(JavaClass javaClass, ObjectNode paths, ArrayNode tags, ObjectNode definitions) { // If the class does not have a Path tag then ignore it JavaAnnotation annotation = getPathAnnotation(javaClass); if (annotation == null) { @@ -199,7 +202,7 @@ public class OnosSwaggerMojo extends AbstractMojo { ArrayNode tagArray = mapper.createArrayNode(); tagArray.add(tagPath); - processAllMethods(javaClass, resourcePath, paths, tagArray); + processAllMethods(javaClass, resourcePath, paths, tagArray, definitions); } private JavaAnnotation getPathAnnotation(JavaClass javaClass) { @@ -211,7 +214,7 @@ public class OnosSwaggerMojo extends AbstractMojo { // Checks whether a class's methods are REST methods and then places all the // methods under a specific path into the paths node private void processAllMethods(JavaClass javaClass, String resourcePath, - ObjectNode paths, ArrayNode tagArray) { + ObjectNode paths, ArrayNode tagArray, ObjectNode definitions) { // map of the path to its methods represented by an ObjectNode Map<String, ObjectNode> pathMap = new HashMap<>(); @@ -221,7 +224,7 @@ public class OnosSwaggerMojo extends AbstractMojo { if (name.equals(POST) || name.equals(GET) || name.equals(DELETE) || name.equals(PUT)) { // substring(12) removes "javax.ws.rs." String method = annotation.getType().toString().substring(12).toLowerCase(); - processRestMethod(javaMethod, method, pathMap, resourcePath, tagArray); + processRestMethod(javaMethod, method, pathMap, resourcePath, tagArray, definitions); } }); }); @@ -236,9 +239,10 @@ public class OnosSwaggerMojo extends AbstractMojo { private void processRestMethod(JavaMethod javaMethod, String method, Map<String, ObjectNode> pathMap, - String resourcePath, ArrayNode tagArray) { + String resourcePath, ArrayNode tagArray, ObjectNode definitions) { String fullPath = resourcePath, consumes = "", produces = "", comment = javaMethod.getComment(); + DocletTag tag = javaMethod.getTagByName("rsModel"); for (JavaAnnotation annotation : javaMethod.getAnnotations()) { String name = annotation.getType().getName(); if (name.equals(PATH)) { @@ -256,12 +260,19 @@ public class OnosSwaggerMojo extends AbstractMojo { methodNode.set("tags", tagArray); addSummaryDescriptions(methodNode, comment); - processParameters(javaMethod, methodNode); + addJsonSchemaDefinition(definitions, tag); + addJsonSchemaDefinition(definitions, tag); + + processParameters(javaMethod, methodNode, method, tag); processConsumesProduces(methodNode, "consumes", consumes); processConsumesProduces(methodNode, "produces", produces); - - addResponses(methodNode); + if (tag == null || ((method.toLowerCase().equals("post") || method.toLowerCase().equals("put")) + && !(tag.getParameters().size() > 1))) { + addResponses(methodNode, tag, false); + } else { + addResponses(methodNode, tag, true); + } ObjectNode operations = pathMap.get(fullPath); if (operations == null) { @@ -273,6 +284,24 @@ public class OnosSwaggerMojo extends AbstractMojo { } } + private void addJsonSchemaDefinition(ObjectNode definitions, DocletTag tag) { + File definitionsDirectory = new File(srcDirectory + "/src/main/resources/definitions"); + if (tag != null) { + tag.getParameters().stream().forEach(param -> { + try { + File config = new File(definitionsDirectory.getAbsolutePath() + "/" + + param + ".json"); + String lines = Files.readLines(config, Charsets.UTF_8).stream().reduce((t, u) -> t + u). + get(); + definitions.putPOJO(param, lines); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + } + } + private void processConsumesProduces(ObjectNode methodNode, String type, String io) { if (!io.equals("")) { ArrayNode array = mapper.createArrayNode(); @@ -299,13 +328,19 @@ public class OnosSwaggerMojo extends AbstractMojo { // Temporary solution to add responses to a method // TODO Provide annotations in the web resources for responses and parse them - private void addResponses(ObjectNode methodNode) { + private void addResponses(ObjectNode methodNode, DocletTag tag, boolean responseJson) { ObjectNode responses = mapper.createObjectNode(); methodNode.set("responses", responses); ObjectNode success = mapper.createObjectNode(); success.put("description", "successful operation"); responses.set("200", success); + if (tag != null && responseJson) { + ObjectNode schema = mapper.createObjectNode(); + tag.getParameters().stream().forEach( + param -> schema.put("$ref", "#/definitions/" + param)); + success.set("schema", schema); + } ObjectNode defaultObj = mapper.createObjectNode(); defaultObj.put("description", "Unexpected error"); @@ -329,7 +364,7 @@ public class OnosSwaggerMojo extends AbstractMojo { } // Processes parameters of javaMethod and enters the proper key-values into the methodNode - private void processParameters(JavaMethod javaMethod, ObjectNode methodNode) { + private void processParameters(JavaMethod javaMethod, ObjectNode methodNode, String method, DocletTag tag) { ArrayNode parameters = mapper.createArrayNode(); methodNode.set("parameters", parameters); boolean required = true; @@ -346,7 +381,8 @@ public class OnosSwaggerMojo extends AbstractMojo { if (pathType != null) { //the parameter is a path or query parameter individualParameterNode.put("name", - pathType.getNamedParameter("value").toString().replace("\"", "")); + pathType.getNamedParameter("value") + .toString().replace("\"", "")); if (pathType.getType().getName().equals(PATH_PARAM)) { individualParameterNode.put("in", "path"); } else if (pathType.getType().getName().equals(QUERY_PARAM)) { @@ -357,10 +393,16 @@ public class OnosSwaggerMojo extends AbstractMojo { individualParameterNode.put("name", annotationName); individualParameterNode.put("in", "body"); - // TODO add actual hardcoded schemas and a type - // body parameters must have a schema associated with them - ArrayNode schema = mapper.createArrayNode(); - individualParameterNode.set("schema", schema); + // Adds the reference to the Json model for the input + // that goes in the post or put operation + if (tag != null && (method.toLowerCase().equals("post") || + method.toLowerCase().equals("put"))) { + ObjectNode schema = mapper.createObjectNode(); + tag.getParameters().stream().forEach(param -> { + schema.put("$ref", "#/definitions/" + param); + }); + individualParameterNode.set("schema", schema); + } } for (DocletTag p : javaMethod.getTagsByName("param")) { if (p.getValue().contains(annotationName)) { diff --git a/framework/src/onos/tools/test/bin/onos-check-apps b/framework/src/onos/tools/test/bin/onos-check-apps index dfd6b4ef..5d83e416 100755 --- a/framework/src/onos/tools/test/bin/onos-check-apps +++ b/framework/src/onos/tools/test/bin/onos-check-apps @@ -24,7 +24,7 @@ for attempt in {1..3}; do # Check for differences case ${3:-equals} in equals) diff $aux.1 $aux.2;; - includes) [ $(egrep -c -f $aux.2 $aux.1) -eq $(wc -l $aux.2 | sed "s|$aux.2||g") ];; + includes) [ $(egrep -c -f $aux.2 $aux.1) -ge $(wc -l $aux.2 | sed "s|$aux.2||g") ];; excludes) ! egrep -f $aux.2 $aux.1;; esac diff --git a/framework/src/onos/tools/test/scenarios/setup.xml b/framework/src/onos/tools/test/scenarios/setup.xml index c26c0dea..071db8b9 100644 --- a/framework/src/onos/tools/test/scenarios/setup.xml +++ b/framework/src/onos/tools/test/scenarios/setup.xml @@ -40,7 +40,7 @@ <step name="Check-Components-${#}" exec="onos-check-components ${OC#}" requires="~Wait-for-Start-${#},"/> - <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#}" + <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#} ${ONOS_APPS} includes" requires="~Wait-for-Start-${#}"/> </parallel> </group> diff --git a/framework/src/onos/tools/test/topos/opticalUtils.py b/framework/src/onos/tools/test/topos/opticalUtils.py index 5d955e51..87903cc5 100644 --- a/framework/src/onos/tools/test/topos/opticalUtils.py +++ b/framework/src/onos/tools/test/topos/opticalUtils.py @@ -58,7 +58,7 @@ import os from time import sleep import urllib2 -from mininet.node import Switch, RemoteController +from mininet.node import Switch, OVSSwitch, RemoteController from mininet.topo import Topo from mininet.util import quietRun from mininet.net import Mininet @@ -356,8 +356,18 @@ class LINCSwitch(OpticalSwitch): return configDict @staticmethod - def bootOE(net): - "Start the LINC optical emulator within a mininet instance" + def bootOE(net, domain=None): + """ + Start the LINC optical emulator within a mininet instance + + This involves 1. converting the information stored in Linc* to configs + for both LINC and the network config system, 2. starting Linc, 3. connecting + cross-connects, and finally pushing the network configs to ONOS. + + Inevitably, there are times when we have OVS switches that should not be + under the control of the controller in charge of the Linc switches. We + hint at these by passing domain information. + """ LINCSwitch.opticalJSON = {} linkConfig = [] devices = [] @@ -365,9 +375,11 @@ class LINCSwitch(OpticalSwitch): LINCSwitch.controllers = net.controllers for switch in net.switches: + if domain and switch not in domain: + continue if isinstance(switch, OpticalSwitch): devices.append(switch.json()) - else: + elif isinstance(switch, OVSSwitch): devices.append(LINCSwitch.switchJSON(switch)) LINCSwitch.opticalJSON[ 'devices' ] = devices @@ -450,18 +462,21 @@ class LINCSwitch(OpticalSwitch): opener = urllib2.build_opener(handler) opener.open(url) urllib2.install_opener(opener) + # focus on just checking the state of devices we're interested in + devlist = map( lambda x: x['uri'], devices ) while True: response = json.load(urllib2.urlopen(url)) devs = response.get('devices') - # Wait for all devices to be registered - if (len(devices) != len(devs)): + # Wait for all devices to be registered. There is a chance that this is only a subgraph. + if (len(devices) > len(devs)): continue # Wait for all devices to available available = True for d in devs: - available &= d['available'] + if d['id'] in devlist: + available &= d['available'] if available: break @@ -615,9 +630,11 @@ class LINCSwitch(OpticalSwitch): if isinstance(link, LINCLink): if link.annotations[ 'optical.type' ] == 'cross-connect': tapCount += 1 - while True: - if str(tapCount) == quietRun('ip addr | grep tap | wc -l', shell=True).strip('\n'): + # tapCount can be less than the actual number of taps if the optical network + # is a subgraph of a larger multidomain network. + tapNum = int(quietRun('ip addr | grep tap | wc -l', shell=True).strip('\n')) + if tapCount <= tapNum: return True if timeout: if time >= TIMEOUT: diff --git a/framework/src/onos/utils/catalyst/pom.xml b/framework/src/onos/utils/catalyst/pom.xml index 26508f7b..bd1d52dd 100644 --- a/framework/src/onos/utils/catalyst/pom.xml +++ b/framework/src/onos/utils/catalyst/pom.xml @@ -47,14 +47,8 @@ <configuration> <instructions> <Export-Package> - io.atomix.catalyst.serializer;version="1.0.0-rc4", - io.atomix.catalyst.buffer;version="1.0.0-rc4", - io.atomix.catalyst.transport;version="1.0.0-rc4", + io.atomix.catalyst.* </Export-Package> - <Private-Package> - io.atomix.catalyst.*;version="1.0.0-rc4" - </Private-Package> - </instructions> </configuration> </plugin> diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DefaultHashMap.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DefaultHashMap.java index f9d878ab..d6ddbd56 100644 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DefaultHashMap.java +++ b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DefaultHashMap.java @@ -21,10 +21,10 @@ import java.util.HashMap; /** * HashMap that returns a default value for unmapped keys. */ -public class DefaultHashMap<K, V> extends HashMap<K, V> { +public final class DefaultHashMap<K, V> extends HashMap<K, V> { /** Default value to return when no key binding exists. */ - protected V defaultValue; + protected final V defaultValue; /** * Constructs an empty map with the given default value. diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Tools.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Tools.java index 1b788145..ffefbfd4 100644 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Tools.java +++ b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Tools.java @@ -40,6 +40,7 @@ import java.util.Collection; import java.util.Dictionary; import java.util.List; import java.util.Random; +import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; @@ -144,6 +145,23 @@ public abstract class Tools { } /** + * Returns the specified set if the set is not null and not empty; + * otherwise throws a not found exception. + * + * @param item set to check + * @param message not found message + * @param <T> Set item type + * @return item if not null and not empty + * @throws org.onlab.util.ItemNotFoundException if set is null or empty + */ + public static <T> Set<T> emptyIsNotFound(Set<T> item, String message) { + if (item == null || item.isEmpty()) { + throw new ItemNotFoundException(message); + } + return item; + } + + /** * Returns the specified item if that item is not null; otherwise throws * bad argument exception. * diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java index f49202dd..0d9d94d3 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/AbstractMapper.java @@ -29,6 +29,11 @@ import static com.google.common.base.Strings.isNullOrEmpty; public abstract class AbstractMapper<E extends Throwable> implements ExceptionMapper<E> { /** + * Holds the current exception for use in subclasses. + */ + protected Throwable error; + + /** * Returns the response status to be given when the exception occurs. * * @return response status @@ -37,6 +42,7 @@ public abstract class AbstractMapper<E extends Throwable> implements ExceptionMa @Override public Response toResponse(E exception) { + error = exception; return response(responseStatus(), exception).build(); } @@ -50,6 +56,7 @@ public abstract class AbstractMapper<E extends Throwable> implements ExceptionMa */ protected Response.ResponseBuilder response(Response.Status status, Throwable exception) { + error = exception; ObjectMapper mapper = new ObjectMapper(); String message = messageFrom(exception); ObjectNode result = mapper.createObjectNode() diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java index 5a9050d0..778750e6 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/exceptions/ServerErrorMapper.java @@ -18,13 +18,19 @@ package org.onosproject.rest.exceptions; import javax.ws.rs.core.Response; import javax.ws.rs.ext.Provider; +import org.slf4j.Logger; + +import static org.slf4j.LoggerFactory.getLogger; + /** * Mapper for service not found exceptions to the INTERNAL_SERVER_ERROR response code. */ @Provider public class ServerErrorMapper extends AbstractMapper<RuntimeException> { + private static final Logger log = getLogger(ServerErrorMapper.class); @Override protected Response.Status responseStatus() { + log.warn("Unhandled REST exception", error); return Response.Status.INTERNAL_SERVER_ERROR; } } diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java index 636fc333..b38633bf 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java @@ -44,6 +44,7 @@ public class ApplicationsWebResource extends AbstractWebResource { * Get all installed applications. * Returns array of all installed applications. * + * @rsModel Applications * @return 200 OK */ @GET @@ -56,7 +57,7 @@ public class ApplicationsWebResource extends AbstractWebResource { /** * Get application details. * Returns details of the specified application. - * + * @rsModel Application * @param name application name * @return 200 OK; 404; 401 */ diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java index 312f6e35..16a4dc7f 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java @@ -49,6 +49,7 @@ public class ClusterWebResource extends AbstractWebResource { * Returns array of all cluster nodes. * * @return 200 OK + * @rsModel Cluster */ @GET public Response getClusterNodes() { @@ -62,6 +63,7 @@ public class ClusterWebResource extends AbstractWebResource { * * @param id cluster node identifier * @return 200 OK + * @rsModel ClusterNode */ @GET @Path("{id}") @@ -78,6 +80,7 @@ public class ClusterWebResource extends AbstractWebResource { * @param config cluster definition * @return 200 OK * @throws IOException to signify bad request + * @rsModel ClusterPost */ @POST @Path("configuration") diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java index 05756e5a..23ca46e7 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java @@ -46,6 +46,7 @@ public class DevicesWebResource extends AbstractWebResource { * Returns array of all discovered infrastructure devices. * * @return 200 OK + * @rsModel DevicesGet */ @GET public Response getDevices() { @@ -59,6 +60,7 @@ public class DevicesWebResource extends AbstractWebResource { * * @param id device identifier * @return 200 OK + * @rsModel DeviceGet */ @GET @Path("{id}") @@ -89,6 +91,7 @@ public class DevicesWebResource extends AbstractWebResource { * Get ports of infrastructure device. * Returns details of the specified infrastructure device. * + * @rsModel DeviceGetPorts * @param id device identifier * @return 200 OK */ diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java index 0e88e34e..252a3ba7 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java @@ -58,7 +58,7 @@ public class FlowsWebResource extends AbstractWebResource { /** * Get all flow entries. Returns array of all flow rules in the system. - * + * @rsModel Flows * @return array of all the intents in the system */ @GET @@ -80,7 +80,7 @@ public class FlowsWebResource extends AbstractWebResource { /** * Get flow entries of a device. Returns array of all flow rules for the * specified device. - * + * @rsModel Flows * @param deviceId device identifier * @return flow data as an array */ @@ -103,7 +103,7 @@ public class FlowsWebResource extends AbstractWebResource { /** * Get flow rule. Returns the flow entry specified by the device id and * flow rule id. - * + * @rsModel Flows * @param deviceId device identifier * @param flowId flow rule identifier * @return flow data as an array @@ -130,7 +130,7 @@ public class FlowsWebResource extends AbstractWebResource { /** * Create new flow rule. Creates and installs a new flow rule for the * specified device. - * + * @rsModel FlowsPost * @param deviceId device identifier * @param stream flow rule JSON * @return status of the request - CREATED if the JSON is correct, diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java index b89f5add..455e4929 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java @@ -70,6 +70,7 @@ public class HostsWebResource extends AbstractWebResource { * Returns array of all known end-station hosts. * * @return 200 OK + * @rsModel Hosts */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -85,6 +86,7 @@ public class HostsWebResource extends AbstractWebResource { * * @param id host identifier * @return 200 OK + * @rsModel Host */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -103,6 +105,7 @@ public class HostsWebResource extends AbstractWebResource { * @param mac host MAC address * @param vlan host VLAN identifier * @return 200 OK + * @rsModel Host */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -122,6 +125,7 @@ public class HostsWebResource extends AbstractWebResource { * @param stream input JSON * @return status of the request - CREATED if the JSON is correct, * BAD_REQUEST if the JSON is invalid + * @rsModel HostPut */ @POST @Consumes(MediaType.APPLICATION_JSON) @@ -195,6 +199,7 @@ public class HostsWebResource extends AbstractWebResource { while (ipStrings.hasNext()) { ips.add(IpAddress.valueOf(ipStrings.next().asText())); } + //TODO remove elements from json node after reading them SparseAnnotations annotations = annotations(node); // Update host inventory diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java index c6270199..e36ea8af 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java @@ -44,7 +44,7 @@ public class LinksWebResource extends AbstractWebResource { /** * Get infrastructure links. * Returns array of all links, or links for the specified device or port. - * + * @rsModel LinksGet * @param deviceId (optional) device identifier * @param port (optional) port number * @param direction (optional) direction qualifier diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java index 808fcc16..69c0b6a3 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java @@ -15,10 +15,9 @@ */ package org.onosproject.rest.resources; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.onosproject.net.config.NetworkConfigService; -import org.onosproject.net.config.SubjectFactory; -import org.onosproject.rest.AbstractWebResource; +import java.io.IOException; +import java.io.InputStream; +import java.util.Set; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; @@ -29,8 +28,16 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import java.io.IOException; -import java.io.InputStream; + +import org.onosproject.net.config.Config; +import org.onosproject.net.config.NetworkConfigService; +import org.onosproject.net.config.SubjectFactory; +import org.onosproject.rest.AbstractWebResource; + +import com.fasterxml.jackson.databind.node.ObjectNode; + +import static org.onlab.util.Tools.emptyIsNotFound; +import static org.onlab.util.Tools.nullIsNotFound; /** * Manage network configurations. @@ -38,9 +45,30 @@ import java.io.InputStream; @Path("network/configuration") public class NetworkConfigWebResource extends AbstractWebResource { + + private String subjectClassNotFoundErrorString(String subjectClassKey) { + return "Config for '" + subjectClassKey + "' not found"; + } + + private String subjectNotFoundErrorString(String subjectClassKey, + String subjectKey) { + return "Config for '" + + subjectClassKey + "/" + subjectKey + + "' not found"; + } + + private String configKeyNotFoundErrorString(String subjectClassKey, + String subjectKey, + String configKey) { + return "Config for '" + + subjectClassKey + "/" + subjectKey + "/" + configKey + + "' not found"; + } + /** * Get entire network configuration base. * + * @rsModel NetCfgGet * @return network configuration JSON */ @GET @@ -70,7 +98,9 @@ public class NetworkConfigWebResource extends AbstractWebResource { public Response download(@PathParam("subjectClassKey") String subjectClassKey) { NetworkConfigService service = get(NetworkConfigService.class); ObjectNode root = mapper().createObjectNode(); - SubjectFactory subjectFactory = service.getSubjectFactory(subjectClassKey); + SubjectFactory subjectFactory = + nullIsNotFound(service.getSubjectFactory(subjectClassKey), + subjectClassNotFoundErrorString(subjectClassKey)); produceJson(service, root, subjectFactory, subjectFactory.subjectClass()); return ok(root).build(); } @@ -90,8 +120,12 @@ public class NetworkConfigWebResource extends AbstractWebResource { @PathParam("subjectKey") String subjectKey) { NetworkConfigService service = get(NetworkConfigService.class); ObjectNode root = mapper().createObjectNode(); - SubjectFactory subjectFactory = service.getSubjectFactory(subjectClassKey); - produceSubjectJson(service, root, subjectFactory.createSubject(subjectKey)); + SubjectFactory subjectFactory = + nullIsNotFound(service.getSubjectFactory(subjectClassKey), + subjectClassNotFoundErrorString(subjectClassKey)); + produceSubjectJson(service, root, subjectFactory.createSubject(subjectKey), + true, + subjectNotFoundErrorString(subjectClassKey, subjectKey)); return ok(root).build(); } @@ -111,26 +145,47 @@ public class NetworkConfigWebResource extends AbstractWebResource { @PathParam("subjectKey") String subjectKey, @PathParam("configKey") String configKey) { NetworkConfigService service = get(NetworkConfigService.class); - return ok(service.getConfig(service.getSubjectFactory(subjectClassKey).createSubject(subjectKey), - service.getConfigClass(subjectClassKey, configKey)).node()).build(); + + Object subject = + nullIsNotFound(service.getSubjectFactory(subjectClassKey) + .createSubject(subjectKey), + subjectNotFoundErrorString(subjectClassKey, subjectKey)); + + Class configClass = + nullIsNotFound(service.getConfigClass(subjectClassKey, configKey), + configKeyNotFoundErrorString(subjectClassKey, subjectKey, configKey)); + Config config = + nullIsNotFound(service.getConfig(subject, configClass), + configKeyNotFoundErrorString(subjectClassKey, + subjectKey, + configKey)); + return ok(config.node()).build(); } @SuppressWarnings("unchecked") private void produceJson(NetworkConfigService service, ObjectNode node, SubjectFactory subjectFactory, Class subjectClass) { service.getSubjects(subjectClass).forEach(s -> - produceSubjectJson(service, newObject(node, subjectFactory.subjectKey(s)), s)); + produceSubjectJson(service, newObject(node, subjectFactory.subjectKey(s)), s, false, "")); } private void produceSubjectJson(NetworkConfigService service, ObjectNode node, - Object subject) { - service.getConfigs(subject).forEach(c -> node.set(c.key(), c.node())); + Object subject, + boolean emptyIsError, + String emptyErrorMessage) { + Set<? extends Config<Object>> configs = service.getConfigs(subject); + if (emptyIsError) { + // caller wants an empty set to be a 404 + configs = emptyIsNotFound(configs, emptyErrorMessage); + } + configs.forEach(c -> node.set(c.key(), c.node())); } /** * Upload bulk network configuration. * + * @rsModel NetCfgGet * @param request network configuration JSON rooted at the top node * @return empty response * @throws IOException if unable to parse the request @@ -253,17 +308,15 @@ public class NetworkConfigWebResource extends AbstractWebResource { * Clear all network configurations for a subject class. * * @param subjectClassKey subject class key - * @return empty response */ @DELETE @Path("{subjectClassKey}") @SuppressWarnings("unchecked") - public Response delete(@PathParam("subjectClassKey") String subjectClassKey) { + public void delete(@PathParam("subjectClassKey") String subjectClassKey) { NetworkConfigService service = get(NetworkConfigService.class); - service.getSubjects(service.getSubjectFactory(subjectClassKey).getClass()) + service.getSubjects(service.getSubjectFactory(subjectClassKey).subjectClass()) .forEach(subject -> service.getConfigs(subject) .forEach(config -> service.removeConfig(subject, config.getClass()))); - return Response.ok().build(); } /** @@ -271,17 +324,15 @@ public class NetworkConfigWebResource extends AbstractWebResource { * * @param subjectClassKey subjectKey class key * @param subjectKey subjectKey key - * @return empty response */ @DELETE @Path("{subjectClassKey}/{subjectKey}") @SuppressWarnings("unchecked") - public Response delete(@PathParam("subjectClassKey") String subjectClassKey, + public void delete(@PathParam("subjectClassKey") String subjectClassKey, @PathParam("subjectKey") String subjectKey) { NetworkConfigService service = get(NetworkConfigService.class); Object s = service.getSubjectFactory(subjectClassKey).createSubject(subjectKey); service.getConfigs(s).forEach(c -> service.removeConfig(s, c.getClass())); - return Response.ok().build(); } /** @@ -290,18 +341,16 @@ public class NetworkConfigWebResource extends AbstractWebResource { * @param subjectClassKey subjectKey class key * @param subjectKey subjectKey key * @param configKey configuration class key - * @return empty response */ @DELETE @Path("{subjectClassKey}/{subjectKey}/{configKey}") @SuppressWarnings("unchecked") - public Response delete(@PathParam("subjectClassKey") String subjectClassKey, + public void delete(@PathParam("subjectClassKey") String subjectClassKey, @PathParam("subjectKey") String subjectKey, @PathParam("configKey") String configKey) { NetworkConfigService service = get(NetworkConfigService.class); service.removeConfig(service.getSubjectFactory(subjectClassKey).createSubject(subjectKey), service.getConfigClass(subjectClassKey, configKey)); - return Response.ok().build(); } } diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java index 9714690c..c14b4ec2 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java @@ -60,7 +60,7 @@ public class PathsWebResource extends AbstractWebResource { /** * Get all shortest paths between any two hosts or devices. * Returns array of all shortest paths between any two elements. - * + * @rsModel Paths * @param src source identifier * @param dst destination identifier * @return path data @@ -79,7 +79,7 @@ public class PathsWebResource extends AbstractWebResource { /** * Get all shortest disjoint paths between any two hosts or devices. * Returns array of all shortest disjoint paths between any two elements. - * + * @rsModel Paths * @param src source identifier * @param dst destination identifier * @return path data diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java index c91cb6d0..7a452044 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java @@ -59,7 +59,7 @@ public class StatisticsWebResource extends AbstractWebResource { /** * Get load statistics for all links or for a specific link. - * + * @rsModel StatisticsFlowsLink * @param deviceId (optional) device ID for a specific link * @param port (optional) port number for a specified link * @return JSON encoded array lof Load objects @@ -101,7 +101,7 @@ public class StatisticsWebResource extends AbstractWebResource { /** * Get table statistics for all tables of all devices. - * + * @rsModel StatisticsFlowsTables * @return JSON encoded array of table statistics */ @GET @@ -111,11 +111,11 @@ public class StatisticsWebResource extends AbstractWebResource { final FlowRuleService service = get(FlowRuleService.class); final Iterable<Device> devices = get(DeviceService.class).getDevices(); final ObjectNode root = mapper().createObjectNode(); - final ArrayNode rootArrayNode = root.putArray("device-table-statistics"); + final ArrayNode rootArrayNode = root.putArray("statistics"); for (final Device device : devices) { final ObjectNode deviceStatsNode = mapper().createObjectNode(); deviceStatsNode.put("device", device.id().toString()); - final ArrayNode statisticsNode = deviceStatsNode.putArray("table-statistics"); + final ArrayNode statisticsNode = deviceStatsNode.putArray("table"); final Iterable<TableStatisticsEntry> tableStatsEntries = service.getFlowTableStatistics(device.id()); if (tableStatsEntries != null) { for (final TableStatisticsEntry entry : tableStatsEntries) { @@ -130,7 +130,7 @@ public class StatisticsWebResource extends AbstractWebResource { /** * Get table statistics for all tables of a specified device. - * + * @rsModel StatisticsFlowsTables * @param deviceId device ID * @return JSON encoded array of table statistics */ @@ -142,11 +142,11 @@ public class StatisticsWebResource extends AbstractWebResource { final Iterable<TableStatisticsEntry> tableStatisticsEntries = service.getFlowTableStatistics(DeviceId.deviceId(deviceId)); final ObjectNode root = mapper().createObjectNode(); - final ArrayNode rootArrayNode = root.putArray("table-statistics"); + final ArrayNode rootArrayNode = root.putArray("statistics"); final ObjectNode deviceStatsNode = mapper().createObjectNode(); deviceStatsNode.put("device", deviceId); - final ArrayNode statisticsNode = deviceStatsNode.putArray("table-statistics"); + final ArrayNode statisticsNode = deviceStatsNode.putArray("table"); for (final TableStatisticsEntry entry : tableStatisticsEntries) { statisticsNode.add(codec(TableStatisticsEntry.class).encode(entry, this)); } diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java index f6ae8253..d51bd5a0 100644 --- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java +++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java @@ -50,6 +50,7 @@ public class TopologyWebResource extends AbstractWebResource { * Get overview of current topology. * * @return topology overview + * @rsModel Topology */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -63,6 +64,7 @@ public class TopologyWebResource extends AbstractWebResource { * Get overview of topology SCCs. * * @return topology clusters overview + * @rsModel TopologyClusters */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -80,6 +82,7 @@ public class TopologyWebResource extends AbstractWebResource { * * @param clusterId id of the cluster to query * @return topology cluster details + * @rsModel TopologyCluster */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -103,6 +106,7 @@ public class TopologyWebResource extends AbstractWebResource { * * @param clusterId id of the cluster to query * @return topology cluster devices + * @rsModel TopologyClustersDevices */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -126,6 +130,7 @@ public class TopologyWebResource extends AbstractWebResource { * * @param clusterId id of the cluster to query * @return topology cluster links + * @rsModel LinksGet */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -136,7 +141,7 @@ public class TopologyWebResource extends AbstractWebResource { List<Link> links = Lists.newArrayList(get(TopologyService.class) - .getClusterLinks(topology, cluster)); + .getClusterLinks(topology, cluster)); return ok(encodeArray(Link.class, "links", links)).build(); } @@ -174,7 +179,8 @@ public class TopologyWebResource extends AbstractWebResource { * * @param connectPointString deviceid:portnumber * @return JSON representation of true if the connect point is broadcast, - * false otherwise + * false otherwise + * @rsModel TopologyBroadcast */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -188,8 +194,8 @@ public class TopologyWebResource extends AbstractWebResource { boolean isBroadcast = get(TopologyService.class).isBroadcastPoint(topology, connectPoint); return ok(mapper() - .createObjectNode() - .put("broadcast", isBroadcast)) + .createObjectNode() + .put("broadcast", isBroadcast)) .build(); } @@ -198,7 +204,8 @@ public class TopologyWebResource extends AbstractWebResource { * * @param connectPointString deviceid:portnumber * @return JSON representation of true if the connect point is broadcast, - * false otherwise + * false otherwise + * @rsModel TopologyInfrastructure */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -212,8 +219,8 @@ public class TopologyWebResource extends AbstractWebResource { boolean isInfrastructure = get(TopologyService.class).isInfrastructure(topology, connectPoint); return ok(mapper() - .createObjectNode() - .put("infrastructure", isInfrastructure)) + .createObjectNode() + .put("infrastructure", isInfrastructure)) .build(); } diff --git a/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java b/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java index 8da81016..f35b6c03 100644 --- a/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java +++ b/framework/src/onos/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java @@ -291,8 +291,8 @@ public abstract class TopologyViewMessageHandlerBase extends UiMessageHandler { // Produces a host event message to the client. protected ObjectNode hostMessage(HostEvent event) { Host host = event.subject(); + Host prevHost = event.prevSubject(); String hostType = host.annotations().value(AnnotationKeys.TYPE); - HostLocation prevLoc = event.prevLocation(); ObjectNode payload = objectNode() .put("id", host.id().toString()) @@ -300,8 +300,8 @@ public abstract class TopologyViewMessageHandlerBase extends UiMessageHandler { .put("ingress", compactLinkString(edgeLink(host, true))) .put("egress", compactLinkString(edgeLink(host, false))); payload.set("cp", hostConnect(host.location())); - if (prevLoc != null) { - payload.set("prevCp", hostConnect(event.prevLocation())); + if (prevHost != null && prevHost.location() != null) { + payload.set("prevCp", hostConnect(prevHost.location())); } payload.set("labels", labels(ip(host.ipAddresses()), host.mac().toString())); diff --git a/framework/src/onos/web/gui/src/main/webapp/app/fw/svg/icon.js b/framework/src/onos/web/gui/src/main/webapp/app/fw/svg/icon.js index 12536361..cc26360f 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/fw/svg/icon.js +++ b/framework/src/onos/web/gui/src/main/webapp/app/fw/svg/icon.js @@ -51,6 +51,7 @@ devIcon_SWITCH: 'switch', devIcon_ROADM: 'roadm', + deviceTable: 'switch', flowTable: 'flowTable', portTable: 'portTable', groupTable: 'groupTable', diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.css b/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.css index e0e9cf57..8d8a582b 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.css +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.css @@ -23,7 +23,20 @@ } #ov-device div.ctrl-btns { - width: 240px; +} + +.light #ov-device .current-view use { + fill: white; +} +.dark #ov-device .current-view use { + fill: #304860; +} + +.light #ov-device .current-view rect { + fill: deepskyblue; +} +.dark #ov-device .current-view rect { + fill: #eee; } /* More in generic panel.css */ diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.html b/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.html index 63a04db8..6f1813a0 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.html +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/device/device.html @@ -9,6 +9,9 @@ ng-click="toggleRefresh()"></div> <div class="separator"></div> + <div ng-class="{'current-view': !!selId}" + icon icon-id="deviceTable" icon-size="36"></div> + <div ng-class="{active: !!selId}" icon icon-id="flowTable" icon-size="36" tooltip tt-msg="flowTip" diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.css b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.css index 4aa96210..30226222 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.css +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.css @@ -23,7 +23,6 @@ } #ov-flow div.ctrl-btns { - width: 240px; } .light #ov-flow .current-view use { diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.html b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.html index 5fce98cf..8fc1839e 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.html +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.html @@ -13,6 +13,11 @@ <div class="separator"></div> + <div class="active" + icon icon-id="deviceTable" icon-size="36" + tooltip tt-msg="deviceTip" + ng-click="nav('device')"></div> + <div class="current-view" icon icon-id="flowTable" icon-size="36"></div> diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.js b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.js index 15678d5e..7bb988a2 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.js +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/flow/flow.js @@ -37,6 +37,7 @@ fs = _fs_; tbs = _tbs_; ns = _ns_; + $scope.deviceTip = 'Show device table'; $scope.portTip = 'Show port view for this device'; $scope.groupTip = 'Show group view for this device'; diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.css b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.css index 42f1c31d..6773aa83 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.css +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.css @@ -23,7 +23,6 @@ } #ov-group div.ctrl-btns { - width: 240px; } .light #ov-group .current-view use { diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.html b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.html index b963f469..93484dc8 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.html +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.html @@ -30,6 +30,11 @@ <div class="separator"></div> <div class="active" + icon icon-id="deviceTable" icon-size="36" + tooltip tt-msg="deviceTip" + ng-click="nav('device')"></div> + + <div class="active" icon icon-id="flowTable" icon-size="36" tooltip tt-msg="flowTip" ng-click="nav('flow')"></div> diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.js b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.js index 2510190b..2cb1f0c4 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.js +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/group/group.js @@ -37,6 +37,7 @@ fs = _fs_; tbs = _tbs_; ns = _ns_; + $scope.deviceTip = 'Show device table'; $scope.flowTip = 'Show flow view for this device'; $scope.portTip = 'Show port view for this device'; diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.css b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.css index 7fcfee3f..2aaacfce 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.css +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.css @@ -23,7 +23,6 @@ } #ov-port div.ctrl-btns { - width: 240px; } .light #ov-port .current-view use { diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.html b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.html index 8eecb9d6..fa79e5ea 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.html +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.html @@ -30,6 +30,11 @@ <div class="separator"></div> <div class="active" + icon icon-id="deviceTable" icon-size="36" + tooltip tt-msg="deviceTip" + ng-click="nav('device')"></div> + + <div class="active" icon icon-id="flowTable" icon-size="36" tooltip tt-msg="flowTip" ng-click="nav('flow')"></div> diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.js b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.js index a157c5be..1e8585dd 100644 --- a/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.js +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/port/port.js @@ -37,6 +37,7 @@ fs = _fs_; tbs = _tbs_; ns = _ns_; + $scope.deviceTip = 'Show device table'; $scope.flowTip = 'Show flow view for this device'; $scope.groupTip = 'Show group view for this device'; |