From b731e2f1dd0972409b136aebc7b463dd72c9cfad Mon Sep 17 00:00:00 2001 From: CNlucius Date: Tue, 13 Sep 2016 11:40:12 +0800 Subject: ONOSFW-171 O/S-SFC-ONOS scenario documentation Change-Id: I51ae1cf736ea24ab6680f8edca1b2bf5dd598365 Signed-off-by: CNlucius --- framework/src/onos/protocols/bgp/api/pom.xml | 90 -- .../org/onosproject/bgp/controller/BgpCfg.java | 297 ---- .../onosproject/bgp/controller/BgpConnectPeer.java | 28 - .../onosproject/bgp/controller/BgpController.java | 131 -- .../org/onosproject/bgp/controller/BgpDpid.java | 130 -- .../java/org/onosproject/bgp/controller/BgpId.java | 121 -- .../bgp/controller/BgpLinkListener.java | 35 - .../onosproject/bgp/controller/BgpLocalRib.java | 60 - .../bgp/controller/BgpNodeListener.java | 35 - .../onosproject/bgp/controller/BgpPacketStats.java | 52 - .../org/onosproject/bgp/controller/BgpPeer.java | 113 -- .../org/onosproject/bgp/controller/BgpPeerCfg.java | 180 --- .../onosproject/bgp/controller/BgpPeerManager.java | 54 - .../onosproject/bgp/controller/BgpSessionInfo.java | 70 - .../onosproject/bgp/controller/package-info.java | 20 - framework/src/onos/protocols/bgp/bgpio/pom.xml | 76 - .../bgpio/exceptions/BgpParseException.java | 106 -- .../onosproject/bgpio/exceptions/package-info.java | 20 - .../onosproject/bgpio/protocol/BgpFactories.java | 82 - .../org/onosproject/bgpio/protocol/BgpFactory.java | 60 - .../bgpio/protocol/BgpKeepaliveMsg.java | 48 - .../org/onosproject/bgpio/protocol/BgpLSNlri.java | 54 - .../onosproject/bgpio/protocol/BgpLinkLsNlri.java | 47 - .../org/onosproject/bgpio/protocol/BgpMessage.java | 71 - .../bgpio/protocol/BgpMessageReader.java | 36 - .../bgpio/protocol/BgpMessageWriter.java | 36 - .../onosproject/bgpio/protocol/BgpNodeLSNlri.java | 30 - .../bgpio/protocol/BgpNotificationMsg.java | 77 - .../org/onosproject/bgpio/protocol/BgpOpenMsg.java | 127 -- .../bgpio/protocol/BgpPrefixLSNlri.java | 40 - .../org/onosproject/bgpio/protocol/BgpType.java | 45 - .../onosproject/bgpio/protocol/BgpUpdateMsg.java | 48 - .../org/onosproject/bgpio/protocol/BgpVersion.java | 45 - .../onosproject/bgpio/protocol/IGPRouterID.java | 23 - .../org/onosproject/bgpio/protocol/NlriType.java | 45 - .../org/onosproject/bgpio/protocol/Writeable.java | 35 - .../protocol/linkstate/BgpLinkLSIdentifier.java | 297 ---- .../protocol/linkstate/BgpLinkLsNlriVer4.java | 210 --- .../protocol/linkstate/BgpNodeLSIdentifier.java | 122 -- .../protocol/linkstate/BgpNodeLSNlriVer4.java | 212 --- .../linkstate/BgpPrefixIPv4LSNlriVer4.java | 205 --- .../protocol/linkstate/BgpPrefixLSIdentifier.java | 272 ---- .../bgpio/protocol/linkstate/NodeDescriptors.java | 264 --- .../protocol/linkstate/PathAttrNlriDetails.java | 135 -- .../linkstate/PathAttrNlriDetailsLocalRib.java | 122 -- .../bgpio/protocol/linkstate/package-info.java | 20 - .../onosproject/bgpio/protocol/package-info.java | 20 - .../bgpio/protocol/ver4/BgpFactoryVer4.java | 58 - .../bgpio/protocol/ver4/BgpKeepaliveMsgVer4.java | 157 -- .../bgpio/protocol/ver4/BgpMessageVer4.java | 111 -- .../protocol/ver4/BgpNotificationMsgVer4.java | 265 --- .../bgpio/protocol/ver4/BgpOpenMsgVer4.java | 518 ------ .../bgpio/protocol/ver4/BgpPathAttributes.java | 200 --- .../bgpio/protocol/ver4/BgpUpdateMsgVer4.java | 285 ---- .../bgpio/protocol/ver4/package-info.java | 20 - .../org/onosproject/bgpio/types/AreaIDTlv.java | 130 -- .../java/org/onosproject/bgpio/types/As4Path.java | 175 -- .../java/org/onosproject/bgpio/types/AsPath.java | 214 --- .../bgpio/types/AutonomousSystemTlv.java | 130 -- .../org/onosproject/bgpio/types/BgpErrorType.java | 74 - .../org/onosproject/bgpio/types/BgpHeader.java | 161 -- .../bgpio/types/BgpLSIdentifierTlv.java | 131 -- .../org/onosproject/bgpio/types/BgpValueType.java | 47 - .../bgpio/types/FourOctetAsNumCapabilityTlv.java | 120 -- .../bgpio/types/IPReachabilityInformationTlv.java | 165 -- .../onosproject/bgpio/types/IPv4AddressTlv.java | 133 -- .../onosproject/bgpio/types/IPv6AddressTlv.java | 133 -- .../onosproject/bgpio/types/IsIsNonPseudonode.java | 124 -- .../onosproject/bgpio/types/IsIsPseudonode.java | 146 -- .../bgpio/types/LinkLocalRemoteIdentifiersTlv.java | 142 -- .../bgpio/types/LinkStateAttributes.java | 314 ---- .../org/onosproject/bgpio/types/LocalPref.java | 121 -- .../main/java/org/onosproject/bgpio/types/Med.java | 121 -- .../org/onosproject/bgpio/types/MpReachNlri.java | 225 --- .../org/onosproject/bgpio/types/MpUnReachNlri.java | 210 --- .../types/MultiProtocolExtnCapabilityTlv.java | 166 -- .../java/org/onosproject/bgpio/types/NextHop.java | 139 -- .../onosproject/bgpio/types/OSPFNonPseudonode.java | 121 -- .../onosproject/bgpio/types/OSPFPseudonode.java | 132 -- .../onosproject/bgpio/types/OSPFRouteTypeTlv.java | 168 -- .../java/org/onosproject/bgpio/types/Origin.java | 168 -- .../bgpio/types/RouteDistinguisher.java | 79 - .../bgpio/types/attr/BgpAttrNodeFlagBitTlv.java | 199 --- .../bgpio/types/attr/BgpAttrNodeIsIsAreaId.java | 136 -- .../types/attr/BgpAttrNodeMultiTopologyId.java | 164 -- .../bgpio/types/attr/BgpAttrNodeName.java | 135 -- .../bgpio/types/attr/BgpAttrOpaqueNode.java | 138 -- .../bgpio/types/attr/BgpAttrRouterIdV4.java | 140 -- .../bgpio/types/attr/BgpAttrRouterIdV6.java | 143 -- .../bgpio/types/attr/BgpLinkAttrIgpMetric.java | 178 --- .../types/attr/BgpLinkAttrIsIsAdminstGrp.java | 136 -- .../types/attr/BgpLinkAttrMaxLinkBandwidth.java | 156 -- .../types/attr/BgpLinkAttrMplsProtocolMask.java | 158 -- .../bgpio/types/attr/BgpLinkAttrName.java | 134 -- .../bgpio/types/attr/BgpLinkAttrOpaqLnkAttrib.java | 139 -- .../types/attr/BgpLinkAttrProtectionType.java | 246 --- .../bgpio/types/attr/BgpLinkAttrSrlg.java | 136 -- .../types/attr/BgpLinkAttrTeDefaultMetric.java | 138 -- .../attr/BgpLinkAttrUnRsrvdLinkBandwidth.java | 163 -- .../bgpio/types/attr/BgpPrefixAttrExtRouteTag.java | 145 -- .../bgpio/types/attr/BgpPrefixAttrIgpFlags.java | 204 --- .../bgpio/types/attr/BgpPrefixAttrMetric.java | 137 -- .../bgpio/types/attr/BgpPrefixAttrOpaqueData.java | 139 -- .../bgpio/types/attr/BgpPrefixAttrOspfFwdAddr.java | 193 --- .../bgpio/types/attr/BgpPrefixAttrRouteTag.java | 142 -- .../onosproject/bgpio/types/attr/package-info.java | 20 - .../org/onosproject/bgpio/types/package-info.java | 20 - .../java/org/onosproject/bgpio/util/Constants.java | 37 - .../bgpio/util/UnSupportedAttribute.java | 51 - .../org/onosproject/bgpio/util/Validation.java | 223 --- .../org/onosproject/bgpio/util/package-info.java | 20 - .../bgp/BgpLinkAttrMaxLinkBandwidthTest.java | 44 - .../bgp/BgpLinkAttrTeDefaultMetricTest.java | 42 - .../bgp/BgpPrefixAttrOpaqueDataTest.java | 42 - .../bgpio/protocol/BgpKeepaliveMsgTest.java | 66 - .../bgpio/protocol/BgpNotificationMsgTest.java | 224 --- .../onosproject/bgpio/protocol/BgpOpenMsgTest.java | 314 ---- .../bgpio/protocol/BgpUpdateMsgTest.java | 1496 ----------------- .../org/onosproject/bgpio/types/AreaIdTest.java | 39 - .../org/onosproject/bgpio/types/As4PathTest.java | 55 - .../org/onosproject/bgpio/types/AsPathTest.java | 55 - .../bgpio/types/AutonomousSystemTest.java | 39 - .../bgpio/types/BgpLSIdentifierTest.java | 39 - .../bgpio/types/IPReachabilityInformationTest.java | 40 - .../onosproject/bgpio/types/IPv4AddressTest.java | 40 - .../onosproject/bgpio/types/IPv6AddressTest.java | 40 - .../bgpio/types/IsIsNonPseudonodeTest.java | 39 - .../bgpio/types/IsIsPseudonodeTest.java | 39 - .../types/LinkLocalRemoteIdentifiersTest.java | 39 - .../org/onosproject/bgpio/types/LocalPrefTest.java | 36 - .../java/org/onosproject/bgpio/types/MedTest.java | 36 - .../org/onosproject/bgpio/types/NextHopTest.java | 40 - .../org/onosproject/bgpio/types/OriginTest.java | 39 - .../bgpio/types/OspfPseudonodeTest.java | 42 - .../onosproject/bgpio/types/OspfRouteTypeTest.java | 39 - .../types/attr/BgpAttrNodeFlagBitTlvTest.java | 50 - .../bgpio/types/attr/BgpAttrRouterIdV6Test.java | 49 - .../bgpio/types/attr/BgpLinkAttrIgpMetricTest.java | 43 - .../attr/BgpLinkAttrMaxLinkBandwidthTest.java | 43 - .../attr/BgpLinkAttrMplsProtocolMaskTest.java | 42 - .../bgpio/types/attr/BgpLinkAttrNameTest.java | 38 - .../types/attr/BgpLinkAttrOpaqLnkAttribTest.java | 41 - .../types/attr/BgpLinkAttrProtectionTypeTest.java | 56 - .../types/attr/BgpLinkAttrTeDefaultMetricTest.java | 40 - .../attr/BgpLinkAttrUnRsrvdLinkBandwidthTest.java | 56 - .../types/attr/BgpPrefixAttrIgpFlagsTest.java | 53 - .../bgpio/types/attr/BgpPrefixAttrMetricTest.java | 39 - .../types/attr/BgpPrefixAttrOpaqueDataTest.java | 41 - .../types/attr/BgpPrefixAttrOspfFwdAddrTest.java | 51 - .../types/attr/BgpPrefixAttrRouteTagTest.java | 54 - framework/src/onos/protocols/bgp/ctl/pom.xml | 61 - .../onosproject/bgp/controller/impl/AdjRibIn.java | 132 -- .../bgp/controller/impl/BgpChannelHandler.java | 896 ----------- .../onosproject/bgp/controller/impl/BgpConfig.java | 364 ----- .../bgp/controller/impl/BgpConnectPeerImpl.java | 133 -- .../bgp/controller/impl/BgpControllerImpl.java | 266 ---- .../bgp/controller/impl/BgpKeepAliveTimer.java | 72 - .../bgp/controller/impl/BgpLocalRibImpl.java | 603 ------- .../bgp/controller/impl/BgpMessageDecoder.java | 60 - .../bgp/controller/impl/BgpMessageEncoder.java | 60 - .../bgp/controller/impl/BgpPacketStatsImpl.java | 124 -- .../bgp/controller/impl/BgpPeerConfig.java | 121 -- .../bgp/controller/impl/BgpPeerImpl.java | 346 ---- .../bgp/controller/impl/BgpPipelineFactory.java | 74 - .../bgp/controller/impl/BgpSelectionAlgo.java | 242 --- .../bgp/controller/impl/BgpSessionInfoImpl.java | 93 -- .../bgp/controller/impl/Controller.java | 254 --- .../bgp/controller/impl/VpnAdjRibIn.java | 209 --- .../bgp/controller/impl/package-info.java | 20 - .../org/onosproject/bgp/BgpControllerImplTest.java | 322 ---- .../onosproject/bgp/BgpPeerChannelHandlerTest.java | 107 -- .../onosproject/bgp/BgpPeerFrameDecoderTest.java | 168 -- .../controller/impl/BgpSelectionAlgoTest.java | 595 ------- framework/src/onos/protocols/bgp/pom.xml | 40 - framework/src/onos/protocols/netconf/api/pom.xml | 50 - .../org/onosproject/netconf/NetconfController.java | 84 - .../org/onosproject/netconf/NetconfDevice.java | 51 - .../org/onosproject/netconf/NetconfDeviceInfo.java | 173 -- .../onosproject/netconf/NetconfDeviceListener.java | 37 - .../org/onosproject/netconf/NetconfSession.java | 129 -- .../java/org/onosproject/netconf/package-info.java | 20 - framework/src/onos/protocols/netconf/ctl/pom.xml | 97 -- .../netconf/ctl/NetconfControllerImpl.java | 143 -- .../onosproject/netconf/ctl/NetconfDeviceImpl.java | 66 - .../netconf/ctl/NetconfSessionImpl.java | 396 ----- .../org/onosproject/netconf/ctl/package-info.java | 20 - framework/src/onos/protocols/netconf/pom.xml | 59 - framework/src/onos/protocols/netconf/rfc/pom.xml | 31 - .../main/java/org/onosproject/netconf/rfc/Foo.java | 7 - .../org/onosproject/netconf/rfc/package-info.java | 20 - framework/src/onos/protocols/openflow/api/pom.xml | 93 -- .../controller/DefaultOpenFlowPacketContext.java | 182 --- .../org/onosproject/openflow/controller/Dpid.java | 132 -- .../controller/ExtensionSelectorInterpreter.java | 57 - .../controller/ExtensionTreatmentInterpreter.java | 58 - .../openflow/controller/OpenFlowController.java | 130 -- .../openflow/controller/OpenFlowEventListener.java | 33 - .../openflow/controller/OpenFlowOpticalSwitch.java | 23 - .../openflow/controller/OpenFlowPacketContext.java | 90 -- .../openflow/controller/OpenFlowSwitch.java | 160 -- .../controller/OpenFlowSwitchListener.java | 58 - .../openflow/controller/PacketListener.java | 29 - .../openflow/controller/PortDescPropertyType.java | 39 - .../onosproject/openflow/controller/RoleState.java | 40 - .../openflow/controller/ThirdPartyMessage.java | 74 - .../openflow/controller/WithTypedPorts.java | 45 - .../controller/driver/AbstractOpenFlowSwitch.java | 494 ------ .../openflow/controller/driver/OpenFlowAgent.java | 102 -- .../controller/driver/OpenFlowSwitchDriver.java | 221 --- .../driver/OpenFlowSwitchDriverFactory.java | 39 - .../openflow/controller/driver/RoleHandler.java | 114 -- .../openflow/controller/driver/RoleRecvStatus.java | 52 - .../openflow/controller/driver/RoleReplyInfo.java | 48 - .../SwitchDriverSubHandshakeAlreadyStarted.java | 29 - .../driver/SwitchDriverSubHandshakeCompleted.java | 34 - .../driver/SwitchDriverSubHandshakeException.java | 41 - .../driver/SwitchDriverSubHandshakeNotStarted.java | 30 - .../SwitchDriverSubHandshakeStateException.java | 30 - .../controller/driver/SwitchStateException.java | 49 - .../openflow/controller/driver/package-info.java | 20 - .../openflow/controller/package-info.java | 20 - .../controller/OpenflowControllerAdapter.java | 89 -- framework/src/onos/protocols/openflow/ctl/pom.xml | 65 - .../openflow/controller/impl/Controller.java | 328 ---- .../controller/impl/HandshakeTimeoutException.java | 28 - .../controller/impl/HandshakeTimeoutHandler.java | 93 -- .../openflow/controller/impl/OFChannelHandler.java | 1320 --------------- .../openflow/controller/impl/OFMessageDecoder.java | 55 - .../openflow/controller/impl/OFMessageEncoder.java | 59 - .../controller/impl/OpenFlowControllerImpl.java | 647 -------- .../controller/impl/OpenflowPipelineFactory.java | 93 -- .../openflow/controller/impl/RoleManager.java | 406 ----- .../openflow/controller/impl/package-info.java | 20 - .../org/onosproject/openflow/ChannelAdapter.java | 159 -- .../openflow/ChannelHandlerContextAdapter.java | 77 - .../org/onosproject/openflow/DriverAdapter.java | 104 -- .../onosproject/openflow/DriverServiceAdapter.java | 59 - .../openflow/ExecutorServiceAdapter.java | 99 -- .../onosproject/openflow/MockOfFeaturesReply.java | 81 - .../org/onosproject/openflow/MockOfPacketIn.java | 84 - .../org/onosproject/openflow/MockOfPortStatus.java | 45 - .../openflow/OFDescStatsReplyAdapter.java | 97 -- .../org/onosproject/openflow/OfMessageAdapter.java | 62 - .../openflow/OpenFlowSwitchListenerAdapter.java | 77 - .../openflow/OpenflowSwitchDriverAdapter.java | 302 ---- .../openflow/controller/impl/ControllerTest.java | 219 --- .../controller/impl/OFMessageDecoderTest.java | 84 - .../controller/impl/OFMessageEncoderTest.java | 90 -- .../impl/OpenFlowControllerImplPacketsTest.java | 167 -- .../impl/OpenFlowControllerImplTest.java | 288 ---- .../openflow/controller/impl/RoleManagerTest.java | 130 -- .../drivers/OFSwitchImplSpringOpenTTPDellOSR.java | 65 - framework/src/onos/protocols/openflow/pom.xml | 63 - framework/src/onos/protocols/ovsdb/api/pom.xml | 60 - .../ovsdb/controller/DefaultEventSubject.java | 126 -- .../onosproject/ovsdb/controller/EventSubject.java | 22 - .../onosproject/ovsdb/controller/OvsdbBridge.java | 88 - .../ovsdb/controller/OvsdbBridgeName.java | 72 - .../ovsdb/controller/OvsdbClientService.java | 301 ---- .../ovsdb/controller/OvsdbConstant.java | 68 - .../ovsdb/controller/OvsdbController.java | 79 - .../ovsdb/controller/OvsdbDatapathId.java | 69 - .../onosproject/ovsdb/controller/OvsdbEvent.java | 74 - .../ovsdb/controller/OvsdbEventListener.java | 28 - .../ovsdb/controller/OvsdbEventSubject.java | 75 - .../onosproject/ovsdb/controller/OvsdbIfaceId.java | 69 - .../onosproject/ovsdb/controller/OvsdbNodeId.java | 83 - .../ovsdb/controller/OvsdbNodeListener.java | 36 - .../onosproject/ovsdb/controller/OvsdbPort.java | 86 - .../ovsdb/controller/OvsdbPortName.java | 71 - .../ovsdb/controller/OvsdbPortNumber.java | 69 - .../ovsdb/controller/OvsdbPortType.java | 71 - .../ovsdb/controller/OvsdbRowStore.java | 69 - .../onosproject/ovsdb/controller/OvsdbStore.java | 71 - .../ovsdb/controller/OvsdbTableStore.java | 67 - .../onosproject/ovsdb/controller/OvsdbTunnel.java | 126 -- .../ovsdb/controller/OvsdbTunnelName.java | 70 - .../controller/driver/DefaultOvsdbClient.java | 1500 ----------------- .../ovsdb/controller/driver/OvsdbAgent.java | 42 - .../controller/driver/OvsdbProviderService.java | 81 - .../ovsdb/controller/driver/package-info.java | 20 - .../onosproject/ovsdb/controller/package-info.java | 20 - .../driver/OvsdbClientServiceAdapter.java | 225 --- .../controller/driver/OvsdbControllerAdapter.java | 75 - framework/src/onos/protocols/ovsdb/ctl/pom.xml | 65 - .../controller/impl/ChannelConnectionListener.java | 43 - .../ovsdb/controller/impl/Controller.java | 299 ---- .../ovsdb/controller/impl/MessageDecoder.java | 55 - .../ovsdb/controller/impl/OvsdbControllerImpl.java | 418 ----- .../ovsdb/controller/impl/OvsdbJsonRpcHandler.java | 131 -- .../ovsdb/controller/impl/package-info.java | 20 - framework/src/onos/protocols/ovsdb/pom.xml | 50 - framework/src/onos/protocols/ovsdb/rfc/pom.xml | 49 - .../rfc/exception/AbnormalJsonNodeException.java | 41 - .../ovsdb/rfc/exception/BridgeCreateException.java | 53 - .../exception/ColumnSchemaNotFoundException.java | 55 - .../exception/TableSchemaNotFoundException.java | 56 - .../ovsdb/rfc/exception/UnsupportedException.java | 41 - .../rfc/exception/VersionMismatchException.java | 66 - .../ovsdb/rfc/exception/package-info.java | 20 - .../onosproject/ovsdb/rfc/jsonrpc/Callback.java | 50 - .../ovsdb/rfc/jsonrpc/JsonReadContext.java | 86 - .../ovsdb/rfc/jsonrpc/JsonRpcRequest.java | 111 -- .../ovsdb/rfc/jsonrpc/JsonRpcResponse.java | 122 -- .../onosproject/ovsdb/rfc/jsonrpc/OvsdbRPC.java | 74 - .../ovsdb/rfc/jsonrpc/package-info.java | 20 - .../ovsdb/rfc/message/MonitorRequest.java | 101 -- .../ovsdb/rfc/message/MonitorSelect.java | 106 -- .../ovsdb/rfc/message/OperationResult.java | 158 -- .../onosproject/ovsdb/rfc/message/RowUpdate.java | 97 -- .../onosproject/ovsdb/rfc/message/TableUpdate.java | 107 -- .../ovsdb/rfc/message/TableUpdates.java | 89 -- .../ovsdb/rfc/message/UpdateNotification.java | 90 -- .../ovsdb/rfc/message/package-info.java | 20 - .../org/onosproject/ovsdb/rfc/notation/Column.java | 81 - .../onosproject/ovsdb/rfc/notation/Condition.java | 123 -- .../onosproject/ovsdb/rfc/notation/Mutation.java | 124 -- .../onosproject/ovsdb/rfc/notation/OvsdbMap.java | 83 - .../onosproject/ovsdb/rfc/notation/OvsdbSet.java | 85 - .../ovsdb/rfc/notation/RefTableRow.java | 84 - .../org/onosproject/ovsdb/rfc/notation/Row.java | 159 -- .../org/onosproject/ovsdb/rfc/notation/UUID.java | 84 - .../rfc/notation/json/ConditionSerializer.java | 41 - .../rfc/notation/json/MutationSerializer.java | 41 - .../rfc/notation/json/OvsdbMapSerializer.java | 49 - .../rfc/notation/json/OvsdbSetSerializer.java | 46 - .../ovsdb/rfc/notation/json/UUIDConverter.java | 32 - .../ovsdb/rfc/notation/json/UUIDSerializer.java | 43 - .../notation/json/UpdateNotificationConverter.java | 46 - .../ovsdb/rfc/notation/json/package-info.java | 20 - .../ovsdb/rfc/notation/package-info.java | 20 - .../onosproject/ovsdb/rfc/operations/Abort.java | 43 - .../onosproject/ovsdb/rfc/operations/Assert.java | 57 - .../onosproject/ovsdb/rfc/operations/Comment.java | 57 - .../onosproject/ovsdb/rfc/operations/Commit.java | 57 - .../onosproject/ovsdb/rfc/operations/Delete.java | 77 - .../onosproject/ovsdb/rfc/operations/Insert.java | 110 -- .../onosproject/ovsdb/rfc/operations/Mutate.java | 91 -- .../ovsdb/rfc/operations/Operation.java | 60 - .../onosproject/ovsdb/rfc/operations/Select.java | 89 -- .../onosproject/ovsdb/rfc/operations/Update.java | 111 -- .../ovsdb/rfc/operations/package-info.java | 20 - .../onosproject/ovsdb/rfc/schema/ColumnSchema.java | 83 - .../ovsdb/rfc/schema/DatabaseSchema.java | 135 -- .../onosproject/ovsdb/rfc/schema/TableSchema.java | 129 -- .../onosproject/ovsdb/rfc/schema/package-info.java | 20 - .../ovsdb/rfc/schema/type/AtomicColumnType.java | 104 -- .../ovsdb/rfc/schema/type/BaseType.java | 24 - .../ovsdb/rfc/schema/type/BaseTypeFactory.java | 214 --- .../ovsdb/rfc/schema/type/BooleanBaseType.java | 33 - .../ovsdb/rfc/schema/type/ColumnType.java | 24 - .../ovsdb/rfc/schema/type/ColumnTypeFactory.java | 123 -- .../ovsdb/rfc/schema/type/IntegerBaseType.java | 103 -- .../ovsdb/rfc/schema/type/KeyValuedColumnType.java | 108 -- .../ovsdb/rfc/schema/type/RealBaseType.java | 103 -- .../ovsdb/rfc/schema/type/StringBaseType.java | 103 -- .../ovsdb/rfc/schema/type/UuidBaseType.java | 110 -- .../ovsdb/rfc/schema/type/package-info.java | 20 - .../org/onosproject/ovsdb/rfc/table/Bridge.java | 560 ------- .../onosproject/ovsdb/rfc/table/Controller.java | 556 ------- .../ovsdb/rfc/table/FlowSampleCollectorSet.java | 151 -- .../org/onosproject/ovsdb/rfc/table/FlowTable.java | 196 --- .../org/onosproject/ovsdb/rfc/table/Interface.java | 1024 ------------ .../org/onosproject/ovsdb/rfc/table/Ipfix.java | 220 --- .../org/onosproject/ovsdb/rfc/table/Manager.java | 243 --- .../org/onosproject/ovsdb/rfc/table/Mirror.java | 277 ---- .../org/onosproject/ovsdb/rfc/table/Netflow.java | 197 --- .../onosproject/ovsdb/rfc/table/OpenVSwitch.java | 466 ------ .../onosproject/ovsdb/rfc/table/OvsdbTable.java | 41 - .../java/org/onosproject/ovsdb/rfc/table/Port.java | 590 ------- .../java/org/onosproject/ovsdb/rfc/table/Qos.java | 149 -- .../org/onosproject/ovsdb/rfc/table/Queue.java | 126 -- .../org/onosproject/ovsdb/rfc/table/Sflow.java | 193 --- .../java/org/onosproject/ovsdb/rfc/table/Ssl.java | 172 -- .../ovsdb/rfc/table/TableGenerator.java | 103 -- .../onosproject/ovsdb/rfc/table/VersionNum.java | 47 - .../onosproject/ovsdb/rfc/table/package-info.java | 20 - .../tableservice/AbstractOvsdbTableService.java | 284 ---- .../ovsdb/rfc/tableservice/ColumnDescription.java | 117 -- .../ovsdb/rfc/tableservice/OvsdbTableService.java | 70 - .../ovsdb/rfc/tableservice/TableDescription.java | 108 -- .../ovsdb/rfc/tableservice/package-info.java | 20 - .../onosproject/ovsdb/rfc/utils/ConditionUtil.java | 122 -- .../onosproject/ovsdb/rfc/utils/FromJsonUtil.java | 319 ---- .../ovsdb/rfc/utils/JsonRpcReaderUtil.java | 165 -- .../ovsdb/rfc/utils/JsonRpcWriterUtil.java | 114 -- .../onosproject/ovsdb/rfc/utils/MutationUtil.java | 107 -- .../ovsdb/rfc/utils/ObjectMapperUtil.java | 98 -- .../org/onosproject/ovsdb/rfc/utils/ParamUtil.java | 86 - .../ovsdb/rfc/utils/StringEncoderUtil.java | 42 - .../ovsdb/rfc/utils/TransValueUtil.java | 172 -- .../onosproject/ovsdb/rfc/utils/VersionUtil.java | 69 - .../onosproject/ovsdb/rfc/utils/package-info.java | 20 - framework/src/onos/protocols/pcep/api/pom.xml | 99 -- .../org/onosproject/pcep/controller/PccId.java | 120 -- .../onosproject/pcep/controller/PcepClient.java | 110 -- .../pcep/controller/PcepClientController.java | 93 -- .../pcep/controller/PcepClientListener.java | 36 - .../pcep/controller/PcepEventListener.java | 31 - .../pcep/controller/PcepPacketStats.java | 50 - .../pcep/controller/driver/PcepAgent.java | 63 - .../pcep/controller/driver/PcepClientDriver.java | 110 -- .../controller/driver/PcepClientDriverFactory.java | 38 - .../pcep/controller/driver/package-info.java | 20 - .../onosproject/pcep/controller/package-info.java | 20 - framework/src/onos/protocols/pcep/ctl/pom.xml | 65 - .../pcep/controller/impl/Controller.java | 188 --- .../pcep/controller/impl/PcepChannelHandler.java | 652 -------- .../controller/impl/PcepClientControllerImpl.java | 222 --- .../pcep/controller/impl/PcepClientImpl.java | 220 --- .../pcep/controller/impl/PcepMessageDecoder.java | 68 - .../pcep/controller/impl/PcepMessageEncoder.java | 58 - .../pcep/controller/impl/PcepPacketStatsImpl.java | 105 -- .../pcep/controller/impl/PcepPipelineFactory.java | 66 - .../pcep/controller/impl/package-info.java | 20 - framework/src/onos/protocols/pcep/pcepio/pom.xml | 77 - .../pcepio/exceptions/PcepParseException.java | 92 -- .../exceptions/PcepTunnelAttributeException.java | 60 - .../pcepio/exceptions/package-info.java | 20 - .../pcepio/protocol/PcInitiatedLspRequest.java | 185 --- .../onosproject/pcepio/protocol/PcepAttribute.java | 166 -- .../pcepio/protocol/PcepBandwidthObject.java | 109 -- .../onosproject/pcepio/protocol/PcepCloseMsg.java | 143 -- .../pcepio/protocol/PcepEndPointsObject.java | 139 -- .../onosproject/pcepio/protocol/PcepEroObject.java | 112 -- .../org/onosproject/pcepio/protocol/PcepError.java | 136 -- .../onosproject/pcepio/protocol/PcepErrorInfo.java | 93 -- .../onosproject/pcepio/protocol/PcepErrorMsg.java | 109 -- .../pcepio/protocol/PcepErrorObject.java | 169 -- .../onosproject/pcepio/protocol/PcepFactories.java | 98 -- .../onosproject/pcepio/protocol/PcepFactory.java | 255 --- .../onosproject/pcepio/protocol/PcepFecObject.java | 49 - .../pcepio/protocol/PcepFecObjectIPv4.java | 104 -- .../protocol/PcepFecObjectIPv4Adjacency.java | 133 -- .../PcepFecObjectIPv4UnnumberedAdjacency.java | 191 --- .../pcepio/protocol/PcepFecObjectIPv6.java | 104 -- .../protocol/PcepFecObjectIPv6Adjacency.java | 133 -- .../pcepio/protocol/PcepInitiateMsg.java | 81 - .../pcepio/protocol/PcepInterLayerObject.java | 137 -- .../onosproject/pcepio/protocol/PcepIroObject.java | 110 -- .../pcepio/protocol/PcepKeepaliveMsg.java | 49 - .../pcepio/protocol/PcepLabelObject.java | 171 -- .../pcepio/protocol/PcepLabelRange.java | 65 - .../pcepio/protocol/PcepLabelRangeObject.java | 182 --- .../pcepio/protocol/PcepLabelRangeResvMsg.java | 79 - .../pcepio/protocol/PcepLabelUpdate.java | 108 -- .../pcepio/protocol/PcepLabelUpdateMsg.java | 81 - .../onosproject/pcepio/protocol/PcepLspObject.java | 286 ---- .../pcepio/protocol/PcepLspaObject.java | 286 ---- .../onosproject/pcepio/protocol/PcepMessage.java | 67 - .../pcepio/protocol/PcepMessageReader.java | 36 - .../pcepio/protocol/PcepMessageWriter.java | 35 - .../pcepio/protocol/PcepMetricObject.java | 225 --- .../onosproject/pcepio/protocol/PcepMsgPath.java | 117 -- .../org/onosproject/pcepio/protocol/PcepNai.java | 40 - .../onosproject/pcepio/protocol/PcepObject.java | 30 - .../onosproject/pcepio/protocol/PcepOpenMsg.java | 73 - .../pcepio/protocol/PcepOpenObject.java | 221 --- .../onosproject/pcepio/protocol/PcepRPObject.java | 256 --- .../onosproject/pcepio/protocol/PcepReportMsg.java | 81 - .../onosproject/pcepio/protocol/PcepRroObject.java | 111 -- .../onosproject/pcepio/protocol/PcepSrpObject.java | 171 -- .../pcepio/protocol/PcepStateReport.java | 207 --- .../onosproject/pcepio/protocol/PcepTEObject.java | 241 --- .../pcepio/protocol/PcepTEReportMsg.java | 81 - .../org/onosproject/pcepio/protocol/PcepType.java | 49 - .../onosproject/pcepio/protocol/PcepUpdateMsg.java | 81 - .../pcepio/protocol/PcepUpdateRequest.java | 126 -- .../onosproject/pcepio/protocol/PcepVersion.java | 46 - .../org/onosproject/pcepio/protocol/Writeable.java | 35 - .../onosproject/pcepio/protocol/package-info.java | 20 - .../protocol/ver1/PcInitiatedLspRequestVer1.java | 291 ---- .../pcepio/protocol/ver1/PcepAttributeVer1.java | 431 ----- .../protocol/ver1/PcepBandwidthObjectVer1.java | 233 --- .../pcepio/protocol/ver1/PcepCloseMsgVer1.java | 351 ---- .../protocol/ver1/PcepEndPointsObjectVer1.java | 256 --- .../pcepio/protocol/ver1/PcepEroObjectVer1.java | 407 ----- .../pcepio/protocol/ver1/PcepErrorInfoVer1.java | 204 --- .../pcepio/protocol/ver1/PcepErrorMsgVer1.java | 383 ----- .../pcepio/protocol/ver1/PcepErrorObjectVer1.java | 341 ---- .../pcepio/protocol/ver1/PcepErrorVer1.java | 399 ----- .../pcepio/protocol/ver1/PcepFactoryVer1.java | 226 --- .../ver1/PcepFecObjectIPv4AdjacencyVer1.java | 253 --- .../PcepFecObjectIPv4UnnumberedAdjacencyVer1.java | 334 ---- .../protocol/ver1/PcepFecObjectIPv4Ver1.java | 217 --- .../ver1/PcepFecObjectIPv6AdjacencyVer1.java | 249 --- .../protocol/ver1/PcepFecObjectIPv6Ver1.java | 220 --- .../pcepio/protocol/ver1/PcepInitiateMsgVer1.java | 332 ---- .../protocol/ver1/PcepInterLayerObjectVer1.java | 263 --- .../pcepio/protocol/ver1/PcepIroObjectVer1.java | 299 ---- .../pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java | 154 -- .../pcepio/protocol/ver1/PcepLabelObjectVer1.java | 370 ----- .../protocol/ver1/PcepLabelRangeObjectVer1.java | 377 ----- .../protocol/ver1/PcepLabelRangeResvMsgVer1.java | 198 --- .../pcepio/protocol/ver1/PcepLabelRangeVer1.java | 168 -- .../protocol/ver1/PcepLabelUpdateMsgVer1.java | 239 --- .../pcepio/protocol/ver1/PcepLabelUpdateVer1.java | 356 ----- .../pcepio/protocol/ver1/PcepLspObjectVer1.java | 575 ------- .../pcepio/protocol/ver1/PcepLspaObjectVer1.java | 529 ------ .../pcepio/protocol/ver1/PcepMessageVer1.java | 132 -- .../pcepio/protocol/ver1/PcepMetricObjectVer1.java | 376 ----- .../pcepio/protocol/ver1/PcepMsgPathVer1.java | 187 --- .../pcepio/protocol/ver1/PcepOpenMsgVer1.java | 204 --- .../pcepio/protocol/ver1/PcepOpenObjectVer1.java | 491 ------ .../pcepio/protocol/ver1/PcepRPObjectVer1.java | 445 ------ .../pcepio/protocol/ver1/PcepReportMsgVer1.java | 309 ---- .../pcepio/protocol/ver1/PcepRroObjectVer1.java | 345 ---- .../pcepio/protocol/ver1/PcepSrpObjectVer1.java | 392 ----- .../pcepio/protocol/ver1/PcepStateReportVer1.java | 421 ----- .../pcepio/protocol/ver1/PcepTEObjectVer1.java | 506 ------ .../pcepio/protocol/ver1/PcepTEReportMsgVer1.java | 225 --- .../pcepio/protocol/ver1/PcepUpdateMsgVer1.java | 300 ---- .../protocol/ver1/PcepUpdateRequestVer1.java | 199 --- .../pcepio/protocol/ver1/package-info.java | 20 - .../pcepio/types/AdministrativeGroupTlv.java | 136 -- .../pcepio/types/AutonomousSystemTlv.java | 136 -- .../pcepio/types/BGPLSidentifierTlv.java | 136 -- .../pcepio/types/ErrorObjListWithOpen.java | 160 -- .../pcepio/types/GmplsCapabilityTlv.java | 138 -- .../org/onosproject/pcepio/types/IGPMetricTlv.java | 150 -- .../pcepio/types/IPv4InterfaceAddressTlv.java | 137 -- .../pcepio/types/IPv4NeighborAddressTlv.java | 137 -- .../onosproject/pcepio/types/IPv4SubObject.java | 180 --- .../pcepio/types/IPv4TERouterIdOfLocalNodeTlv.java | 136 -- .../types/IPv4TERouterIdOfRemoteNodeTlv.java | 137 -- .../pcepio/types/IPv6InterfaceAddressTlv.java | 181 --- .../pcepio/types/IPv6NeighborAddressTlv.java | 179 --- .../onosproject/pcepio/types/IPv6SubObject.java | 222 --- .../pcepio/types/IPv6TERouterIdofLocalNodeTlv.java | 179 --- .../types/IPv6TERouterIdofRemoteNodeTlv.java | 171 -- .../pcepio/types/ISISAreaIdentifierTlv.java | 156 -- .../onosproject/pcepio/types/LabelSubObject.java | 171 -- .../types/LinkLocalRemoteIdentifiersTlv.java | 155 -- .../org/onosproject/pcepio/types/LinkNameTlv.java | 154 -- .../pcepio/types/LinkProtectionTypeTlv.java | 142 -- .../pcepio/types/LocalTENodeDescriptorsTlv.java | 246 --- .../pcepio/types/MPLSProtocolMaskTlv.java | 200 --- .../pcepio/types/MaximumLinkBandwidthTlv.java | 137 -- .../types/MaximumReservableLinkBandwidthTlv.java | 136 -- .../pcepio/types/NexthopIPv4addressTlv.java | 143 -- .../pcepio/types/NexthopIPv6addressTlv.java | 190 --- .../pcepio/types/NexthopUnnumberedIPv4IDTlv.java | 163 -- .../onosproject/pcepio/types/NodeFlagBitsTlv.java | 233 --- .../org/onosproject/pcepio/types/NodeNameTlv.java | 154 -- .../onosproject/pcepio/types/OSPFareaIDsubTlv.java | 135 -- .../pcepio/types/OpaqueLinkAttributeTlv.java | 155 -- .../pcepio/types/OpaqueNodeAttributeTlv.java | 154 -- .../onosproject/pcepio/types/PathKeySubObject.java | 159 -- .../onosproject/pcepio/types/PathSetupTypeTlv.java | 164 -- .../pcepio/types/PceccCapabilityTlv.java | 194 --- .../pcepio/types/PcepErrorDetailInfo.java | 83 - .../pcepio/types/PcepLabelDbVerTlv.java | 137 -- .../pcepio/types/PcepLabelDownload.java | 105 -- .../org/onosproject/pcepio/types/PcepLabelMap.java | 103 -- .../pcepio/types/PcepNaiIpv4Adjacency.java | 107 -- .../pcepio/types/PcepNaiIpv4NodeId.java | 99 -- .../pcepio/types/PcepNaiIpv6Adjacency.java | 113 -- .../pcepio/types/PcepNaiIpv6NodeId.java | 102 -- .../types/PcepNaiUnnumberedAdjacencyIpv4.java | 131 -- .../onosproject/pcepio/types/PcepObjectHeader.java | 224 --- .../pcepio/types/PcepRsvpErrorSpec.java | 46 - .../pcepio/types/PcepRsvpIpv4ErrorSpec.java | 160 -- .../pcepio/types/PcepRsvpIpv6ErrorSpec.java | 165 -- .../pcepio/types/PcepRsvpObjectHeader.java | 161 -- .../pcepio/types/PcepRsvpSpecObjHeader.java | 156 -- .../pcepio/types/PcepRsvpUserErrorSpec.java | 220 --- .../onosproject/pcepio/types/PcepValueType.java | 55 - .../pcepio/types/RemoteTENodeDescriptorsTlv.java | 250 --- .../onosproject/pcepio/types/RouterIDSubTlv.java | 154 -- .../pcepio/types/RoutingUniverseTlv.java | 147 -- .../pcepio/types/SharedRiskLinkGroupTlv.java | 167 -- .../onosproject/pcepio/types/SrEroSubObject.java | 324 ---- .../types/StatefulIPv4LspIdentidiersTlv.java | 210 --- .../pcepio/types/StatefulLspDbVerTlv.java | 142 -- .../pcepio/types/StatefulLspErrorCodeTlv.java | 142 -- .../pcepio/types/StatefulPceCapabilityTlv.java | 269 ---- .../pcepio/types/StatefulRsvpErrorSpecTlv.java | 216 --- .../pcepio/types/SymbolicPathNameTlv.java | 159 -- .../pcepio/types/TEDefaultMetricTlv.java | 137 -- .../pcepio/types/TELinkAttributesTlv.java | 292 ---- .../pcepio/types/TELinkDescriptorsTlv.java | 251 --- .../pcepio/types/TENodeAttributesTlv.java | 250 --- .../onosproject/pcepio/types/TedCapabilityTlv.java | 181 --- .../pcepio/types/UnreservedBandwidthTlv.java | 136 -- .../org/onosproject/pcepio/types/package-info.java | 20 - .../java/org/onosproject/pcepio/util/HexDump.java | 56 - .../org/onosproject/pcepio/util/package-info.java | 20 - .../pcepio/protocol/PcepCloseMsgTest.java | 56 - .../pcepio/protocol/PcepErrorMsgTest.java | 735 --------- .../pcepio/protocol/PcepInitiateMsgExtTest.java | 1683 -------------------- .../pcepio/protocol/PcepInitiateMsgTest.java | 1331 ---------------- .../pcepio/protocol/PcepKeepaliveMsgTest.java | 59 - .../pcepio/protocol/PcepLabelUpdateMsgTest.java | 402 ----- .../pcepio/protocol/PcepOpenMsgTest.java | 558 ------- .../pcepio/protocol/PcepReportMsgExtTest.java | 218 --- .../pcepio/protocol/PcepReportMsgTest.java | 1597 ------------------- .../pcepio/protocol/PcepTEReportMsgTest.java | 1596 ------------------- .../pcepio/protocol/PcepUpdateMsgExtTest.java | 1269 --------------- .../pcepio/protocol/PcepUpdateMsgTest.java | 1423 ----------------- .../pcepio/types/AdministrativeGroupTlvTest.java | 36 - .../pcepio/types/AutonomousSystemTlvTest.java | 36 - .../pcepio/types/BGPLSidentifierTlvTest.java | 36 - .../pcepio/types/GmplsCapabilityTlvTest.java | 36 - .../onosproject/pcepio/types/IGPMetricTlvTest.java | 38 - .../pcepio/types/IPv4InterfaceAddressTlvTest.java | 37 - .../pcepio/types/IPv4NeighborAddressTlvTest.java | 37 - .../pcepio/types/IPv4SubObjectTest.java | 37 - .../types/IPv4TERouterIdOfLocalNodeTlvTest.java | 37 - .../types/IPv4TERouterIdOfRemoteNodeTlvTest.java | 37 - .../pcepio/types/IPv6InterfaceAddressTlvTest.java | 42 - .../pcepio/types/IPv6NeighborAddressTlvTest.java | 42 - .../pcepio/types/IPv6SubObjectTest.java | 39 - .../types/IPv6TERouterIdofLocalNodeTlvTest.java | 42 - .../types/IPv6TERouterIdofRemoteNodeTlvTest.java | 42 - .../pcepio/types/ISISAreaIdentifierTlvTest.java | 40 - .../pcepio/types/LabelSubObjectTest.java | 37 - .../types/LinkLocalRemoteIdentifiersTlvTest.java | 37 - .../onosproject/pcepio/types/LinkNameTlvTest.java | 39 - .../pcepio/types/LinkProtectionTypeTlvTest.java | 39 - .../types/LocalTENodeDescriptorsTlvTest.java | 50 - .../pcepio/types/MPLSProtocolMaskTlvTest.java | 39 - .../pcepio/types/MaximumLinkBandwidthTlvTest.java | 39 - .../MaximumReservableLinkBandwidthTlvTest.java | 39 - .../pcepio/types/NexthopIPv4addressTlvTest.java | 37 - .../pcepio/types/NexthopIPv6addressTlvTest.java | 41 - .../types/NexthopUnnumberedIPv4IDTlvTest.java | 37 - .../pcepio/types/NodeFlagBitsTlvTest.java | 39 - .../onosproject/pcepio/types/NodeNameTlvTest.java | 39 - .../pcepio/types/OSPFareaIDsubTlvTest.java | 36 - .../pcepio/types/OpaqueLinkAttributeTlvTest.java | 39 - .../pcepio/types/PathKeySubObjectTest.java | 37 - .../pcepio/types/PathSetupTypeTlvTest.java | 34 - .../pcepio/types/PceccCapabilityTlvTest.java | 39 - .../pcepio/types/PcepNaiIpv4AdjacencyTest.java | 36 - .../pcepio/types/PcepNaiIpv4NodeIdTest.java | 34 - .../pcepio/types/PcepNaiIpv6AdjacencyTest.java | 37 - .../pcepio/types/PcepNaiIpv6NodeIdTest.java | 43 - .../types/PcepNaiUnnumberedAdjacencyIpv4Test.java | 49 - .../types/RemoteTENodeDescriptorsTlvTest.java | 52 - .../pcepio/types/RouterIDSubTlvTest.java | 42 - .../pcepio/types/RoutingUniverseTlvTest.java | 35 - .../pcepio/types/SharedRiskLinkGroupTlvTest.java | 41 - .../pcepio/types/SrEroSubObjectTest.java | 59 - .../types/StatefulIPv4LspIdentidiersTlvTest.java | 55 - .../pcepio/types/StatefulLspDbVerTlvTest.java | 35 - .../pcepio/types/StatefulLspErrorCodeTlvTest.java | 31 - .../pcepio/types/StatefulPceCapabilityTlvTest.java | 34 - .../pcepio/types/SymbolicPathNameTlvTest.java | 43 - .../pcepio/types/TEDefaultMetricTlvTest.java | 34 - .../pcepio/types/TELinkAttributesTlvTest.java | 54 - .../pcepio/types/TELinkDescriptorsTlvTest.java | 52 - .../pcepio/types/TENodeAttributesTlvTest.java | 54 - .../pcepio/types/TedCapabilityTlvTest.java | 34 - .../pcepio/types/UnreservedBandwidthTlvTest.java | 36 - framework/src/onos/protocols/pcep/pom.xml | 40 - framework/src/onos/protocols/pom.xml | 71 - 656 files changed, 96831 deletions(-) delete mode 100755 framework/src/onos/protocols/bgp/api/pom.xml delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpCfg.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpConnectPeer.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpController.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpDpid.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpId.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpLinkListener.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpLocalRib.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpNodeListener.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPacketStats.java delete mode 100644 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeer.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeerCfg.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeerManager.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpSessionInfo.java delete mode 100755 framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/package-info.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/pom.xml delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/exceptions/BgpParseException.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/exceptions/package-info.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactories.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactory.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpKeepaliveMsg.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLSNlri.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessage.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessageReader.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessageWriter.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpNodeLSNlri.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpNotificationMsg.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpOpenMsg.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpPrefixLSNlri.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpType.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpUpdateMsg.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpVersion.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/IGPRouterID.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/NlriType.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/Writeable.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLSIdentifier.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLsNlriVer4.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSIdentifier.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSNlriVer4.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixIPv4LSNlriVer4.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/PathAttrNlriDetails.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/PathAttrNlriDetailsLocalRib.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/package-info.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/package-info.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpFactoryVer4.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpKeepaliveMsgVer4.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpMessageVer4.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpNotificationMsgVer4.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpPathAttributes.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpUpdateMsgVer4.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/package-info.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AreaIDTlv.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AutonomousSystemTlv.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpErrorType.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpHeader.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpLSIdentifierTlv.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpValueType.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/FourOctetAsNumCapabilityTlv.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv4AddressTlv.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv6AddressTlv.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsNonPseudonode.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTlv.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkStateAttributes.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MultiProtocolExtnCapabilityTlv.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFNonPseudonode.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFPseudonode.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFRouteTypeTlv.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/RouteDistinguisher.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlv.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeIsIsAreaId.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeName.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrOpaqueNode.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV4.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetric.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIsIsAdminstGrp.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidth.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMask.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttrib.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionType.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrSrlg.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetric.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrExtRouteTag.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlags.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetric.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueData.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddr.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/package-info.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/package-info.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/Constants.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/UnSupportedAttribute.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/Validation.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/package-info.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpLinkAttrMaxLinkBandwidthTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpLinkAttrTeDefaultMetricTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpPrefixAttrOpaqueDataTest.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpKeepaliveMsgTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpNotificationMsgTest.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpOpenMsgTest.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpUpdateMsgTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AreaIdTest.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/As4PathTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AsPathTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AutonomousSystemTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpLSIdentifierTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPReachabilityInformationTest.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPv4AddressTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPv6AddressTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsNonPseudonodeTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/LocalPrefTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/MedTest.java delete mode 100755 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/NextHopTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OriginTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OspfPseudonodeTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OspfRouteTypeTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlvTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6Test.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetricTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidthTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMaskTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrNameTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttribTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionTypeTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetricTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidthTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlagsTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetricTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueDataTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddrTest.java delete mode 100644 framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTagTest.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/pom.xml delete mode 100644 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/AdjRibIn.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpChannelHandler.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConfig.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConnectPeerImpl.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpControllerImpl.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpKeepAliveTimer.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpLocalRibImpl.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpMessageDecoder.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpMessageEncoder.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPacketStatsImpl.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerConfig.java delete mode 100644 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPipelineFactory.java delete mode 100644 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpSelectionAlgo.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpSessionInfoImpl.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java delete mode 100644 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/VpnAdjRibIn.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/package-info.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpControllerImplTest.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpPeerChannelHandlerTest.java delete mode 100755 framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpPeerFrameDecoderTest.java delete mode 100644 framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/controller/impl/BgpSelectionAlgoTest.java delete mode 100755 framework/src/onos/protocols/bgp/pom.xml delete mode 100644 framework/src/onos/protocols/netconf/api/pom.xml delete mode 100644 framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.java delete mode 100644 framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDevice.java delete mode 100644 framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java delete mode 100644 framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceListener.java delete mode 100644 framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfSession.java delete mode 100644 framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/package-info.java delete mode 100644 framework/src/onos/protocols/netconf/ctl/pom.xml delete mode 100644 framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.java delete mode 100644 framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfDeviceImpl.java delete mode 100644 framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfSessionImpl.java delete mode 100644 framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/package-info.java delete mode 100644 framework/src/onos/protocols/netconf/pom.xml delete mode 100644 framework/src/onos/protocols/netconf/rfc/pom.xml delete mode 100644 framework/src/onos/protocols/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/Foo.java delete mode 100644 framework/src/onos/protocols/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/package-info.java delete mode 100644 framework/src/onos/protocols/openflow/api/pom.xml delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/Dpid.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionSelectorInterpreter.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowOpticalSwitch.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/PortDescPropertyType.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/RoleState.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ThirdPartyMessage.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/WithTypedPorts.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowAgent.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriver.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriverFactory.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleHandler.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleRecvStatus.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleReplyInfo.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeAlreadyStarted.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeCompleted.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeException.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeNotStarted.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeStateException.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchStateException.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/package-info.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/package-info.java delete mode 100644 framework/src/onos/protocols/openflow/api/src/test/java/org/onosproject/openflow/controller/OpenflowControllerAdapter.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/pom.xml delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutException.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutHandler.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageDecoder.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageEncoder.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenflowPipelineFactory.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/package-info.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelAdapter.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelHandlerContextAdapter.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/DriverAdapter.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/DriverServiceAdapter.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/ExecutorServiceAdapter.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfFeaturesReply.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfPacketIn.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfPortStatus.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OFDescStatsReplyAdapter.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OfMessageAdapter.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OpenFlowSwitchListenerAdapter.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/ControllerTest.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageDecoderTest.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageEncoderTest.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplPacketsTest.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java delete mode 100644 framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/RoleManagerTest.java delete mode 100644 framework/src/onos/protocols/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFSwitchImplSpringOpenTTPDellOSR.java delete mode 100644 framework/src/onos/protocols/openflow/pom.xml delete mode 100644 framework/src/onos/protocols/ovsdb/api/pom.xml delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/DefaultEventSubject.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/EventSubject.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridge.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridgeName.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbConstant.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbController.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbDatapathId.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEvent.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEventListener.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEventSubject.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbIfaceId.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeId.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeListener.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPort.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortName.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortNumber.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortType.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbRowStore.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbStore.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTableStore.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnel.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnelName.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/OvsdbAgent.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/OvsdbProviderService.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java delete mode 100644 framework/src/onos/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbControllerAdapter.java delete mode 100644 framework/src/onos/protocols/ovsdb/ctl/pom.xml delete mode 100644 framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/ChannelConnectionListener.java delete mode 100644 framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java delete mode 100644 framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/MessageDecoder.java delete mode 100644 framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java delete mode 100644 framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbJsonRpcHandler.java delete mode 100644 framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/pom.xml delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/pom.xml delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/AbnormalJsonNodeException.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/BridgeCreateException.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/ColumnSchemaNotFoundException.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/TableSchemaNotFoundException.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/UnsupportedException.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/VersionMismatchException.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/Callback.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonReadContext.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonRpcRequest.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonRpcResponse.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/OvsdbRPC.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/MonitorRequest.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/MonitorSelect.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/OperationResult.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/RowUpdate.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/TableUpdate.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/TableUpdates.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/UpdateNotification.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbMap.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbSet.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/RefTableRow.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/UUID.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/ConditionSerializer.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/MutationSerializer.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbMapSerializer.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbSetSerializer.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDConverter.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDSerializer.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UpdateNotificationConverter.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Abort.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Assert.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Comment.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Commit.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Delete.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Insert.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Mutate.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Operation.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Select.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Update.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/ColumnSchema.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/DatabaseSchema.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/TableSchema.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/AtomicColumnType.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseType.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseTypeFactory.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BooleanBaseType.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnType.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/IntegerBaseType.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/KeyValuedColumnType.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/RealBaseType.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/StringBaseType.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/UuidBaseType.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Bridge.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Controller.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowSampleCollectorSet.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowTable.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Interface.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ipfix.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Manager.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Mirror.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Netflow.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OpenVSwitch.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OvsdbTable.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Port.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Qos.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Queue.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Sflow.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ssl.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/TableGenerator.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/VersionNum.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/AbstractOvsdbTableService.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/ColumnDescription.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/OvsdbTableService.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/TableDescription.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/package-info.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ConditionUtil.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcWriterUtil.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/MutationUtil.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ObjectMapperUtil.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ParamUtil.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/StringEncoderUtil.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/TransValueUtil.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/VersionUtil.java delete mode 100644 framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/package-info.java delete mode 100644 framework/src/onos/protocols/pcep/api/pom.xml delete mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java delete mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java delete mode 100644 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java delete mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java delete mode 100644 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java delete mode 100644 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java delete mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java delete mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java delete mode 100755 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java delete mode 100644 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java delete mode 100644 framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java delete mode 100644 framework/src/onos/protocols/pcep/ctl/pom.xml delete mode 100644 framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/Controller.java delete mode 100644 framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepChannelHandler.java delete mode 100644 framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java delete mode 100644 framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientImpl.java delete mode 100644 framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageDecoder.java delete mode 100644 framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageEncoder.java delete mode 100644 framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java delete mode 100644 framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPipelineFactory.java delete mode 100644 framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/pom.xml delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEObject.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEReportMsg.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLspaObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMessageVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMetricObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepMsgPathVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenMsgVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepOpenObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRPObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepReportMsgVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepRroObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepSrpObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepStateReportVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEObjectVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepTEReportMsgVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateMsgVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepUpdateRequestVer1.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/package-info.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AdministrativeGroupTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/AutonomousSystemTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/BGPLSidentifierTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ErrorObjListWithOpen.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/GmplsCapabilityTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IGPMetricTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4SubObject.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6SubObject.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LabelSubObject.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkNameTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LinkProtectionTypeTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeFlagBitsTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OSPFareaIDsubTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodeAttributeTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathKeySubObject.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PathSetupTypeTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PceccCapabilityTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepErrorDetailInfo.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDbVerTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelDownload.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepLabelMap.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4Adjacency.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeId.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepObjectHeader.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpErrorSpec.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv4ErrorSpec.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpIpv6ErrorSpec.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpObjectHeader.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpSpecObjHeader.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepRsvpUserErrorSpec.java delete mode 100755 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepValueType.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RouterIDSubTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/RoutingUniverseTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SrEroSubObject.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspDbVerTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/StatefulRsvpErrorSpecTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TEDefaultMetricTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkAttributesTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TELinkDescriptorsTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TENodeAttributesTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/TedCapabilityTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/UnreservedBandwidthTlv.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/package-info.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/HexDump.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/util/package-info.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepCloseMsgTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepErrorMsgTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgExtTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepInitiateMsgTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsgTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsgTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepOpenMsgTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgExtTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepReportMsgTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepTEReportMsgTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgExtTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/protocol/PcepUpdateMsgTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AdministrativeGroupTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/AutonomousSystemTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/BGPLSidentifierTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/GmplsCapabilityTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IGPMetricTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4InterfaceAddressTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4NeighborAddressTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4SubObjectTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfLocalNodeTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv4TERouterIdOfRemoteNodeTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6InterfaceAddressTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6NeighborAddressTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6SubObjectTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofLocalNodeTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/IPv6TERouterIdofRemoteNodeTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/ISISAreaIdentifierTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LabelSubObjectTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkLocalRemoteIdentifiersTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkNameTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LinkProtectionTypeTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/LocalTENodeDescriptorsTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MPLSProtocolMaskTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumLinkBandwidthTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/MaximumReservableLinkBandwidthTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv4addressTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopIPv6addressTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NexthopUnnumberedIPv4IDTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeFlagBitsTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/NodeNameTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OSPFareaIDsubTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/OpaqueLinkAttributeTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathKeySubObjectTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PathSetupTypeTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PceccCapabilityTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4AdjacencyTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv4NodeIdTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6AdjacencyTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeIdTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/PcepNaiUnnumberedAdjacencyIpv4Test.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RemoteTENodeDescriptorsTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RouterIDSubTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/RoutingUniverseTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SharedRiskLinkGroupTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SrEroSubObjectTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulIPv4LspIdentidiersTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspDbVerTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulLspErrorCodeTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/StatefulPceCapabilityTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/SymbolicPathNameTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TEDefaultMetricTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkAttributesTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TELinkDescriptorsTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TENodeAttributesTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/TedCapabilityTlvTest.java delete mode 100644 framework/src/onos/protocols/pcep/pcepio/src/test/java/org/onosproject/pcepio/types/UnreservedBandwidthTlvTest.java delete mode 100755 framework/src/onos/protocols/pcep/pom.xml delete mode 100644 framework/src/onos/protocols/pom.xml (limited to 'framework/src/onos/protocols') diff --git a/framework/src/onos/protocols/bgp/api/pom.xml b/framework/src/onos/protocols/bgp/api/pom.xml deleted file mode 100755 index d233c48e..00000000 --- a/framework/src/onos/protocols/bgp/api/pom.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - 4.0.0 - - - org.onosproject - onos-bgp - 1.4.0-rc1 - ../pom.xml - - - onos-bgp-api - bundle - - ONOS BGP controller subsystem API - - - - org.onosproject - onos-bgpio - - - io.netty - netty - - - org.onosproject - onos-api - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 2.3 - - - - io.netty:netty - com.google.guava:guava - org.slf4j:slfj-api - ch.qos.logback:logback-core - ch.qos.logback:logback-classic - com.google.code.findbugs:annotations - - - - - - package - - shade - - - - - - org.apache.felix - maven-bundle-plugin - - - - org.onosproject.bgp.*,org.onosproject.bgpio.*,org.onosproject.bgp.controller - - - - - - - - diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpCfg.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpCfg.java deleted file mode 100755 index 6f64d2bb..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpCfg.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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.TreeMap; - -/** - * Abstraction of an BGP configuration. Manages the BGP configuration from CLI to the BGP controller. - */ -public interface BgpCfg { - - enum State { - /** - * Signifies that its just created. - */ - INIT, - - /** - * Signifies that only IP Address is configured. - */ - IP_CONFIGURED, - - /** - * Signifies that only Autonomous System is configured. - */ - AS_CONFIGURED, - - /** - * Signifies that both IP and Autonomous System is configured. - */ - IP_AS_CONFIGURED - } - - /** - * Returns the status of the configuration based on this state certain operations like connection is handled. - * - * @return State of the configuration - */ - State getState(); - - /** - * To set the current state of the configuration. - * - * @param state Configuration State enum - */ - void setState(State state); - - /** - * Get the status of the link state support for this BGP speaker. - * - * @return true if the link state is supported else false - */ - boolean getLsCapability(); - - /** - * Set the link state support to this BGP speaker. - * - * @param lscapability true value if link state is supported else false - */ - void setLsCapability(boolean lscapability); - - /** - * Get the status of the 32 bit AS support for this BGP speaker. - * - * @return true if the 32 bit AS number is supported else false - */ - boolean getLargeASCapability(); - - /** - * Set the 32 bit AS support capability to this BGP speaker. - * - * @param largeAs true value if the 32 bit AS is supported else false - */ - void setLargeASCapability(boolean largeAs); - - /** - * Set the AS number to which this BGP speaker belongs. - * - * @param localAs 16 or 32 bit AS number, length is dependent on the capability - */ - void setAsNumber(int localAs); - - /** - * Get the AS number to which this BGP speaker belongs. - * - * @return 16 or 32 bit AS number, length is dependent on the capability - */ - int getAsNumber(); - - /** - * Get the connection retry count number. - * - * @return connection retry count if there is a connection error - */ - int getMaxConnRetryCount(); - - /** - * Set the connection retry count. - * - * @param retryCount number of times to try to connect if there is any error - */ - void setMaxConnRetryCout(int retryCount); - - /** - * Get the connection retry time in seconds. - * - * @return connection retry time in seconds - */ - int getMaxConnRetryTime(); - - /** - * Set the connection retry time in seconds. - * - * @param retryTime connection retry times in seconds - */ - void setMaxConnRetryTime(int retryTime); - - /** - * Set the keep alive timer for the connection. - * - * @param holdTime connection hold timer in seconds - */ - void setHoldTime(short holdTime); - - /** - * Returns the connection hold timer in seconds. - * - * @return connection hold timer in seconds - */ - short getHoldTime(); - - /** - * Returns the maximum number of session supported. - * - * @return maximum number of session supported - */ - int getMaxSession(); - - /** - * Set the maximum number of sessions to support. - * - * @param maxsession maximum number of session - */ - void setMaxSession(int maxsession); - - /** - * Returns the Router ID of this BGP speaker. - * - * @return IP address in string format - */ - String getRouterId(); - - /** - * Set the Router ID of this BGP speaker. - * - * @param routerid IP address in string format - */ - void setRouterId(String routerid); - - /** - * Add the BGP peer IP address and the AS number to which it belongs. - * - * @param routerid IP address in string format - * @param remoteAs AS number to which it belongs - * - * @return true if added successfully else false - */ - boolean addPeer(String routerid, int remoteAs); - - /** - * Add the BGP peer IP address and the keep alive time. - * - * @param routerid IP address in string format - * @param holdTime keep alive time for the connection - * - * @return true if added successfully else false - */ - boolean addPeer(String routerid, short holdTime); - - /** - * Add the BGP peer IP address, the AS number to which it belongs and keep alive time. - * - * @param routerid IP address in string format - * @param remoteAs AS number to which it belongs - * @param holdTime keep alive time for the connection - * - * @return true if added successfully else false - */ - boolean addPeer(String routerid, int remoteAs, short holdTime); - - /** - * Remove the BGP peer with this IP address. - * - * @param routerid router IP address - * - * @return true if removed successfully else false - */ - boolean removePeer(String routerid); - - /** - * Connect to BGP peer with this IP address. - * - * @param routerid router IP address - * - * @return true of the configuration is found and able to connect else false - */ - boolean connectPeer(String routerid); - - /** - * Disconnect this BGP peer with this IP address. - * - * @param routerid router IP address in string format - * - * @return true if the configuration is found and able to disconnect else false - */ - boolean disconnectPeer(String routerid); - - /** - * Returns the peer tree information. - * - * @return return the tree map with IP as key and BGPPeerCfg as object - */ - TreeMap displayPeers(); - - /** - * Return the BGP Peer information with this matching IP. - * - * @param routerid router IP address in string format - * - * @return BGPPeerCfg object - */ - BgpPeerCfg displayPeers(String routerid); - - /** - * Check if this BGP peer is configured. - * - * @param routerid router IP address in string format - * - * @return true if configured exists else false - */ - boolean isPeerConfigured(String routerid); - - /** - * Check if this BGP speaker is having connection with the peer. - * - * @param routerid router IP address in string format - * - * @return true if the connection exists else false - */ - boolean isPeerConnected(String routerid); - - /** - * Return the peer tree map. - * - * @return return the tree map with IP as key and BGPPeerCfg as object - */ - TreeMap getPeerTree(); - - /** - * Set the current connection state information. - * - * @param routerid router IP address in string format - * @param state state information - */ - void setPeerConnState(String routerid, BgpPeerCfg.State state); - - /** - * Check if the peer can be connected or not. - * - * @param routerid router IP address in string format - * - * @return true if the peer can be connected else false - */ - boolean isPeerConnectable(String routerid); - - /** - * Get the current peer connection state information. - * - * @param routerid router IP address in string format - * - * @return state information - */ - BgpPeerCfg.State getPeerConnState(String routerid); -} diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpConnectPeer.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpConnectPeer.java deleted file mode 100755 index 8f33ee87..00000000 --- a/framework/src/onos/protocols/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; - -/** - * Abstraction of an BGP connect peer, initiate remote connection to BGP peer on configuration. - */ -public interface BgpConnectPeer { - /** - * Initiate bgp peer connection. - */ - void connectPeer(); - - /** - * End bgp peer connection. - */ - void disconnectPeer(); -} diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpController.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpController.java deleted file mode 100755 index 0930e8e8..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpController.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.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 - */ -public interface BgpController { - - /** - * Returns list of bgp peers connected to this BGP controller. - * - * @return Iterable of BGPPeer elements - */ - Iterable getPeers(); - - /** - * Returns the actual bgp peer for the given ip address. - * - * @param bgpId the id of the bgp peer to fetch - * @return the interface to this bgp peer - */ - 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); - - /** - * Send a message to a particular bgp peer. - * - * @param bgpId the id of the peer to send message. - * @param msg the message to send - */ - void writeMsg(BgpId bgpId, BgpMessage msg); - - /** - * Process a message and notify the appropriate listeners. - * - * @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) throws BgpParseException; - - /** - * Close all connected BGP peers. - * - */ - void closeConnectedPeers(); - - /** - * Get the BGPConfig class to the caller. - * - * @return configuration object - */ - BgpCfg getConfig(); - - /** - * Get the BGP connected peers to this controller. - * - * @return the integer number - */ - int connectedPeerCount(); - - /** - * Return BGP local RIB instance with VPN. - * - * @return BGPLocalRibImpl local RIB with VPN - */ - BgpLocalRib bgpLocalRibVpn(); - - /** - * Return BGP local RIB instance. - * - * @return BGPLocalRibImpl local RIB - */ - BgpLocalRib bgpLocalRib(); - - /** - * Return BGP peer manager. - * - * @return BGPPeerManager peer manager instance - */ - BgpPeerManager peerManager(); - - /** - * Return BGP connected peers. - * - * @return connectedPeers connected peers - */ - Map connectedPeers(); - - /** - * Return BGP node listener. - * - * @return node listener - */ - Set listener(); -} diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpDpid.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpDpid.java deleted file mode 100755 index ed04dc94..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpDpid.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 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 static com.google.common.base.Preconditions.checkArgument; - -import java.net.URI; -import java.net.URISyntaxException; - -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The class representing a network bgp device id. This class is immutable. - */ -public final class BgpDpid { - private static final Logger log = LoggerFactory.getLogger(BgpDpid.class); - - private static final String SCHEME = "bgp"; - private static final long UNKNOWN = 0; - private StringBuilder stringBuilder; - public static final int NODE_DESCRIPTOR_LOCAL = 1; - public static final int NODE_DESCRIPTOR_REMOTE = 2; - - /** - * Initialize bgp id to generate URI. - * - * @param linkNlri node Nlri. - * @param nodeDescriptorType node descriptor type, local/remote - */ - public BgpDpid(final BgpLinkLsNlriVer4 linkNlri, int nodeDescriptorType) { - this.stringBuilder = new StringBuilder("bgpls://"); - - if (linkNlri.getRouteDistinguisher() != null) { - this.stringBuilder.append(linkNlri.getRouteDistinguisher().getRouteDistinguisher()).append(':'); - } - - try { - this.stringBuilder.append(linkNlri.getProtocolId()).append(':').append(linkNlri.getIdentifier()) - .append('/'); - - if (nodeDescriptorType == NODE_DESCRIPTOR_LOCAL) { - add(linkNlri.localNodeDescriptors()); - } else if (nodeDescriptorType == NODE_DESCRIPTOR_REMOTE) { - add(linkNlri.remoteNodeDescriptors()); - } - } catch (BgpParseException e) { - log.info("Exception BgpId string: " + e.toString()); - } - - } - - /** - * Initialize bgp id to generate URI. - * - * @param nodeNlri node Nlri. - */ - public BgpDpid(final BgpNodeLSNlriVer4 nodeNlri) { - this.stringBuilder = new StringBuilder("bgpls://"); - - if (nodeNlri.getRouteDistinguisher() != null) { - this.stringBuilder.append(nodeNlri.getRouteDistinguisher().getRouteDistinguisher()).append(':'); - } - - try { - - this.stringBuilder.append(nodeNlri.getProtocolId()).append(':').append(nodeNlri.getIdentifier()) - .append('/'); - - add(nodeNlri.getLocalNodeDescriptors()); - - } catch (BgpParseException e) { - log.info("Exception node string: " + e.toString()); - } - } - - BgpDpid add(final Object value) { - if (value != null) { - this.stringBuilder.append('&').append('=').append(value.toString()); - } - return this; - } - - @Override - public String toString() { - return this.stringBuilder.toString(); - } - - /** - * Produces bgp URI. - * - * @param value string to get URI - * @return bgp URI, otherwise null - */ - public static URI uri(String value) { - try { - return new URI(SCHEME, value, null); - } catch (URISyntaxException e) { - log.info("Exception BgpId URI: " + e.toString()); - } - return null; - } - - /** - * Returns bgpDpid created from the given device URI. - * - * @param uri device URI - * @return object of BgpDpid - */ - public static BgpDpid bgpDpid(URI uri) { - checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme"); - - // TODO: return BgpDpid generated from uri - return null; - } -} diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpId.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpId.java deleted file mode 100755 index 7a6c625d..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpId.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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 org.onlab.packet.IpAddress; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * The class representing a network peer bgp ip. - * This class is immutable. - */ -public final class BgpId { - - private static final String SCHEME = "bgp"; - private static final long UNKNOWN = 0; - private final IpAddress ipAddress; - - /** - * Private constructor. - */ - private BgpId(IpAddress ipAddress) { - this.ipAddress = ipAddress; - } - - /** - * Create a BGPId from ip address. - * - * @param ipAddress IP address - * @return object of BGPId - */ - public static BgpId bgpId(IpAddress ipAddress) { - return new BgpId(ipAddress); - } - - /** - * Returns the ip address. - * - * @return ipAddress - */ - public IpAddress ipAddress() { - return ipAddress; - } - - /** - * Convert the BGPId value to a ':' separated hexadecimal string. - * - * @return the BGPId value as a ':' separated hexadecimal string. - */ - @Override - public String toString() { - return ipAddress.toString(); - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof BgpId)) { - return false; - } - - BgpId otherBGPid = (BgpId) other; - return Objects.equals(ipAddress, otherBGPid.ipAddress); - } - - @Override - public int hashCode() { - return Objects.hash(ipAddress); - } - - /** - * Returns BGPId created from the given device URI. - * - * @param uri device URI - * @return object of BGPId - */ - public static BgpId bgpId(URI uri) { - checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme"); - return new BgpId(IpAddress.valueOf(uri.getSchemeSpecificPart())); - } - - /** - * Produces device URI from the given DPID. - * - * @param bgpId device bgpId - * @return device URI - */ - public static URI uri(BgpId bgpId) { - return uri(bgpId.ipAddress()); - } - - /** - * Produces device URI from the given DPID long. - * - * @param ipAddress device ip address - * @return device URI - */ - public static URI uri(IpAddress ipAddress) { - try { - return new URI(SCHEME, ipAddress.toString(), null); - } catch (URISyntaxException e) { - return null; - } - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpLinkListener.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpLinkListener.java deleted file mode 100755 index 8b34e314..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpLinkListener.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.bgp.controller; - -import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4; - -/** - * Allows for providers interested in Link events to be notified. - */ -public interface BgpLinkListener { - - /** - * Notify that got a packet of link from network and need do processing. - * - * @param linkNlri bgp link - */ - void addLink(BgpLinkLsNlriVer4 linkNlri); - - /** - * Notify that got a packet of link from network and need do processing. - * - * @param linkNlri bgp link - */ - void deleteLink(BgpLinkLsNlriVer4 linkNlri); -} diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpLocalRib.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpLocalRib.java deleted file mode 100755 index 636c1c85..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpLocalRib.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.bgp.controller; - -import org.onosproject.bgpio.protocol.BgpLSNlri; -import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetails; -import org.onosproject.bgpio.types.RouteDistinguisher; - -/** - * Abstraction of BGP local RIB. - */ -public interface BgpLocalRib { - - /** - * Add NLRI to local RIB. - * - * @param sessionInfo session info - * @param nlri network layer reach info - * @param details nlri details - */ - void add(BgpSessionInfo sessionInfo, BgpLSNlri nlri, PathAttrNlriDetails details); - - /** - * Removes NLRI identifier if it exists. - * - * @param nlri info - */ - void delete(BgpLSNlri nlri); - - /** - * Update NLRI identifier mapped with route distinguisher if it exists in tree otherwise add NLRI infomation mapped - * to respective route distinguisher. - * - * @param sessionInfo BGP session info - * @param nlri info - * @param details has pathattribute, protocol id and identifier - * @param routeDistinguisher unique for each VPN - */ - void add(BgpSessionInfo sessionInfo, BgpLSNlri nlri, PathAttrNlriDetails details, - RouteDistinguisher routeDistinguisher); - - /** - * Removes VPN NLRI identifier mapped to route distinguisher if it exists. - * - * @param nlri info - * @param routeDistinguisher unique for each VPN - */ - void delete(BgpLSNlri nlri, RouteDistinguisher routeDistinguisher); -} diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpNodeListener.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpNodeListener.java deleted file mode 100755 index 726d931b..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpNodeListener.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.bgp.controller; - -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4; - -/** - * Allows for providers interested in node events to be notified. - */ -public interface BgpNodeListener { - - /** - * Notifies that the node was added. - * - * @param nodeNlri node rechability info - */ - void addNode(BgpNodeLSNlriVer4 nodeNlri); - - /** - * Notifies that the node was removed. - * - * @param nodeNlri node rechability info - */ - void deleteNode(BgpNodeLSNlriVer4 nodeNlri); -} diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPacketStats.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPacketStats.java deleted file mode 100755 index 8fd3c688..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPacketStats.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.bgp.controller; - -/** - * 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 BgpPacketStats { - /** - * 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. - * - * @return the time - */ - long getTime(); -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeer.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeer.java deleted file mode 100644 index 9f4d47da..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeer.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.bgp.controller; -import java.util.List; -import org.jboss.netty.channel.Channel; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.BgpFactory; -import org.onosproject.bgpio.protocol.BgpMessage; -import org.onosproject.bgpio.types.BgpValueType; - -/** - * Represents the peer side of an BGP peer. - * - */ -public interface BgpPeer { - - /** - * Sets the associated Netty channel for this bgp peer. - * - * @param channel the Netty channel - */ - void setChannel(Channel channel); - - /** - * Gets the associated Netty channel handler for this bgp peer. - * - * @return Channel channel connected. - */ - Channel getChannel(); - - /** - * Sets whether the bgp peer is connected. - * - * @param connected whether the bgp peer is connected - */ - void setConnected(boolean connected); - - /** - * Checks whether the handshake is complete. - * - * @return true is finished, false if not. - */ - boolean isHandshakeComplete(); - - /** - * Writes the message to the peer. - * - * @param msg the message to write - */ - void sendMessage(BgpMessage msg); - - /** - * Writes the BGPMessage list to the peer. - * - * @param msgs the messages to be written - */ - void sendMessage(List msgs); - - /** - * Provides the factory for BGP version. - * - * @return BGP version specific factory. - */ - BgpFactory factory(); - - /** - * Checks if the bgp peer is still connected. - * - * @return whether the bgp peer is still connected - */ - boolean isConnected(); - - /** - * Disconnects the bgp peer by closing the TCP connection. Results in a call to the channel handler's - * channelDisconnected method for cleanup - */ - void disconnectPeer(); - - /** - * Identifies the channel used to communicate with the bgp peer. - * - * @return string representation of the connection to the peer - */ - String channelId(); - - /** - * Maintaining Adj-RIB-In separately for each peer. - * - * @param pathAttr list of Bgp path attributes - * @throws BgpParseException while building Adj-Rib-In - */ - void buildAdjRibIn(List pathAttr) throws BgpParseException; - - /** - * Return the BGP session info. - * - * @return sessionInfo bgp session info - */ - BgpSessionInfo sessionInfo(); -} diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeerCfg.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeerCfg.java deleted file mode 100755 index 2fb970fc..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeerCfg.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. - */ -package org.onosproject.bgp.controller; - -/** - * BGP Peer configuration information. - */ -public interface BgpPeerCfg { - - enum State { - - /** - * Signifies that peer connection is idle. - */ - IDLE, - - /** - * Signifies that connection is initiated. - */ - CONNECT, - - /** - * Signifies that state is active and connection can be established. - */ - ACTIVE, - - /** - * Signifies that open is sent and anticipating reply. - */ - OPENSENT, - - /** - * Signifies that peer sent the open message as reply. - */ - OPENCONFIRM, - - /** - * Signifies that all the negotiation is successful and ready to exchange other messages. - */ - ESTABLISHED, - - /** - * Signifies that invalid state. - */ - INVALID - } - - /** - * Returns the connection State information of the peer. - * - * @return - * enum state is returned - */ - State getState(); - - /** - * Set the connection state information of the peer. - * - * @param state - * enum state - */ - void setState(State state); - - /** - * Returns the connection is initiated from us or not. - * - * @return - * true if the connection is initiated by this peer, false if it has been received. - */ - boolean getSelfInnitConnection(); - - /** - * Set the connection is initiated from us or not. - * - * @param selfInit - * true if the connection is initiated by this peer, false if it has been received. - */ - void setSelfInnitConnection(boolean selfInit); - - /** - * Returns the AS number to which this peer belongs. - * - * @return - * AS number - */ - int getAsNumber(); - - /** - * Set the AS number to which this peer belongs. - * - * @param asNumber - * AS number - */ - void setAsNumber(int asNumber); - - /** - * Get the keep alive timer value configured. - * - * @return - * keep alive timer value in seconds - */ - short getHoldtime(); - - /** - * Set the keep alive timer value. - * - * @param holdTime - * keep alive timer value in seconds - */ - void setHoldtime(short holdTime); - - /** - * Return the connection type eBGP or iBGP. - * - * @return - * true if iBGP, false if it is eBGP - */ - boolean getIsIBgp(); - - /** - * Set the connection type eBGP or iBGP. - * - * @param isIBgp - * true if iBGP, false if it is eBGP - */ - void setIsIBgp(boolean isIBgp); - - /** - * Return the peer router IP address. - * - * @return - * IP address in string format - */ - String getPeerRouterId(); - - /** - * Set the peer router IP address. - * - * @param peerId - * IP address in string format - */ - void setPeerRouterId(String peerId); - - /** - * Set the peer router IP address and AS number. - * - * @param peerId - * IP address in string format - * @param asNumber - * 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/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeerManager.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeerManager.java deleted file mode 100755 index 895cc145..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpPeerManager.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.bgp.controller; - -/** - * Responsible for keeping track of the current set BGPLS peers connected to the system. - * - */ -public interface BgpPeerManager { - - /** - * Add connected peer. - * - * @param bgpId BGP ID to add - * @param bgpPeer BGp peer instance - * - * @return false if peer already exist, otherwise true - */ - public boolean addConnectedPeer(BgpId bgpId, BgpPeer bgpPeer); - - /** - * Validate wheather peer is connected. - * - * @param bgpId BGP ID to validate - * - * @return true if peer exist, otherwise false - */ - public boolean isPeerConnected(BgpId bgpId); - - /** - * Remove connected peer. - * - * @param bgpId BGP ID - */ - public void removeConnectedPeer(BgpId bgpId); - - /** - * Gets connected peer. - * - * @param bgpId BGP ID - * @return BGPPeer the connected peer, otherwise null - */ - public BgpPeer getPeer(BgpId bgpId); -} diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpSessionInfo.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpSessionInfo.java deleted file mode 100755 index a21a23d2..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpSessionInfo.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 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 org.onosproject.bgpio.protocol.BgpVersion; - -/** - * Abstraction of an BGP session info. Maintian session parameters obtained during session creation. - */ -public interface BgpSessionInfo { - /** - * Gets the bgp session type iBGP/eBGP. - * - * @return isiBGPSession, true if session is of type internal, otherwise false. - */ - boolean isIbgpSession(); - - /** - * Gets the negotiated hold time for the session. - * - * @return negotiated hold time. - */ - short negotiatedholdTime(); - - /** - * Gets the BGP ID of BGP peer. - * - * @return bgp ID. - */ - BgpId remoteBgpId(); - - /** - * Gets the BGP version of peer. - * - * @return bgp version. - */ - BgpVersion remoteBgpVersion(); - - /** - * Gets the BGP remote bgp AS number. - * - * @return remoteBgpASNum peer AS number. - */ - long remoteBgpASNum(); - - /** - * Gets the BGP peer hold time. - * - * @return bgp hold time. - */ - short remoteBgpHoldTime(); - - /** - * Gets the BGP version for this bgp peer. - * - * @return bgp identifier. - */ - int remoteBgpIdentifier(); -} diff --git a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/package-info.java b/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/package-info.java deleted file mode 100755 index 4dd775b8..00000000 --- a/framework/src/onos/protocols/bgp/api/src/main/java/org/onosproject/bgp/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. - */ - -/** - * BGP controller API. - */ -package org.onosproject.bgp.controller; diff --git a/framework/src/onos/protocols/bgp/bgpio/pom.xml b/framework/src/onos/protocols/bgp/bgpio/pom.xml deleted file mode 100755 index 06206e8f..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - 4.0.0 - - - org.onosproject - onos-bgp - 1.4.0-rc1 - ../pom.xml - - - onos-bgpio - bundle - - ONOS BGPio Protocol subsystem - - - - org.onosproject - onos-api - - - org.onosproject - onlab-osgi - - - - com.fasterxml.jackson.core - jackson-databind - - - com.fasterxml.jackson.core - jackson-annotations - - - - org.osgi - org.osgi.core - - - org.apache.karaf.shell - org.apache.karaf.shell.console - - - org.apache.felix - org.apache.felix.scr.annotations - - - - - - - org.apache.felix - maven-bundle-plugin - - - - - diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/exceptions/BgpParseException.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/exceptions/BgpParseException.java deleted file mode 100755 index d0890320..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/exceptions/BgpParseException.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.bgpio.exceptions; - -import org.jboss.netty.buffer.ChannelBuffer; - -/** - * Custom Exception for BGP IO. - */ -public class BgpParseException extends Exception { - - private static final long serialVersionUID = 1L; - private byte errorCode; - private byte errorSubCode; - private ChannelBuffer data; - - /** - * Default constructor to create a new exception. - */ - public BgpParseException() { - 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 BgpParseException(final String message, final Throwable cause) { - super(message, cause); - } - - /** - * Constructor to create exception from message. - * - * @param message the detail of exception in string - */ - public BgpParseException(final String message) { - super(message); - } - - /** - * Constructor to create exception from cause. - * - * @param cause underlying cause of the error - */ - public BgpParseException(final Throwable cause) { - super(cause); - } - - /** - * Constructor to create exception from error code and error subcode. - * - * @param errorCode error code of BGP message - * @param errorSubCode error subcode of BGP message - * @param data error data of BGP message - */ - public BgpParseException(final byte errorCode, final byte errorSubCode, final ChannelBuffer data) { - super(); - this.errorCode = errorCode; - this.errorSubCode = errorSubCode; - this.data = data; - } - - /** - * Returns errorcode for this exception. - * - * @return errorcode for this exception - */ - public byte getErrorCode() { - return this.errorCode; - } - - /** - * Returns error Subcode for this exception. - * - * @return error Subcode for this exception - */ - public byte getErrorSubCode() { - return this.errorSubCode; - } - - /** - * Returns error data for this exception. - * - * @return error data for this exception - */ - public ChannelBuffer getData() { - return this.data; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/exceptions/package-info.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/exceptions/package-info.java deleted file mode 100755 index 78b28072..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/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. - */ - -/** - * BGP custom exceptions. - */ -package org.onosproject.bgpio.exceptions; diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactories.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactories.java deleted file mode 100755 index eb18c7d1..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactories.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.bgpio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.ver4.BgpFactoryVer4; -import org.onosproject.bgpio.types.BgpHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Abstraction to provide the version for BGP. - */ -public final class BgpFactories { - - protected static final Logger log = LoggerFactory.getLogger(BgpFactories.class); - - private static final GenericReader GENERIC_READER = new GenericReader(); - - private BgpFactories() { - } - - /** - * Returns the instance of BGP Version. - * - * @param version BGP version - * @return BGP version - */ - public static BgpFactory getFactory(BgpVersion version) { - switch (version) { - case BGP_4: - return BgpFactoryVer4.INSTANCE; - default: - throw new IllegalArgumentException("[BgpFactory:]Unknown version: " + version); - } - } - - /** - * Reader class for reading BGP messages from channel buffer. - * - */ - private static class GenericReader implements BgpMessageReader { - - @Override - public BgpMessage readFrom(ChannelBuffer bb, BgpHeader bgpHeader) - throws BgpParseException { - BgpFactory factory; - - if (!bb.readable()) { - log.error("Empty message received"); - throw new BgpParseException("Empty message received"); - } - // TODO: Currently only BGP version 4 is supported - factory = org.onosproject.bgpio.protocol.ver4.BgpFactoryVer4.INSTANCE; - return factory.getReader().readFrom(bb, bgpHeader); - } - } - - /** - * Returns BGP messsage generic reader. - * - * @return bgp message generic reader - */ - public static BgpMessageReader getGenericReader() { - return GENERIC_READER; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactory.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactory.java deleted file mode 100755 index 11a85ff8..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactory.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.bgpio.protocol; - -/** - * Abstraction of an message factory providing builder functions to BGP messages - * and objects. - * - */ -public interface BgpFactory { - - /** - * Gets the builder object for a open message. - * - * @return builder object for open message - */ - BgpOpenMsg.Builder openMessageBuilder(); - - /** - * Gets the builder object for a keepalive message. - * - * @return builder object for keepalive message - */ - BgpKeepaliveMsg.Builder keepaliveMessageBuilder(); - - /** - * Gets the builder object for a notification message. - * - * @return builder object for notification message. - */ - BgpNotificationMsg.Builder notificationMessageBuilder(); - - /** - * Gets the BGP message reader. - * - * @return BGP message reader - */ - BgpMessageReader getReader(); - - /** - * Returns BGP version. - * - * @return BGP version - */ - BgpVersion getVersion(); -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpKeepaliveMsg.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpKeepaliveMsg.java deleted file mode 100644 index 0cb776a0..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpKeepaliveMsg.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.types.BgpHeader; - -/** - * Abstraction of an entity providing BGP Keepalive Message. - */ -public interface BgpKeepaliveMsg extends BgpMessage { - - @Override - BgpVersion getVersion(); - - @Override - BgpType getType(); - - @Override - void writeTo(ChannelBuffer channelBuffer); - - @Override - BgpHeader getHeader(); - - /** - * Builder interface with get and set functions to build Keepalive message. - */ - interface Builder extends BgpMessage.Builder { - @Override - BgpKeepaliveMsg build(); - - @Override - Builder setHeader(BgpHeader bgpMsgHeader); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLSNlri.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLSNlri.java deleted file mode 100644 index dd8857a7..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLSNlri.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.bgpio.protocol; - -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4.ProtocolType; -import org.onosproject.bgpio.types.RouteDistinguisher; - -/** - * Abstraction of an entity providing BGP-LS NLRI. - */ -public interface BgpLSNlri { - /** - * Returns NlriType of BGP-LS NLRI. - * - * @return NlriType of BGP-LS NLRI - */ - NlriType getNlriType(); - - /** - * Returns Identifier in Nlri. - * - * @return Identifier in Nlri - */ - long getIdentifier(); - - /** - * Returns Protocol Id in Nlri. - * - * @return Protocol Id in Nlri - * @throws BgpParseException while getting protocol ID - */ - ProtocolType getProtocolId() throws BgpParseException; - - /** - * Returns Route distinguisher in Nlri. - * - * @return Route distinguisher in Nlri - */ - RouteDistinguisher getRouteDistinguisher(); -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java deleted file mode 100644 index 3924a13b..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol; - -import java.util.List; - -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.protocol.linkstate.NodeDescriptors; - -/** - * Abstraction of an entity providing BGP-LS Link NLRI. - */ -public interface BgpLinkLsNlri extends BgpLSNlri { - /** - * Returns local node descriptors. - * - * @return local node descriptors - */ - NodeDescriptors localNodeDescriptors(); - - /** - * Returns remote node descriptors. - * - * @return remote node descriptors - */ - NodeDescriptors remoteNodeDescriptors(); - - /** - * Returns link descriptors. - * - * @return link descriptors - */ - List linkDescriptors(); -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessage.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessage.java deleted file mode 100644 index f1e1b96f..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessage.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.bgpio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpHeader; - -/** - * Abstraction of an entity providing BGP Messages. - */ -public interface BgpMessage extends Writeable { - /** - * Returns BGP Header of BGP Message. - * - * @return BGP Header of BGP Message - */ - BgpHeader getHeader(); - - /** - * Returns version of BGP Message. - * - * @return version of BGP Message - */ - BgpVersion getVersion(); - - /** - * Returns BGP Type of BGP Message. - * - * @return BGP Type of BGP Message - */ - BgpType getType(); - - @Override - void writeTo(ChannelBuffer cb) throws BgpParseException; - - /** - * Builder interface with get and set functions to build BGP Message. - */ - interface Builder { - /** - * Builds BGP Message. - * - * @return BGP Message - * @throws BgpParseException while building bgp message - */ - BgpMessage build() throws BgpParseException; - - /** - * Sets BgpHeader and return its builder. - * - * @param bgpMsgHeader BGP Message Header - * @return builder by setting BGP message header - */ - Builder setHeader(BgpHeader bgpMsgHeader); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessageReader.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessageReader.java deleted file mode 100755 index b8318b29..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessageReader.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.bgpio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpHeader; - -/** - * Abstraction of an entity providing BGP Message Reader. - */ -public interface BgpMessageReader { - - /** - * Reads the Objects in the BGP Message and Returns BGP Message. - * - * @param cb Channel Buffer - * @param bgpHeader BGP message header - * @return BGP Message - * @throws BgpParseException while parsing BGP message. - */ - T readFrom(ChannelBuffer cb, BgpHeader bgpHeader) throws BgpParseException; -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessageWriter.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessageWriter.java deleted file mode 100644 index bb75b5ea..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpMessageWriter.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.bgpio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; - -/** - * Abstraction of an entity providing BGP Message Writer. - */ -public interface BgpMessageWriter { - - /** - * Writes the Objects of the BGP Message into Channel Buffer. - * - * @param cb Channel Buffer - * @param message BGP Message - * @throws BgpParseException - * While writing message - */ - void write(ChannelBuffer cb, T message) throws BgpParseException; -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpNodeLSNlri.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpNodeLSNlri.java deleted file mode 100644 index 13ef5cc5..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpNodeLSNlri.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.bgpio.protocol; - -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSIdentifier; - -/** - * Abstraction of an entity providing BGP-LS Node NLRI. - */ -public interface BgpNodeLSNlri extends BgpLSNlri { - /** - * Returns local node descriptors. - * - * @return local node descriptors - */ - BgpNodeLSIdentifier getLocalNodeDescriptors(); -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpNotificationMsg.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpNotificationMsg.java deleted file mode 100644 index e3361aa7..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpNotificationMsg.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.bgpio.protocol; - -import org.onosproject.bgpio.exceptions.BgpParseException; - -/** - * Abstraction of an entity providing BGP notification message. - */ -public interface BgpNotificationMsg extends BgpMessage { - /** - * Returns errorCode in notification message. - * - * @return errorCode in notification message - */ - byte getErrorCode(); - - /** - * Returns error subCode in notification message. - * - * @return error subCode in notification message - */ - byte getErrorSubCode(); - - /** - * Returns error data in notification message. - * - * @return error data in notification message - */ - byte[] getData(); - - /** - * Builder interface with get and set functions to build notification message. - */ - public interface Builder extends BgpMessage.Builder { - - @Override - BgpNotificationMsg build() throws BgpParseException; - - /** - * Sets errorCode in notification message and return its builder. - * - * @param errorCode in notification message - * @return builder by setting errorCode in notification message - */ - Builder setErrorCode(byte errorCode); - - /** - * Sets error subCode in notification message and return its builder. - * - * @param errorSubCode in notification message - * @return builder by setting error subCode in notification message - */ - Builder setErrorSubCode(byte errorSubCode); - - /** - * Sets error data in notification message and return its builder. - * - * @param data in notification message - * @return builder by setting Data in notification message - */ - Builder setData(byte[] data); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpOpenMsg.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpOpenMsg.java deleted file mode 100644 index 94ec2235..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpOpenMsg.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol; - -import java.util.LinkedList; - -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpHeader; -import org.onosproject.bgpio.types.BgpValueType; - -/** - * Abstraction of an entity providing BGP Open Message. - */ -public interface BgpOpenMsg extends BgpMessage { - - @Override - BgpHeader getHeader(); - - @Override - BgpVersion getVersion(); - - @Override - BgpType getType(); - - /** - * Returns hold time of Open Message. - * - * @return hold time of Open Message - */ - short getHoldTime(); - - /** - * Returns AS Number of Open Message. - * - * @return AS Number of Open Message - */ - short getAsNumber(); - - /** - * Returns BGP Identifier of Open Message. - * - * @return BGP Identifier of Open Message - */ - int getBgpId(); - - /** - * Returns capabilities of Open Message. - * - * @return capabilities of Open Message - */ - LinkedList getCapabilityTlv(); - - /** - * Builder interface with get and set functions to build Open message. - */ - interface Builder extends BgpMessage.Builder { - - @Override - BgpOpenMsg build() throws BgpParseException; - - /** - * Sets hold time in Open Message and return its builder. - * - * @param holdtime hold timer value in open message - * @return builder by setting hold time - */ - Builder setHoldTime(short holdtime); - - /** - * Sets AS number in Open Message and return its builder. - * - * @param asNumber as number in open message - * @return builder by setting asNumber - */ - Builder setAsNumber(short asNumber); - - /** - * Sets BGP Identifier in Open Message and return its builder. - * - * @param bgpId BGP Identifier in open message - * @return builder by setting BGP Identifier - */ - Builder setBgpId(int bgpId); - - /** - * Sets capabilities in Open Message and return its builder. - * - * @param capabilityTlv capabilities in open message - * @return builder by setting capabilities - */ - Builder setCapabilityTlv(LinkedList capabilityTlv); - - /** - * Sets isLargeAsCapabilityTlvSet and return its builder. - * - * @param isLargeAsCapabilitySet - * boolean value to know whether large AS capability is set or not - * @return builder by setting capabilities - */ - Builder setLargeAsCapabilityTlv(boolean isLargeAsCapabilitySet); - - /** - * Sets isLsCapabilityTlvSet and return its builder. - * - * @param isLsCapabilitySet - * boolean value to know whether LS capability is set or not - * @return builder by setting capabilities - */ - Builder setLsCapabilityTlv(boolean isLsCapabilitySet); - - @Override - Builder setHeader(BgpHeader bgpMsgHeader); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpPrefixLSNlri.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpPrefixLSNlri.java deleted file mode 100644 index 54bcdba3..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpPrefixLSNlri.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.bgpio.protocol; - -import java.util.List; - -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.protocol.linkstate.NodeDescriptors; - -/** - * Abstraction of an entity providing BGP-LS Prefix NLRI. - */ -public interface BgpPrefixLSNlri extends BgpLSNlri { - /** - * Returns local node descriptors. - * - * @return local node descriptors - */ - NodeDescriptors getLocalNodeDescriptors(); - - /** - * Returns list of Prefix descriptor. - * - * @return list of Prefix descriptor - */ - List getPrefixdescriptor(); -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpType.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpType.java deleted file mode 100755 index b90721d5..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpType.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.bgpio.protocol; - -/** - * Enum to Provide the Different types of BGP messages. - */ -public enum BgpType { - - NONE(0), OPEN(1), UPDATE(2), NOTIFICATION(3), KEEP_ALIVE(4); - - int value; - - /** - * Assign value with the value val as the types of BGP message. - * - * @param val type of BGP message - */ - BgpType(int val) { - value = val; - } - - /** - * Returns value as type of BGP message. - * - * @return value type of BGP message - */ - public byte getType() { - return (byte) value; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpUpdateMsg.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpUpdateMsg.java deleted file mode 100644 index d79a4236..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpUpdateMsg.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.bgpio.protocol; - -import java.util.List; - -import org.onlab.packet.IpPrefix; -import org.onosproject.bgpio.protocol.ver4.BgpPathAttributes; - -/** - * Abstraction of an entity providing BGP Update Message. - */ -public interface BgpUpdateMsg extends BgpMessage { - /** - * Returns path attributes in BGP Update Message. - * - * @return path attributes in BGP Update Message - */ - BgpPathAttributes bgpPathAttributes(); - - /** - * Returns withdrawn Routes. - * - * @return withdrawn Routes - */ - List withdrawnRoutes(); - - /** - * Returns NLRI list of prefix. - * - * @return NLRI list of prefix - */ - List nlri(); -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpVersion.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpVersion.java deleted file mode 100755 index b1f037f4..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpVersion.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.bgpio.protocol; - -/** - * Enum to provide BGP Message Version. - */ -public enum BgpVersion { - - BGP_4(4); - - public final int packetVersion; - - /** - * Assign BGP PacketVersion with specified packetVersion. - * - * @param packetVersion version of BGP - */ - BgpVersion(final int packetVersion) { - this.packetVersion = packetVersion; - } - - /** - * Returns Packet version of BGP Message. - * - * @return packetVersion - */ - public int getPacketVersion() { - return packetVersion; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/IGPRouterID.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/IGPRouterID.java deleted file mode 100644 index 0e531d64..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/IGPRouterID.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.bgpio.protocol; - -/** - * Provides Abstraction of IGP RouterID TLV. - */ -public interface IGPRouterID { -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/NlriType.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/NlriType.java deleted file mode 100644 index 535ba71d..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/NlriType.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.bgpio.protocol; - -/** - * Enum to Provide the Different BGP-LS NLRI types. - */ -public enum NlriType { - - NODE(1), LINK(2), PREFIX_IPV4(3), PREFIX_IPV6(4); - - int value; - - /** - * Assign value with the value as the LINK-STATE NLRI type. - * - * @param value LINK-STATE NLRI type - */ - NlriType(int value) { - this.value = value; - } - - /** - * Returns value as LINK-STATE NLRI type. - * - * @return value LINK-STATE NLRI type - */ - public byte getType() { - return (byte) value; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/Writeable.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/Writeable.java deleted file mode 100755 index 1c6f7fc2..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/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.bgpio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; - -/** - * 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 cb channelBuffer - * @throws BgpParseException when error occurs while writing BGP message to channel buffer - */ - void writeTo(ChannelBuffer cb) throws BgpParseException; -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLSIdentifier.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLSIdentifier.java deleted file mode 100644 index a4360fdf..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLSIdentifier.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol.linkstate; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.IPv4AddressTlv; -import org.onosproject.bgpio.types.IPv6AddressTlv; -import org.onosproject.bgpio.types.LinkLocalRemoteIdentifiersTlv; -import org.onosproject.bgpio.types.attr.BgpAttrNodeMultiTopologyId; -import org.onosproject.bgpio.util.Constants; -import org.onosproject.bgpio.util.UnSupportedAttribute; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Preconditions; - -/** - * Implementation of local node descriptors, remote node descriptors and link descriptors. - */ -public class BgpLinkLSIdentifier implements Comparable { - private static final Logger log = LoggerFactory.getLogger(BgpLinkLSIdentifier.class); - public static final short IPV4_INTERFACE_ADDRESS_TYPE = 259; - public static final short IPV4_NEIGHBOR_ADDRESS_TYPE = 260; - public static final short IPV6_INTERFACE_ADDRESS_TYPE = 261; - public static final short IPV6_NEIGHBOR_ADDRESS_TYPE = 262; - - private NodeDescriptors localNodeDescriptors; - private NodeDescriptors remoteNodeDescriptors; - private List linkDescriptor; - - /** - * Initialize fields. - */ - public BgpLinkLSIdentifier() { - this.localNodeDescriptors = null; - this.remoteNodeDescriptors = null; - this.linkDescriptor = null; - } - - /** - * Constructors to initialize parameters. - * - * @param localNodeDescriptors local node descriptors - * @param remoteNodeDescriptors remote node descriptors - * @param linkDescriptor link descriptors - */ - public BgpLinkLSIdentifier(NodeDescriptors localNodeDescriptors, NodeDescriptors remoteNodeDescriptors, - LinkedList linkDescriptor) { - this.localNodeDescriptors = Preconditions.checkNotNull(localNodeDescriptors); - this.remoteNodeDescriptors = Preconditions.checkNotNull(remoteNodeDescriptors); - this.linkDescriptor = Preconditions.checkNotNull(linkDescriptor); - } - - /** - * Reads channel buffer and parses link identifier. - * - * @param cb ChannelBuffer - * @param protocolId in linkstate nlri - * @return object of BGPLinkLSIdentifier - * @throws BgpParseException while parsing link identifier - */ - public static BgpLinkLSIdentifier parseLinkIdendifier(ChannelBuffer cb, byte protocolId) throws BgpParseException { - //Parse local node descriptor - NodeDescriptors localNodeDescriptors = new NodeDescriptors(); - localNodeDescriptors = parseNodeDescriptors(cb, NodeDescriptors.LOCAL_NODE_DES_TYPE, protocolId); - - //Parse remote node descriptor - NodeDescriptors remoteNodeDescriptors = new NodeDescriptors(); - remoteNodeDescriptors = parseNodeDescriptors(cb, NodeDescriptors.REMOTE_NODE_DES_TYPE, protocolId); - - //Parse link descriptor - LinkedList linkDescriptor = new LinkedList<>(); - linkDescriptor = parseLinkDescriptors(cb); - return new BgpLinkLSIdentifier(localNodeDescriptors, remoteNodeDescriptors, linkDescriptor); - } - - /** - * Parses Local/Remote node descriptors. - * - * @param cb ChannelBuffer - * @param desType descriptor type - * @param protocolId protocol identifier - * @return object of NodeDescriptors - * @throws BgpParseException while parsing Local/Remote node descriptors - */ - public static NodeDescriptors parseNodeDescriptors(ChannelBuffer cb, short desType, byte protocolId) - throws BgpParseException { - log.debug("parse Node descriptors"); - ChannelBuffer tempBuf = cb.copy(); - short type = cb.readShort(); - short length = cb.readShort(); - if (cb.readableBytes() < length) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR, - tempBuf.readBytes(cb.readableBytes() + Constants.TYPE_AND_LEN_AS_SHORT)); - } - NodeDescriptors nodeIdentifier = new NodeDescriptors(); - ChannelBuffer tempCb = cb.readBytes(length); - - if (type == desType) { - nodeIdentifier = NodeDescriptors.read(tempCb, length, desType, protocolId); - } else { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.MALFORMED_ATTRIBUTE_LIST, null); - } - return nodeIdentifier; - } - - /** - * Parses link descriptors. - * - * @param cb ChannelBuffer - * @return list of link descriptors - * @throws BgpParseException while parsing link descriptors - */ - public static LinkedList parseLinkDescriptors(ChannelBuffer cb) throws BgpParseException { - LinkedList linkDescriptor = new LinkedList<>(); - BgpValueType tlv = null; - int count = 0; - - while (cb.readableBytes() > 0) { - ChannelBuffer tempBuf = cb.copy(); - short type = cb.readShort(); - short length = cb.readShort(); - if (cb.readableBytes() < length) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR, - tempBuf.readBytes(cb.readableBytes() + Constants.TYPE_AND_LEN_AS_SHORT)); - } - ChannelBuffer tempCb = cb.readBytes(length); - switch (type) { - case LinkLocalRemoteIdentifiersTlv.TYPE: - tlv = LinkLocalRemoteIdentifiersTlv.read(tempCb); - break; - case IPV4_INTERFACE_ADDRESS_TYPE: - tlv = IPv4AddressTlv.read(tempCb, IPV4_INTERFACE_ADDRESS_TYPE); - break; - case IPV4_NEIGHBOR_ADDRESS_TYPE: - tlv = IPv4AddressTlv.read(tempCb, IPV4_NEIGHBOR_ADDRESS_TYPE); - break; - case IPV6_INTERFACE_ADDRESS_TYPE: - tlv = IPv6AddressTlv.read(tempCb, IPV6_INTERFACE_ADDRESS_TYPE); - break; - case IPV6_NEIGHBOR_ADDRESS_TYPE: - tlv = IPv6AddressTlv.read(tempCb, IPV6_NEIGHBOR_ADDRESS_TYPE); - break; - case BgpAttrNodeMultiTopologyId.ATTRNODE_MULTITOPOLOGY: - tlv = BgpAttrNodeMultiTopologyId.read(tempCb); - count = count++; - //MultiTopologyId TLV cannot repeat more than once - if (count > 1) { - //length + 4 implies data contains type, length and value - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR, tempBuf.readBytes(length - + Constants.TYPE_AND_LEN_AS_SHORT)); - } - break; - default: - UnSupportedAttribute.skipBytes(tempCb, length); - } - linkDescriptor.add(tlv); - } - return linkDescriptor; - } - - /** - * Returns local node descriptors. - * - * @return local node descriptors - */ - public NodeDescriptors localNodeDescriptors() { - return this.localNodeDescriptors; - } - - /** - * Returns remote node descriptors. - * - * @return remote node descriptors - */ - public NodeDescriptors remoteNodeDescriptors() { - return this.remoteNodeDescriptors; - } - - /** - * Returns link descriptors. - * - * @return link descriptors - */ - public List linkDescriptors() { - return this.linkDescriptor; - } - - @Override - public int hashCode() { - return Objects.hash(linkDescriptor, localNodeDescriptors, remoteNodeDescriptors); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof BgpLinkLSIdentifier) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - BgpLinkLSIdentifier other = (BgpLinkLSIdentifier) obj; - Iterator objListIterator = other.linkDescriptor.iterator(); - countOtherSubTlv = other.linkDescriptor.size(); - countObjSubTlv = linkDescriptor.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - BgpValueType subTlv = objListIterator.next(); - if (linkDescriptor.contains(subTlv) && other.linkDescriptor.contains(subTlv)) { - isCommonSubTlv = Objects.equals(linkDescriptor.get(linkDescriptor.indexOf(subTlv)), - other.linkDescriptor.get(other.linkDescriptor.indexOf(subTlv))); - } else { - isCommonSubTlv = false; - } - } - return isCommonSubTlv && Objects.equals(this.localNodeDescriptors, other.localNodeDescriptors) - && Objects.equals(this.remoteNodeDescriptors, other.remoteNodeDescriptors); - } - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localNodeDescriptors", localNodeDescriptors) - .add("remoteNodeDescriptors", remoteNodeDescriptors) - .add("linkDescriptor", linkDescriptor) - .toString(); - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - int result = this.localNodeDescriptors.compareTo(((BgpLinkLSIdentifier) o).localNodeDescriptors); - if (result != 0) { - return result; - } else if (this.remoteNodeDescriptors.compareTo(((BgpLinkLSIdentifier) o).remoteNodeDescriptors) != 0) { - return this.remoteNodeDescriptors.compareTo(((BgpLinkLSIdentifier) o).remoteNodeDescriptors); - } else { - int countOtherSubTlv = ((BgpLinkLSIdentifier) o).linkDescriptor.size(); - int countObjSubTlv = linkDescriptor.size(); - if (countOtherSubTlv != countObjSubTlv) { - if (countOtherSubTlv > countObjSubTlv) { - return 1; - } else { - return -1; - } - } - ListIterator listIterator = linkDescriptor.listIterator(); - ListIterator listIteratorOther = ((BgpLinkLSIdentifier) o).linkDescriptor.listIterator(); - while (listIterator.hasNext()) { - BgpValueType tlv = listIterator.next(); - if (linkDescriptor.contains(tlv) && ((BgpLinkLSIdentifier) o).linkDescriptor.contains(tlv)) { - int res = linkDescriptor.get(linkDescriptor.indexOf(tlv)).compareTo( - ((BgpLinkLSIdentifier) o).linkDescriptor.get(((BgpLinkLSIdentifier) o).linkDescriptor - .indexOf(tlv))); - if (res != 0) { - return res; - } - } else { - return 1; - } - } - } - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLsNlriVer4.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLsNlriVer4.java deleted file mode 100755 index 01d369e4..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLsNlriVer4.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.bgpio.protocol.linkstate; - -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.BgpLinkLsNlri; -import org.onosproject.bgpio.protocol.NlriType; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4.ProtocolType; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.RouteDistinguisher; -import org.onosproject.bgpio.util.Constants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implementation of Link LS NLRI. - */ -public class BgpLinkLsNlriVer4 implements BgpLinkLsNlri { - - /* - * REFERENCE : draft-ietf-idr-ls-distribution-11 - 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 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Identifier | - | (64 bits) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Local Node Descriptors (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Remote Node Descriptors (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Link Descriptors (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Figure : The Link NLRI format - */ - private static final Logger log = LoggerFactory.getLogger(BgpLinkLsNlriVer4.class); - public static final int LINK_NLRITYPE = 2; - - private BgpLinkLSIdentifier linkLSIdentifier; - private byte protocolId; - private long identifier; - private RouteDistinguisher routeDistinguisher; - private boolean isVpn; - - /** - * Initialize fields. - */ - public BgpLinkLsNlriVer4() { - this.protocolId = 0; - this.identifier = 0; - this.linkLSIdentifier = null; - this.routeDistinguisher = null; - this.isVpn = false; - } - - /** - * Constructor to initialize parameters for BGP LinkLSNlri. - * - * @param protocolId protocol Id - * @param identifier field in BGP LinkLSNlri - * @param linkLSIdentifier link LS identifier - * @param routeDistinguisher route distinguisher from message - * @param isVpn vpn info availability in message - */ - public BgpLinkLsNlriVer4(byte protocolId, long identifier, BgpLinkLSIdentifier linkLSIdentifier, - RouteDistinguisher routeDistinguisher, boolean isVpn) { - this.protocolId = protocolId; - this.identifier = identifier; - this.linkLSIdentifier = linkLSIdentifier; - this.routeDistinguisher = routeDistinguisher; - this.isVpn = isVpn; - } - - /** - * Reads from channelBuffer and parses Link LS Nlri. - * - * @param cb ChannelBuffer - * @param afi Address Family Identifier - * @param safi Subsequent Address Family Identifier - * @return object of this class - * @throws BgpParseException while parsing Link LS NLRI - */ - public static BgpLinkLsNlriVer4 read(ChannelBuffer cb, short afi, byte safi) throws BgpParseException { - boolean isVpn = false; - RouteDistinguisher routeDistinguisher = null; - if ((afi == Constants.AFI_VALUE) && (safi == Constants.VPN_SAFI_VALUE)) { - routeDistinguisher = new RouteDistinguisher(); - routeDistinguisher = RouteDistinguisher.read(cb); - isVpn = true; - } else { - isVpn = false; - } - byte protocolId = cb.readByte(); - long identifier = cb.readLong(); - - BgpLinkLSIdentifier linkLSIdentifier = new BgpLinkLSIdentifier(); - linkLSIdentifier = BgpLinkLSIdentifier.parseLinkIdendifier(cb, protocolId); - return new BgpLinkLsNlriVer4(protocolId, identifier, linkLSIdentifier, routeDistinguisher, isVpn); - } - - @Override - public NlriType getNlriType() { - return NlriType.LINK; - } - - @Override - public long getIdentifier() { - return this.identifier; - } - - /** - * Set the link LS identifier. - * - * @param linkLSIdentifier link LS identifier to set - */ - public void setLinkLSIdentifier(BgpLinkLSIdentifier linkLSIdentifier) { - this.linkLSIdentifier = linkLSIdentifier; - } - - @Override - public ProtocolType getProtocolId() throws BgpParseException { - switch (protocolId) { - case Constants.ISIS_LEVELONE: - return ProtocolType.ISIS_LEVEL_ONE; - case Constants.ISIS_LEVELTWO: - return ProtocolType.ISIS_LEVEL_TWO; - case Constants.OSPFV2: - return ProtocolType.OSPF_V2; - case Constants.DIRECT: - return ProtocolType.DIRECT; - case Constants.STATIC_CONFIGURATION: - return ProtocolType.STATIC_CONFIGURATION; - case Constants.OSPFV3: - return ProtocolType.OSPF_V3; - default: - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, (byte) 0, null); - } - } - - @Override - public NodeDescriptors localNodeDescriptors() { - return this.linkLSIdentifier.localNodeDescriptors(); - } - - @Override - public NodeDescriptors remoteNodeDescriptors() { - return this.linkLSIdentifier.remoteNodeDescriptors(); - } - - /** - * Returns whether VPN is present or not. - * - * @return whether VPN is present or not - */ - public boolean isVpnPresent() { - return this.isVpn; - } - - @Override - public RouteDistinguisher getRouteDistinguisher() { - return this.routeDistinguisher; - } - - /** - * Returns link identifier. - * - * @return link identifier - */ - public BgpLinkLSIdentifier getLinkIdentifier() { - return this.linkLSIdentifier; - } - - @Override - public List linkDescriptors() { - return this.linkLSIdentifier.linkDescriptors(); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("protocolId", protocolId) - .add("identifier", identifier) - .add("RouteDistinguisher ", routeDistinguisher) - .add("linkLSIdentifier", linkLSIdentifier) - .toString(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSIdentifier.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSIdentifier.java deleted file mode 100644 index 6c2c96d9..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSIdentifier.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol.linkstate; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.util.Constants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implementation of Node Identifier which includes local node descriptor/remote node descriptors. - */ -public class BgpNodeLSIdentifier implements Comparable { - - private static final Logger log = LoggerFactory.getLogger(BgpNodeLSIdentifier.class); - private NodeDescriptors nodeDescriptors; - - /** - * Resets fields. - */ - public BgpNodeLSIdentifier() { - this.nodeDescriptors = null; - } - - /** - * Constructor to initialize fields. - * - * @param nodeDescriptors local/remote node descriptor - */ - public BgpNodeLSIdentifier(NodeDescriptors nodeDescriptors) { - this.nodeDescriptors = nodeDescriptors; - } - - /** - * Parse local node descriptors. - * - * @param cb ChannelBuffer - * @param protocolId protocol identifier - * @return object of this BGPNodeLSIdentifier - * @throws BgpParseException while parsing local node descriptors - */ - public static BgpNodeLSIdentifier parseLocalNodeDescriptors(ChannelBuffer cb, byte protocolId) - throws BgpParseException { - log.debug("parse Local node descriptor"); - ChannelBuffer tempBuf = cb.copy(); - short type = cb.readShort(); - short length = cb.readShort(); - if (cb.readableBytes() < length) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR, - tempBuf.readBytes(cb.readableBytes() + Constants.TYPE_AND_LEN)); - } - NodeDescriptors nodeDescriptors = new NodeDescriptors(); - ChannelBuffer tempCb = cb.readBytes(length); - - if (type == NodeDescriptors.LOCAL_NODE_DES_TYPE) { - nodeDescriptors = NodeDescriptors.read(tempCb, length, type, protocolId); - } else { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.MALFORMED_ATTRIBUTE_LIST, null); - } - return new BgpNodeLSIdentifier(nodeDescriptors); - } - - /** - * Returns node descriptors. - * - * @return node descriptors - */ - public NodeDescriptors getNodedescriptors() { - return this.nodeDescriptors; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof BgpNodeLSIdentifier) { - BgpNodeLSIdentifier other = (BgpNodeLSIdentifier) obj; - return Objects.equals(nodeDescriptors, other.nodeDescriptors); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hash(nodeDescriptors); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("NodeDescriptors", nodeDescriptors) - .toString(); - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - return this.nodeDescriptors.compareTo(((BgpNodeLSIdentifier) o).nodeDescriptors); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSNlriVer4.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSNlriVer4.java deleted file mode 100644 index b27096cf..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSNlriVer4.java +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol.linkstate; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.BgpNodeLSNlri; -import org.onosproject.bgpio.protocol.NlriType; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.RouteDistinguisher; -import org.onosproject.bgpio.util.Constants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implementation of Node LS NLRI. - */ -public class BgpNodeLSNlriVer4 implements BgpNodeLSNlri { - - /* - *REFERENCE : draft-ietf-idr-ls-distribution-11 - 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 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Identifier | - | (64 bits) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Local Node Descriptors (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Figure : The Node NLRI format - */ - - protected static final Logger log = LoggerFactory.getLogger(BgpNodeLSNlriVer4.class); - - public static final int NODE_NLRITYPE = 1; - public static final int IDENTIFIER_LENGTH = 16; - private long identifier; - private byte protocolId; - private BgpNodeLSIdentifier localNodeDescriptors; - private RouteDistinguisher routeDistinguisher; - private boolean isVpn; - - /** - * Enum to provide PROTOCOLTYPE. - */ - public enum ProtocolType { - ISIS_LEVEL_ONE(1), ISIS_LEVEL_TWO(2), OSPF_V2(3), DIRECT(4), STATIC_CONFIGURATION(5), OSPF_V3(6); - int value; - - /** - * Assign val with the value as the protocol type. - * - * @param val protocol type - */ - ProtocolType(int val) { - value = val; - } - - /** - * Returns value of protocol type. - * - * @return protocol type - */ - public byte getType() { - return (byte) value; - } - } - - /** - * Reset fields. - */ - public BgpNodeLSNlriVer4() { - this.identifier = 0; - this.protocolId = 0; - this.localNodeDescriptors = null; - this.routeDistinguisher = null; - this.isVpn = false; - } - - /** - * Constructors to initialize its parameters. - * - * @param identifier of LinkState Nlri - * @param protocolId of LinkState Nlri - * @param localNodeDescriptors local node descriptors - * @param isVpn true if VPN info is present - * @param routeDistinguisher unique for each VPN - */ - public BgpNodeLSNlriVer4(long identifier, byte protocolId, BgpNodeLSIdentifier localNodeDescriptors, boolean isVpn, - RouteDistinguisher routeDistinguisher) { - this.identifier = identifier; - this.protocolId = protocolId; - this.localNodeDescriptors = localNodeDescriptors; - this.routeDistinguisher = routeDistinguisher; - this.isVpn = isVpn; - } - - /** - * Reads from channelBuffer and parses Node LS Nlri. - * - * @param cb ChannelBuffer - * @param afi Address Family Identifier - * @param safi Subsequent Address Family Identifier - * @return object of this class - * @throws BgpParseException while parsing node descriptors - */ - public static BgpNodeLSNlriVer4 read(ChannelBuffer cb, short afi, byte safi) throws BgpParseException { - boolean isVpn = false; - RouteDistinguisher routeDistinguisher = null; - if ((afi == Constants.AFI_VALUE) && (safi == Constants.VPN_SAFI_VALUE)) { - routeDistinguisher = new RouteDistinguisher(); - routeDistinguisher = RouteDistinguisher.read(cb); - isVpn = true; - } else { - isVpn = false; - } - byte protocolId = cb.readByte(); - long identifier = cb.readLong(); - - // Parse Local Node Descriptors - BgpNodeLSIdentifier localNodeDescriptors = new BgpNodeLSIdentifier(); - localNodeDescriptors = BgpNodeLSIdentifier.parseLocalNodeDescriptors(cb, protocolId); - return new BgpNodeLSNlriVer4(identifier, protocolId, localNodeDescriptors, isVpn, routeDistinguisher); - } - - @Override - public NlriType getNlriType() { - return NlriType.NODE; - } - - @Override - public BgpNodeLSIdentifier getLocalNodeDescriptors() { - return this.localNodeDescriptors; - } - - /** - * Returns whether VPN is present or not. - * - * @return whether VPN is present or not - */ - public boolean isVpnPresent() { - return this.isVpn; - } - - @Override - public RouteDistinguisher getRouteDistinguisher() { - return this.routeDistinguisher; - } - - @Override - public long getIdentifier() { - return this.identifier; - } - - /** - * Set the node LS identifier. - * - * @param localNodeDescriptors node LS identifier to set - */ - public void setNodeLSIdentifier(BgpNodeLSIdentifier localNodeDescriptors) { - this.localNodeDescriptors = localNodeDescriptors; - } - - @Override - public ProtocolType getProtocolId() throws BgpParseException { - switch (protocolId) { - case Constants.ISIS_LEVELONE: - return ProtocolType.ISIS_LEVEL_ONE; - case Constants.ISIS_LEVELTWO: - return ProtocolType.ISIS_LEVEL_TWO; - case Constants.OSPFV2: - return ProtocolType.OSPF_V2; - case Constants.DIRECT: - return ProtocolType.DIRECT; - case Constants.STATIC_CONFIGURATION: - return ProtocolType.STATIC_CONFIGURATION; - case Constants.OSPFV3: - return ProtocolType.OSPF_V3; - default: - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, (byte) 0, null); - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("protocolId", protocolId) - .add("identifier", identifier) - .add("RouteDistinguisher ", routeDistinguisher) - .add("localNodeDescriptors", localNodeDescriptors) - .toString(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixIPv4LSNlriVer4.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixIPv4LSNlriVer4.java deleted file mode 100644 index 49cb74bd..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixIPv4LSNlriVer4.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol.linkstate; - -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.BgpPrefixLSNlri; -import org.onosproject.bgpio.protocol.NlriType; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4.ProtocolType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.RouteDistinguisher; -import org.onosproject.bgpio.util.Constants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implementation of Prefix IPV4 LS NLRI. - */ -public class BgpPrefixIPv4LSNlriVer4 implements BgpPrefixLSNlri { - - /* - * REFERENCE : draft-ietf-idr-ls-distribution-11 - * 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 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Identifier | - | (64 bits) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Local Node Descriptor (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // Prefix Descriptors (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Figure : The IPv4/IPv6 Topology Prefix NLRI format - */ - - protected static final Logger log = LoggerFactory.getLogger(BgpPrefixIPv4LSNlriVer4.class); - - public static final int PREFIX_IPV4_NLRITYPE = 3; - public static final int IDENTIFIER_LENGTH = 16; - private long identifier; - private byte protocolId; - private RouteDistinguisher routeDistinguisher; - private boolean isVpn; - private BgpPrefixLSIdentifier bgpPrefixLSIdentifier; - - /** - * Resets parameters. - */ - public BgpPrefixIPv4LSNlriVer4() { - this.identifier = 0; - this.protocolId = 0; - this.bgpPrefixLSIdentifier = null; - this.routeDistinguisher = null; - this.isVpn = false; - } - - /** - * Constructor to initialize parameters for BGP PrefixLSNlri. - * - * @param identifier field in BGP PrefixLSNlri - * @param protocolId protocol Id - * @param bgpPrefixLSIdentifier prefix LS Identifier - * @param routeDistinguisher RouteDistinguisher - * @param isVpn vpn availability in message - */ - public BgpPrefixIPv4LSNlriVer4(long identifier, byte protocolId, BgpPrefixLSIdentifier bgpPrefixLSIdentifier, - RouteDistinguisher routeDistinguisher, boolean isVpn) { - this.identifier = identifier; - this.protocolId = protocolId; - this.bgpPrefixLSIdentifier = bgpPrefixLSIdentifier; - this.routeDistinguisher = routeDistinguisher; - this.isVpn = isVpn; - } - - /** - * Reads from channelBuffer and parses Prefix LS Nlri. - * - * @param cb ChannelBuffer - * @param afi Address family identifier - * @param safi Subsequent address family identifier - * @return object of BGPPrefixIPv4LSNlriVer4 - * @throws BgpParseException while parsing Prefix LS Nlri - */ - public static BgpPrefixIPv4LSNlriVer4 read(ChannelBuffer cb, short afi, byte safi) throws BgpParseException { - - boolean isVpn = false; - RouteDistinguisher routeDistinguisher = null; - if ((afi == Constants.AFI_VALUE) && (safi == Constants.VPN_SAFI_VALUE)) { - routeDistinguisher = new RouteDistinguisher(); - routeDistinguisher = RouteDistinguisher.read(cb); - isVpn = true; - } else { - isVpn = false; - } - byte protocolId = cb.readByte(); - long identifier = cb.readLong(); - - BgpPrefixLSIdentifier bgpPrefixLSIdentifier = new BgpPrefixLSIdentifier(); - bgpPrefixLSIdentifier = BgpPrefixLSIdentifier.parsePrefixIdendifier(cb, protocolId); - return new BgpPrefixIPv4LSNlriVer4(identifier, protocolId, bgpPrefixLSIdentifier, routeDistinguisher, isVpn); - } - - @Override - public NlriType getNlriType() { - return NlriType.PREFIX_IPV4; - } - - @Override - public NodeDescriptors getLocalNodeDescriptors() { - return this.bgpPrefixLSIdentifier.getLocalNodeDescriptors(); - } - - @Override - public long getIdentifier() { - return this.identifier; - } - - /** - * Set the prefix LS identifier. - * - * @param bgpPrefixLSIdentifier prefix identifier to set - */ - public void setPrefixLSIdentifier(BgpPrefixLSIdentifier bgpPrefixLSIdentifier) { - this.bgpPrefixLSIdentifier = bgpPrefixLSIdentifier; - } - - @Override - public ProtocolType getProtocolId() throws BgpParseException { - switch (protocolId) { - case Constants.ISIS_LEVELONE: - return ProtocolType.ISIS_LEVEL_ONE; - case Constants.ISIS_LEVELTWO: - return ProtocolType.ISIS_LEVEL_TWO; - case Constants.OSPFV2: - return ProtocolType.OSPF_V2; - case Constants.DIRECT: - return ProtocolType.DIRECT; - case Constants.STATIC_CONFIGURATION: - return ProtocolType.STATIC_CONFIGURATION; - case Constants.OSPFV3: - return ProtocolType.OSPF_V3; - default: - throw new BgpParseException("protocol id not valid"); - } - } - - /** - * Returns whether VPN is present or not. - * - * @return whether VPN is present or not - */ - public boolean isVpnPresent() { - return this.isVpn; - } - - /** - * Returns Prefix Identifier. - * - * @return Prefix Identifier - */ - public BgpPrefixLSIdentifier getPrefixIdentifier() { - return this.bgpPrefixLSIdentifier; - } - - @Override - public RouteDistinguisher getRouteDistinguisher() { - return this.routeDistinguisher; - } - - @Override - public List getPrefixdescriptor() { - return this.bgpPrefixLSIdentifier.getPrefixdescriptor(); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("protocolId", protocolId) - .add("identifier", identifier) - .add("RouteDistinguisher ", routeDistinguisher) - .add("bgpPrefixLSIdentifier", bgpPrefixLSIdentifier) - .toString(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java deleted file mode 100644 index 22e68917..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.bgpio.protocol.linkstate; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.IPReachabilityInformationTlv; -import org.onosproject.bgpio.types.OSPFRouteTypeTlv; -import org.onosproject.bgpio.types.attr.BgpAttrNodeMultiTopologyId; -import org.onosproject.bgpio.util.UnSupportedAttribute; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Implementation of Local node descriptors and prefix descriptors. - */ -public class BgpPrefixLSIdentifier implements Comparable { - - protected static final Logger log = LoggerFactory.getLogger(BgpPrefixLSIdentifier.class); - public static final int TYPE_AND_LEN = 4; - private NodeDescriptors localNodeDescriptors; - private List prefixDescriptor; - - /** - * Resets parameters. - */ - public BgpPrefixLSIdentifier() { - this.localNodeDescriptors = null; - this.prefixDescriptor = null; - } - - /** - * Constructor to initialize parameters. - * - * @param localNodeDescriptors Local node descriptors - * @param prefixDescriptor Prefix Descriptors - */ - public BgpPrefixLSIdentifier(NodeDescriptors localNodeDescriptors, List prefixDescriptor) { - this.localNodeDescriptors = localNodeDescriptors; - this.prefixDescriptor = prefixDescriptor; - } - - /** - * Reads the channel buffer and parses Prefix Identifier. - * - * @param cb ChannelBuffer - * @param protocolId protocol ID - * @return object of this class - * @throws BgpParseException while parsing Prefix Identifier - */ - public static BgpPrefixLSIdentifier parsePrefixIdendifier(ChannelBuffer cb, byte protocolId) - throws BgpParseException { - //Parse Local Node descriptor - NodeDescriptors localNodeDescriptors = new NodeDescriptors(); - localNodeDescriptors = parseLocalNodeDescriptors(cb, protocolId); - - //Parse Prefix descriptor - List prefixDescriptor = new LinkedList<>(); - prefixDescriptor = parsePrefixDescriptors(cb); - return new BgpPrefixLSIdentifier(localNodeDescriptors, prefixDescriptor); - } - - /** - * Parse local node descriptors. - * - * @param cb ChannelBuffer - * @param protocolId protocol identifier - * @return LocalNodeDescriptors - * @throws BgpParseException while parsing local node descriptors - */ - public static NodeDescriptors parseLocalNodeDescriptors(ChannelBuffer cb, byte protocolId) - throws BgpParseException { - ChannelBuffer tempBuf = cb.copy(); - short type = cb.readShort(); - short length = cb.readShort(); - if (cb.readableBytes() < length) { - //length + 4 implies data contains type, length and value - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR, - tempBuf.readBytes(cb.readableBytes() + TYPE_AND_LEN)); - } - NodeDescriptors localNodeDescriptors = new NodeDescriptors(); - ChannelBuffer tempCb = cb.readBytes(length); - - if (type == NodeDescriptors.LOCAL_NODE_DES_TYPE) { - localNodeDescriptors = NodeDescriptors.read(tempCb, length, type, protocolId); - } else { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.MALFORMED_ATTRIBUTE_LIST, null); - } - return localNodeDescriptors; - } - - /** - * Parse list of prefix descriptors. - * - * @param cb ChannelBuffer - * @return list of prefix descriptors - * @throws BgpParseException while parsing list of prefix descriptors - */ - public static List parsePrefixDescriptors(ChannelBuffer cb) throws BgpParseException { - LinkedList prefixDescriptor = new LinkedList<>(); - BgpValueType tlv = null; - boolean isIpReachInfo = false; - ChannelBuffer tempCb; - int count = 0; - - while (cb.readableBytes() > 0) { - ChannelBuffer tempBuf = cb.copy(); - short type = cb.readShort(); - short length = cb.readShort(); - if (cb.readableBytes() < length) { - //length + 4 implies data contains type, length and value - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR, - tempBuf.readBytes(cb.readableBytes() + TYPE_AND_LEN)); - } - tempCb = cb.readBytes(length); - switch (type) { - case OSPFRouteTypeTlv.TYPE: - tlv = OSPFRouteTypeTlv.read(tempCb); - break; - case IPReachabilityInformationTlv.TYPE: - tlv = IPReachabilityInformationTlv.read(tempCb, length); - isIpReachInfo = true; - break; - case BgpAttrNodeMultiTopologyId.ATTRNODE_MULTITOPOLOGY: - tlv = BgpAttrNodeMultiTopologyId.read(tempCb); - count = count + 1; - if (count > 1) { - //length + 4 implies data contains type, length and value - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR, tempBuf.readBytes(length + TYPE_AND_LEN)); - } - break; - default: - UnSupportedAttribute.skipBytes(tempCb, length); - } - prefixDescriptor.add(tlv); - } - - if (!isIpReachInfo) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR, - null); - } - return prefixDescriptor; - } - - /** - * Returns local node descriptors. - * - * @return local node descriptors - */ - public NodeDescriptors getLocalNodeDescriptors() { - return this.localNodeDescriptors; - } - - /** - * Returns Prefix descriptors. - * - * @return Prefix descriptors - */ - public List getPrefixdescriptor() { - return this.prefixDescriptor; - } - - @Override - public int hashCode() { - return Objects.hash(prefixDescriptor.hashCode(), localNodeDescriptors); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpPrefixLSIdentifier) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - BgpPrefixLSIdentifier other = (BgpPrefixLSIdentifier) obj; - - Iterator objListIterator = other.prefixDescriptor.iterator(); - countOtherSubTlv = other.prefixDescriptor.size(); - countObjSubTlv = prefixDescriptor.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - BgpValueType subTlv = objListIterator.next(); - if (prefixDescriptor.contains(subTlv) && other.prefixDescriptor.contains(subTlv)) { - isCommonSubTlv = Objects.equals(prefixDescriptor.get(prefixDescriptor.indexOf(subTlv)), - other.prefixDescriptor.get(other.prefixDescriptor.indexOf(subTlv))); - } else { - isCommonSubTlv = false; - } - } - return isCommonSubTlv && Objects.equals(this.localNodeDescriptors, other.localNodeDescriptors); - } - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localNodeDescriptors", localNodeDescriptors) - .add("prefixDescriptor", prefixDescriptor) - .toString(); - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - int result = this.localNodeDescriptors.compareTo(((BgpPrefixLSIdentifier) o).localNodeDescriptors); - if (result != 0) { - return result; - } else { - int countOtherSubTlv = ((BgpPrefixLSIdentifier) o).prefixDescriptor.size(); - int countObjSubTlv = prefixDescriptor.size(); - if (countOtherSubTlv != countObjSubTlv) { - if (countOtherSubTlv > countObjSubTlv) { - return 1; - } else { - return -1; - } - } - - ListIterator listIterator = prefixDescriptor.listIterator(); - ListIterator listIteratorOther = ((BgpPrefixLSIdentifier) o).prefixDescriptor.listIterator(); - while (listIterator.hasNext()) { - BgpValueType tlv = listIterator.next(); - if (prefixDescriptor.contains(tlv) && ((BgpPrefixLSIdentifier) o).prefixDescriptor.contains(tlv)) { - int res = prefixDescriptor.get(prefixDescriptor.indexOf(tlv)).compareTo( - ((BgpPrefixLSIdentifier) o).prefixDescriptor - .get(((BgpPrefixLSIdentifier) o).prefixDescriptor.indexOf(tlv))); - if (res != 0) { - return res; - } - } else { - return 1; - } - } - } - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java deleted file mode 100644 index f91ac260..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.bgpio.protocol.linkstate; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.AreaIDTlv; -import org.onosproject.bgpio.types.AutonomousSystemTlv; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpLSIdentifierTlv; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.IsIsNonPseudonode; -import org.onosproject.bgpio.types.IsIsPseudonode; -import org.onosproject.bgpio.types.OSPFNonPseudonode; -import org.onosproject.bgpio.types.OSPFPseudonode; -import org.onosproject.bgpio.util.UnSupportedAttribute; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Local and Remote NodeDescriptors which contains Node Descriptor Sub-TLVs. - */ -public class NodeDescriptors { - - /* - *Reference :draft-ietf-idr-ls-distribution-11 - 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 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Node Descriptor Sub-TLVs (variable) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Figure : Local or Remote Node Descriptors TLV format - */ - - private static final Logger log = LoggerFactory.getLogger(NodeDescriptors.class); - - public static final short LOCAL_NODE_DES_TYPE = 256; - public static final short REMOTE_NODE_DES_TYPE = 257; - public static final short IGP_ROUTERID_TYPE = 515; - public static final short IS_IS_LEVEL_1_PROTOCOL_ID = 1; - public static final short IS_IS_LEVEL_2_PROTOCOL_ID = 2; - public static final short OSPF_V2_PROTOCOL_ID = 3; - public static final short OSPF_V3_PROTOCOL_ID = 6; - public static final int TYPE_AND_LEN = 4; - public static final int ISISNONPSEUDONODE_LEN = 6; - public static final int ISISPSEUDONODE_LEN = 7; - public static final int OSPFNONPSEUDONODE_LEN = 4; - public static final int OSPFPSEUDONODE_LEN = 8; - private List subTlvs; - private short deslength; - private short desType; - - /** - * Resets parameters. - */ - public NodeDescriptors() { - this.subTlvs = null; - this.deslength = 0; - this.desType = 0; - } - - /** - * Constructor to initialize parameters. - * - * @param subTlvs list of subTlvs - * @param deslength Descriptors length - * @param desType local node descriptor or remote node descriptor type - */ - public NodeDescriptors(List subTlvs, short deslength, short desType) { - this.subTlvs = subTlvs; - this.deslength = deslength; - this.desType = desType; - } - - /** - * Returns list of subTlvs. - * - * @return subTlvs list of subTlvs - */ - public List getSubTlvs() { - return subTlvs; - } - - @Override - public int hashCode() { - return Objects.hash(subTlvs.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof NodeDescriptors) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - NodeDescriptors other = (NodeDescriptors) obj; - Iterator objListIterator = other.subTlvs.iterator(); - countOtherSubTlv = other.subTlvs.size(); - countObjSubTlv = subTlvs.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - BgpValueType subTlv = objListIterator.next(); - if (subTlvs.contains(subTlv) && other.subTlvs.contains(subTlv)) { - isCommonSubTlv = Objects.equals(subTlvs.get(subTlvs.indexOf(subTlv)), - other.subTlvs.get(other.subTlvs.indexOf(subTlv))); - } else { - isCommonSubTlv = false; - } - } - return isCommonSubTlv; - } - } - return false; - } - - /** - * Reads node descriptors Sub-TLVs. - * - * @param cb ChannelBuffer - * @param desLength node descriptor length - * @param desType local node descriptor or remote node descriptor type - * @param protocolId protocol ID - * @return object of NodeDescriptors - * @throws BgpParseException while parsing node descriptors - */ - public static NodeDescriptors read(ChannelBuffer cb, short desLength, short desType, byte protocolId) - throws BgpParseException { - log.debug("Read NodeDescriptor"); - List subTlvs = new LinkedList<>(); - BgpValueType tlv = null; - - while (cb.readableBytes() > 0) { - ChannelBuffer tempBuf = cb.copy(); - short type = cb.readShort(); - short length = cb.readShort(); - if (cb.readableBytes() < length) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR, - tempBuf.readBytes(cb.readableBytes() + TYPE_AND_LEN)); - } - ChannelBuffer tempCb = cb.readBytes(length); - switch (type) { - case AutonomousSystemTlv.TYPE: - tlv = AutonomousSystemTlv.read(tempCb); - break; - case BgpLSIdentifierTlv.TYPE: - tlv = BgpLSIdentifierTlv.read(tempCb); - break; - case AreaIDTlv.TYPE: - tlv = AreaIDTlv.read(tempCb); - break; - case IGP_ROUTERID_TYPE: - if (protocolId == IS_IS_LEVEL_1_PROTOCOL_ID || protocolId == IS_IS_LEVEL_2_PROTOCOL_ID) { - if (length == ISISNONPSEUDONODE_LEN) { - tlv = IsIsNonPseudonode.read(tempCb); - } else if (length == ISISPSEUDONODE_LEN) { - tlv = IsIsPseudonode.read(tempCb); - } - } else if (protocolId == OSPF_V2_PROTOCOL_ID || protocolId == OSPF_V3_PROTOCOL_ID) { - if (length == OSPFNONPSEUDONODE_LEN) { - tlv = OSPFNonPseudonode.read(tempCb); - } else if (length == OSPFPSEUDONODE_LEN) { - tlv = OSPFPseudonode.read(tempCb); - } - } - break; - default: - UnSupportedAttribute.skipBytes(tempCb, length); - } - subTlvs.add(tlv); - } - return new NodeDescriptors(subTlvs, desLength, desType); - } - - /** - * Returns node descriptors length. - * - * @return node descriptors length - */ - public short getLength() { - return this.deslength; - } - - /** - * Returns node descriptors type. - * - * @return node descriptors type - */ - public short getType() { - return this.desType; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("desType", desType) - .add("deslength", deslength) - .add("subTlvs", subTlvs) - .toString(); - } - - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - ListIterator listIterator = subTlvs.listIterator(); - ListIterator listIteratorOther = ((NodeDescriptors) o).subTlvs.listIterator(); - int countOtherSubTlv = ((NodeDescriptors) o).subTlvs.size(); - int countObjSubTlv = subTlvs.size(); - if (countOtherSubTlv != countObjSubTlv) { - if (countOtherSubTlv > countObjSubTlv) { - return 1; - } else { - return -1; - } - } else { - while (listIterator.hasNext()) { - BgpValueType tlv = listIterator.next(); - log.debug("NodeDescriptor compare subtlv's"); - if (subTlvs.contains(tlv) && ((NodeDescriptors) o).subTlvs.contains(tlv)) { - int result = subTlvs.get(subTlvs.indexOf(tlv)).compareTo( - ((NodeDescriptors) o).subTlvs.get(((NodeDescriptors) o).subTlvs.indexOf(tlv))); - if (result != 0) { - return result; - } - } else { - return 1; - } - } - } - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/PathAttrNlriDetails.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/PathAttrNlriDetails.java deleted file mode 100755 index 9578ccfe..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/PathAttrNlriDetails.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.bgpio.protocol.linkstate; - -import java.util.Iterator; -import java.util.List; -import java.util.Objects; - -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4.ProtocolType; -import org.onosproject.bgpio.types.BgpValueType; - -import com.google.common.base.MoreObjects; - -/** - * This Class stores path Attributes, protocol ID and Identifier of LinkState NLRI. - */ -public class PathAttrNlriDetails { - private List pathAttributes; - private ProtocolType protocolID; - private long identifier; - - /** - * Sets path attribute with specified path attribute. - * - * @param pathAttributes in update message - */ - public void setPathAttribute(List pathAttributes) { - this.pathAttributes = pathAttributes; - } - - /** - * Returns path attributes. - * - * @return path attributes - */ - public List pathAttributes() { - return this.pathAttributes; - } - - /** - * Sets protocolID with specified protocolID. - * - * @param protocolID in linkstate nlri - */ - public void setProtocolID(ProtocolType protocolID) { - this.protocolID = protocolID; - } - - /** - * Returns protocolID. - * - * @return protocolID - */ - public ProtocolType protocolID() { - return this.protocolID; - } - - /** - * Sets identifier with specified identifier. - * - * @param identifier in linkstate nlri - */ - public void setIdentifier(long identifier) { - this.identifier = identifier; - } - - /** - * Returns Identifier. - * - * @return Identifier - */ - public long identifier() { - return this.identifier; - } - - @Override - public int hashCode() { - return Objects.hash(pathAttributes, protocolID, identifier); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof PathAttrNlriDetails) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - PathAttrNlriDetails other = (PathAttrNlriDetails) obj; - Iterator objListIterator = other.pathAttributes.iterator(); - countOtherSubTlv = other.pathAttributes.size(); - countObjSubTlv = pathAttributes.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - BgpValueType subTlv = objListIterator.next(); - if (pathAttributes.contains(subTlv) && other.pathAttributes.contains(subTlv)) { - isCommonSubTlv = Objects.equals(pathAttributes.get(pathAttributes.indexOf(subTlv)), - other.pathAttributes.get(other.pathAttributes.indexOf(subTlv))); - } else { - isCommonSubTlv = false; - } - } - return isCommonSubTlv && Objects.equals(identifier, other.identifier) - && Objects.equals(protocolID, other.protocolID); - } - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("identifier", identifier) - .add("protocolID", protocolID) - .add("pathAttributes", pathAttributes) - .toString(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/PathAttrNlriDetailsLocalRib.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/PathAttrNlriDetailsLocalRib.java deleted file mode 100755 index 4172ae46..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/PathAttrNlriDetailsLocalRib.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package org.onosproject.bgpio.protocol.linkstate; - -import java.util.Objects; - -import org.onlab.packet.IpAddress; -import com.google.common.base.MoreObjects; - -/** - * This Class stores path Attributes, protocol ID and Identifier of LinkState nlri. - */ -public class PathAttrNlriDetailsLocalRib { - - private IpAddress localRibIpAddress; - private long localRibAsNum; - private int localRibIdentifier; - private boolean isLocalRibIbgpSession; - private PathAttrNlriDetails localRibNlridetails; - - /** - * Constructor to initialize parameter. - * - * @param localRibIpAddress peer ip address - * @param localRibIdentifier peer identifier - * @param localRibAsNum peer As number - * @param isLocalRibIbgpSession flag to indicate is Ibgp session - * @param localRibNlridetails Nlri details - * - */ - public PathAttrNlriDetailsLocalRib(IpAddress localRibIpAddress, int localRibIdentifier, long localRibAsNum, - boolean isLocalRibIbgpSession, PathAttrNlriDetails localRibNlridetails) { - this.localRibIpAddress = localRibIpAddress; - this.localRibAsNum = localRibAsNum; - this.localRibIdentifier = localRibIdentifier; - this.isLocalRibIbgpSession = isLocalRibIbgpSession; - this.localRibNlridetails = localRibNlridetails; - } - - /** - * Gets the Ipaddress updated in local rib. - * - * @return localRibIpAddress ip address - */ - public IpAddress localRibIpAddress() { - return localRibIpAddress; - } - - /** - * Gets the autonomous system number updated in local rib. - * - * @return localRibAsNum autonomous system number - */ - public long localRibAsNum() { - return localRibAsNum; - } - - /** - * Gets the indetifier updated in local rib. - * - * @return localRibIdentifier identifier - */ - public int localRibIdentifier() { - return localRibIdentifier; - } - - /** - * Gets the bgp session type updated in local rib. - * - * @return isLocalRibIbgpSession session type - */ - public boolean isLocalRibIbgpSession() { - return isLocalRibIbgpSession; - } - - /** - * Returns local RIB Nlri details. - * - * @return localRibNlridetails Nlri details in local rib - */ - public PathAttrNlriDetails localRibNlridetails() { - return this.localRibNlridetails; - } - - @Override - public int hashCode() { - return Objects.hash(localRibIpAddress, localRibIdentifier, localRibAsNum, isLocalRibIbgpSession, - localRibNlridetails.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PathAttrNlriDetailsLocalRib) { - PathAttrNlriDetailsLocalRib other = (PathAttrNlriDetailsLocalRib) obj; - return Objects.equals(localRibIpAddress, other.localRibIpAddress) - && Objects.equals(localRibIdentifier, other.localRibIdentifier) - && Objects.equals(localRibAsNum, other.localRibAsNum) - && Objects.equals(isLocalRibIbgpSession, other.isLocalRibIbgpSession) - && Objects.equals(localRibNlridetails, other.localRibNlridetails); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).add("peerIdentifier", localRibIdentifier) - .add("localRibpathAttributes", localRibNlridetails.pathAttributes()).toString(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/package-info.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/package-info.java deleted file mode 100755 index 87ba60f0..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/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. - */ - -/** - * BGP Protocol specific link state details. - */ -package org.onosproject.bgpio.protocol.linkstate; diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/package-info.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/package-info.java deleted file mode 100755 index 723b31b1..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/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. - */ - -/** - * BGP Protocol specific components. - */ -package org.onosproject.bgpio.protocol; diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpFactoryVer4.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpFactoryVer4.java deleted file mode 100755 index c57832b6..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpFactoryVer4.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.bgpio.protocol.ver4; - -import org.onosproject.bgpio.protocol.BgpFactory; -import org.onosproject.bgpio.protocol.BgpKeepaliveMsg; -import org.onosproject.bgpio.protocol.BgpMessage; -import org.onosproject.bgpio.protocol.BgpMessageReader; -import org.onosproject.bgpio.protocol.BgpNotificationMsg; -import org.onosproject.bgpio.protocol.BgpOpenMsg; -import org.onosproject.bgpio.protocol.BgpVersion; - -/** - * Provides BGP Factory and returns builder classes for all objects and messages. - */ -public class BgpFactoryVer4 implements BgpFactory { - - public static final BgpFactoryVer4 INSTANCE = new BgpFactoryVer4(); - - @Override - public BgpOpenMsg.Builder openMessageBuilder() { - return new BgpOpenMsgVer4.Builder(); - } - - @Override - public BgpKeepaliveMsg.Builder keepaliveMessageBuilder() { - return new BgpKeepaliveMsgVer4.Builder(); - } - - @Override - public BgpNotificationMsg.Builder notificationMessageBuilder() { - return new BgpNotificationMsgVer4.Builder(); - } - - @Override - public BgpMessageReader getReader() { - return BgpMessageVer4.READER; - } - - @Override - public BgpVersion getVersion() { - return BgpVersion.BGP_4; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpKeepaliveMsgVer4.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpKeepaliveMsgVer4.java deleted file mode 100644 index 2c141586..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpKeepaliveMsgVer4.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol.ver4; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.BgpKeepaliveMsg; -import org.onosproject.bgpio.protocol.BgpMessageReader; -import org.onosproject.bgpio.protocol.BgpMessageWriter; -import org.onosproject.bgpio.types.BgpHeader; -import org.onosproject.bgpio.protocol.BgpType; -import org.onosproject.bgpio.protocol.BgpVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides BGP keep alive message. - */ -public class BgpKeepaliveMsgVer4 implements BgpKeepaliveMsg { - - /* - ::= - A KEEPALIVE message consists of only the message header and has a - length of 19 octets. - - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - + + - | | - + + - | Marker | - + + - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Length | Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - REFERENCE : RFC 4271 - */ - - protected static final Logger log = LoggerFactory - .getLogger(BgpKeepaliveMsgVer4.class); - - private BgpHeader bgpMsgHeader; - public static final byte PACKET_VERSION = 4; - public static final int PACKET_MINIMUM_LENGTH = 19; - public static final int MARKER_LENGTH = 16; - public static final BgpType MSG_TYPE = BgpType.KEEP_ALIVE; - public static byte[] marker = new byte[] {(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 BgpKeepaliveMsgVer4.Reader READER = new Reader(); - - /** - * Reader class for reading BGP keepalive message from channel buffer. - */ - static class Reader implements BgpMessageReader { - - @Override - public BgpKeepaliveMsg readFrom(ChannelBuffer cb, BgpHeader bgpHeader) - throws BgpParseException { - - /* bgpHeader is not required in case of keepalive message and - Header is already read and no other fields except header in keepalive message.*/ - return new BgpKeepaliveMsgVer4(); - } - } - - /** - * Default constructor. - */ - public BgpKeepaliveMsgVer4() { - } - - /** - * Builder class for BGP keepalive message. - */ - static class Builder implements BgpKeepaliveMsg.Builder { - BgpHeader bgpMsgHeader; - - @Override - public Builder setHeader(BgpHeader bgpMsgHeader) { - this.bgpMsgHeader = bgpMsgHeader; - return this; - } - - @Override - public BgpKeepaliveMsg build() { - return new BgpKeepaliveMsgVer4(); - } - } - - @Override - public void writeTo(ChannelBuffer cb) { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing the BGP keepalive message to channel buffer. - */ - static class Writer implements BgpMessageWriter { - - @Override - public void write(ChannelBuffer cb, BgpKeepaliveMsgVer4 message) { - - // write marker - cb.writeBytes(marker, 0, MARKER_LENGTH); - - // write length of header - cb.writeShort(PACKET_MINIMUM_LENGTH); - - // write the type of message - cb.writeByte(MSG_TYPE.getType()); - } - } - - @Override - public BgpVersion getVersion() { - return BgpVersion.BGP_4; - } - - @Override - public BgpType getType() { - return MSG_TYPE; - } - - @Override - public BgpHeader getHeader() { - return this.bgpMsgHeader; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).toString(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpMessageVer4.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpMessageVer4.java deleted file mode 100755 index 1c05dae4..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpMessageVer4.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.bgpio.protocol.ver4; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.BgpFactories; -import org.onosproject.bgpio.protocol.BgpMessage; -import org.onosproject.bgpio.protocol.BgpMessageReader; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpHeader; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Provides BGP messages. - */ -public abstract class BgpMessageVer4 { - - protected static final Logger log = LoggerFactory.getLogger(BgpFactories.class); - - static final byte OPEN_MSG_TYPE = 0x1; - static final byte KEEPALIVE_MSG_TYPE = 0x4; - static final byte UPDATE_MSG_TYPE = 0x2; - static final byte NOTIFICATION_MSG_TYPE = 0x3; - static final int MINIMUM_COMMON_HEADER_LENGTH = 19; - static final int HEADER_AND_MSG_LEN = 18; - static final int MAXIMUM_PACKET_LENGTH = 4096; - - public static final BgpMessageVer4.Reader READER = new Reader(); - - /** - * Reader class for reading BGP messages from channel buffer. - * - */ - static class Reader implements BgpMessageReader { - @Override - public BgpMessage readFrom(ChannelBuffer cb, BgpHeader bgpHeader) - throws BgpParseException { - - if (cb.readableBytes() < MINIMUM_COMMON_HEADER_LENGTH) { - log.error("Packet should have minimum length."); - Validation.validateLen(BgpErrorType.MESSAGE_HEADER_ERROR, BgpErrorType.BAD_MESSAGE_LENGTH, - cb.readableBytes()); - } - if (cb.readableBytes() > MAXIMUM_PACKET_LENGTH) { - log.error("Packet length should not exceed {}.", MAXIMUM_PACKET_LENGTH); - Validation.validateLen(BgpErrorType.MESSAGE_HEADER_ERROR, BgpErrorType.BAD_MESSAGE_LENGTH, - cb.readableBytes()); - } - try { - // fixed value property version == 4 - byte[] marker = new byte[BgpHeader.MARKER_LENGTH]; - cb.readBytes(marker, 0, BgpHeader.MARKER_LENGTH); - bgpHeader.setMarker(marker); - for (int i = 0; i < BgpHeader.MARKER_LENGTH; i++) { - if (marker[i] != (byte) 0xff) { - throw new BgpParseException(BgpErrorType.MESSAGE_HEADER_ERROR, - BgpErrorType.CONNECTION_NOT_SYNCHRONIZED, null); - } - } - short length = cb.readShort(); - if (length > cb.readableBytes() + HEADER_AND_MSG_LEN) { - Validation.validateLen(BgpErrorType.MESSAGE_HEADER_ERROR, - BgpErrorType.BAD_MESSAGE_LENGTH, length); - } - bgpHeader.setLength(length); - byte type = cb.readByte(); - bgpHeader.setType(type); - log.debug("Reading update message of type " + type); - - int len = length - MINIMUM_COMMON_HEADER_LENGTH; - switch (type) { - case OPEN_MSG_TYPE: - log.debug("OPEN MESSAGE is received"); - return BgpOpenMsgVer4.READER.readFrom(cb.readBytes(len), bgpHeader); - case KEEPALIVE_MSG_TYPE: - log.debug("KEEPALIVE MESSAGE is received"); - return BgpKeepaliveMsgVer4.READER.readFrom(cb.readBytes(len), bgpHeader); - case UPDATE_MSG_TYPE: - log.debug("UPDATE MESSAGE is received"); - return BgpUpdateMsgVer4.READER.readFrom(cb.readBytes(len), bgpHeader); - case NOTIFICATION_MSG_TYPE: - log.debug("NOTIFICATION MESSAGE is received"); - return BgpNotificationMsgVer4.READER.readFrom(cb.readBytes(len), bgpHeader); - default: - Validation.validateType(BgpErrorType.MESSAGE_HEADER_ERROR, BgpErrorType.BAD_MESSAGE_TYPE, type); - return null; - } - } catch (IndexOutOfBoundsException e) { - throw new BgpParseException(BgpErrorType.MESSAGE_HEADER_ERROR, - BgpErrorType.BAD_MESSAGE_LENGTH, null); - } - } - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpNotificationMsgVer4.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpNotificationMsgVer4.java deleted file mode 100644 index 7243e21a..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpNotificationMsgVer4.java +++ /dev/null @@ -1,265 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol.ver4; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.BgpMessageReader; -import org.onosproject.bgpio.protocol.BgpMessageWriter; -import org.onosproject.bgpio.protocol.BgpNotificationMsg; -import org.onosproject.bgpio.protocol.BgpType; -import org.onosproject.bgpio.protocol.BgpVersion; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * A NOTIFICATION message is sent when an error condition is detected. The BGP connection is closed immediately after it - * is sent. - */ -class BgpNotificationMsgVer4 implements BgpNotificationMsg { - - /* - 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Error code | Error subcode | Data (variable) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - REFERENCE : RFC 4271 - */ - - private static final Logger log = LoggerFactory.getLogger(BgpNotificationMsgVer4.class); - - static final byte PACKET_VERSION = 4; - //BGPHeader(19) + Error code(1) + Error subcode(1) - static final int TOTAL_MESSAGE_MIN_LENGTH = 21; - static final int PACKET_MINIMUM_LENGTH = 2; - static final BgpType MSG_TYPE = BgpType.NOTIFICATION; - static final byte DEFAULT_ERRORSUBCODE = 0; - static final byte[] MARKER = {(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 }; - static final byte MESSAGE_TYPE = 3; - static final BgpHeader DEFAULT_MESSAGE_HEADER = new BgpHeader(MARKER, BgpHeader.DEFAULT_HEADER_LENGTH, - MESSAGE_TYPE); - - private byte errorCode; - private byte errorSubCode; - private byte[] data; - private BgpHeader bgpHeader; - public static final BgpNotificationMsgVer4.Reader READER = new Reader(); - - /** - * Initialize fields. - */ - public BgpNotificationMsgVer4() { - this.bgpHeader = null; - this.data = null; - this.errorCode = 0; - this.errorSubCode = 0; - } - - /** - * Constructor to initialize parameters. - * - * @param bgpHeader BGP Header in notification message - * @param errorCode error code - * @param errorSubCode error subcode - * @param data field - */ - public BgpNotificationMsgVer4(BgpHeader bgpHeader, byte errorCode, byte errorSubCode, byte[] data) { - this.bgpHeader = bgpHeader; - this.data = data; - this.errorCode = errorCode; - this.errorSubCode = errorSubCode; - } - - /** - * Reader reads BGP Notification Message from the channel buffer. - */ - static class Reader implements BgpMessageReader { - @Override - public BgpNotificationMsg readFrom(ChannelBuffer cb, BgpHeader bgpHeader) throws BgpParseException { - byte errorCode; - byte errorSubCode; - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new BgpParseException("Not enough readable bytes"); - } - errorCode = cb.readByte(); - errorSubCode = cb.readByte(); - //Message Length = 21 + Data Length - int dataLength = bgpHeader.getLength() - TOTAL_MESSAGE_MIN_LENGTH; - byte[] data = new byte[dataLength]; - cb.readBytes(data, 0, dataLength); - return new BgpNotificationMsgVer4(bgpHeader, errorCode, errorSubCode, data); - } - } - - /** - * Builder class for BGP notification message. - */ - static class Builder implements BgpNotificationMsg.Builder { - private byte errorCode; - private byte errorSubCode; - private byte[] data; - private BgpHeader bgpHeader; - private boolean isErrorCodeSet = false; - private boolean isErrorSubCodeSet = false; - private boolean isBGPHeaderSet = false; - - @Override - public BgpNotificationMsg build() throws BgpParseException { - BgpHeader bgpHeader = this.isBGPHeaderSet ? this.bgpHeader : DEFAULT_MESSAGE_HEADER; - if (!this.isErrorCodeSet) { - throw new BgpParseException("Error code must be present"); - } - - byte errorSubCode = this.isErrorSubCodeSet ? this.errorSubCode : DEFAULT_ERRORSUBCODE; - return new BgpNotificationMsgVer4(bgpHeader, this.errorCode, errorSubCode, this.data); - } - - @Override - public Builder setErrorCode(byte errorCode) { - this.errorCode = errorCode; - this.isErrorCodeSet = true; - return this; - } - - @Override - public Builder setErrorSubCode(byte errorSubCode) { - this.errorSubCode = errorSubCode; - this.isErrorSubCodeSet = true; - return this; - } - - @Override - public Builder setData(byte[] data) { - if (data != null) { - this.data = data; - } - return this; - } - - @Override - public Builder setHeader(BgpHeader bgpMsgHeader) { - this.bgpHeader = bgpMsgHeader; - return this; - } - } - - @Override - public BgpVersion getVersion() { - return BgpVersion.BGP_4; - } - - @Override - public BgpType getType() { - return BgpType.NOTIFICATION; - } - - @Override - public void writeTo(ChannelBuffer cb) throws BgpParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer writes BGP notification message to channel buffer. - */ - static class Writer implements BgpMessageWriter { - @Override - public void write(ChannelBuffer cb, BgpNotificationMsgVer4 message) throws BgpParseException { - int msgStartIndex = cb.writerIndex(); - int headerLenIndex = message.bgpHeader.write(cb); - if (headerLenIndex <= 0) { - throw new BgpParseException(BgpErrorType.MESSAGE_HEADER_ERROR, (byte) 0, null); - } - cb.writeByte(message.errorCode); - cb.writeByte(message.errorSubCode); - if (message.data != null) { - cb.writeBytes(message.data); - } - - //Update message length field in notification message - int length = cb.writerIndex() - msgStartIndex; - cb.setShort(headerLenIndex, (short) length); - message.bgpHeader.setLength((short) length); - } - } - - @Override - public byte getErrorCode() { - return this.errorCode; - } - - /** - * Sets errorcode with specified errorcode. - * - * @param errorCode field - */ - public void setErrorCode(byte errorCode) { - this.errorCode = errorCode; - } - - @Override - public byte getErrorSubCode() { - return this.errorSubCode; - } - - /** - * Sets error subcode with specified errorSubCode. - * - * @param errorSubCode field - */ - public void setErrorSubCode(byte errorSubCode) { - this.errorSubCode = errorSubCode; - } - - @Override - public byte[] getData() { - return this.data; - } - - /** - * Sets error data with specified data. - * - * @param data field - */ - public void setData(byte[] data) { - this.data = data; - } - - @Override - public BgpHeader getHeader() { - return this.bgpHeader; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("bgpHeader", bgpHeader) - .add("data", data) - .add("errorCode", errorCode) - .add("errorSubCode", errorSubCode) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java deleted file mode 100644 index 359eec25..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java +++ /dev/null @@ -1,518 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol.ver4; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.BgpMessageReader; -import org.onosproject.bgpio.protocol.BgpMessageWriter; -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.BgpHeader; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.FourOctetAsNumCapabilityTlv; -import org.onosproject.bgpio.types.MultiProtocolExtnCapabilityTlv; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides BGP open message. - */ -public class BgpOpenMsgVer4 implements BgpOpenMsg { - - /* - 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 - +-+-+-+-+-+-+-+-+ - | Version | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | My Autonomous System | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Hold Time | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | BGP Identifier | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Opt Parm Len | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Optional Parameters (variable) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - OPEN Message Format - REFERENCE : RFC 4271 - */ - - protected static final Logger log = LoggerFactory.getLogger(BgpOpenMsgVer4.class); - - public static final byte PACKET_VERSION = 4; - public static final int OPEN_MSG_MINIMUM_LENGTH = 10; - public static final int MSG_HEADER_LENGTH = 19; - public static final int MARKER_LENGTH = 16; - public static final int DEFAULT_HOLD_TIME = 120; - public static final short AS_TRANS = 23456; - public static final int OPT_PARA_TYPE_CAPABILITY = 2; - public static final BgpType MSG_TYPE = BgpType.OPEN; - public static final short AFI = 16388; - public static final byte SAFI = 71; - public static final byte RES = 0; - public static final int FOUR_OCTET_AS_NUM_CAPA_TYPE = 65; - public static final byte[] MARKER = new byte[]{(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 BgpHeader DEFAULT_OPEN_HEADER = new BgpHeader(MARKER, - (short) OPEN_MSG_MINIMUM_LENGTH, (byte) 0X01); - private BgpHeader bgpMsgHeader; - private byte version; - private short asNumber; - private short holdTime; - private int bgpId; - private boolean isLargeAsCapabilitySet; - private LinkedList capabilityTlv; - - public static final BgpOpenMsgVer4.Reader READER = new Reader(); - - /** - * reset variables. - */ - public BgpOpenMsgVer4() { - this.bgpMsgHeader = null; - this.version = 0; - this.holdTime = 0; - this.asNumber = 0; - this.bgpId = 0; - this.capabilityTlv = null; - } - - /** - * Constructor to initialize all variables of BGP Open message. - * - * @param bgpMsgHeader BGP Header in open message - * @param version BGP version in open message - * @param holdTime hold time in open message - * @param asNumber AS number in open message - * @param bgpId BGP identifier in open message - * @param capabilityTlv capabilities in open message - */ - public BgpOpenMsgVer4(BgpHeader bgpMsgHeader, byte version, short asNumber, short holdTime, - int bgpId, LinkedList capabilityTlv) { - this.bgpMsgHeader = bgpMsgHeader; - this.version = version; - this.asNumber = asNumber; - this.holdTime = holdTime; - this.bgpId = bgpId; - this.capabilityTlv = capabilityTlv; - } - - @Override - public BgpHeader getHeader() { - return this.bgpMsgHeader; - } - - @Override - public BgpVersion getVersion() { - return BgpVersion.BGP_4; - } - - @Override - public BgpType getType() { - return MSG_TYPE; - } - - @Override - public short getHoldTime() { - return this.holdTime; - } - - @Override - public short getAsNumber() { - return this.asNumber; - } - - @Override - public int getBgpId() { - return this.bgpId; - } - - @Override - public LinkedList getCapabilityTlv() { - return this.capabilityTlv; - } - - /** - * Reader class for reading BGP open message from channel buffer. - */ - public static class Reader implements BgpMessageReader { - - @Override - public BgpOpenMsg readFrom(ChannelBuffer cb, BgpHeader bgpHeader) throws BgpParseException { - - byte version; - short holdTime; - short asNumber; - int bgpId; - byte optParaLen = 0; - byte optParaType; - byte capParaLen = 0; - LinkedList capabilityTlv = new LinkedList<>(); - - if (cb.readableBytes() < OPEN_MSG_MINIMUM_LENGTH) { - log.error("[readFrom] Invalid length: Packet size is less than the minimum length "); - Validation.validateLen(BgpErrorType.OPEN_MESSAGE_ERROR, BgpErrorType.BAD_MESSAGE_LENGTH, - cb.readableBytes()); - } - - // Read version - version = cb.readByte(); - if (version != PACKET_VERSION) { - log.error("[readFrom] Invalid version: " + version); - throw new BgpParseException(BgpErrorType.OPEN_MESSAGE_ERROR, - BgpErrorType.UNSUPPORTED_VERSION_NUMBER, null); - } - - // Read AS number - asNumber = cb.readShort(); - - // Read Hold timer - holdTime = cb.readShort(); - - // Read BGP Identifier - bgpId = cb.readInt(); - - // Read optional parameter length - optParaLen = cb.readByte(); - - // Read Capabilities if optional parameter length is greater than 0 - if (optParaLen != 0) { - // Read optional parameter type - optParaType = cb.readByte(); - - // Read optional parameter length - capParaLen = cb.readByte(); - - if (cb.readableBytes() < capParaLen) { - throw new BgpParseException(BgpErrorType.OPEN_MESSAGE_ERROR, (byte) 0, null); - } - - ChannelBuffer capaCb = cb.readBytes(capParaLen); - - // Parse capabilities only if optional parameter type is 2 - if ((optParaType == OPT_PARA_TYPE_CAPABILITY) && (capParaLen != 0)) { - capabilityTlv = parseCapabilityTlv(capaCb); - } else { - throw new BgpParseException(BgpErrorType.OPEN_MESSAGE_ERROR, - BgpErrorType.UNSUPPORTED_OPTIONAL_PARAMETER, null); - } - } - return new BgpOpenMsgVer4(bgpHeader, version, asNumber, holdTime, bgpId, capabilityTlv); - } - } - - /** - * Parsing capabilities. - * - * @param cb of type channel buffer - * @return capabilityTlv of open message - * @throws BgpParseException while parsing capabilities - */ - protected static LinkedList parseCapabilityTlv(ChannelBuffer cb) throws BgpParseException { - - LinkedList capabilityTlv = new LinkedList<>(); - - while (cb.readableBytes() > 0) { - BgpValueType tlv; - short type = cb.readByte(); - short length = cb.readByte(); - - switch (type) { - case FourOctetAsNumCapabilityTlv.TYPE: - log.debug("FourOctetAsNumCapabilityTlv"); - if (FourOctetAsNumCapabilityTlv.LENGTH != length) { - throw new BgpParseException("Invalid length received for FourOctetAsNumCapabilityTlv."); - } - if (length > cb.readableBytes()) { - throw new BgpParseException("Four octet as num tlv length" - + " is more than readableBytes."); - } - int as4Num = cb.readInt(); - tlv = new FourOctetAsNumCapabilityTlv(as4Num); - break; - case MultiProtocolExtnCapabilityTlv.TYPE: - log.debug("MultiProtocolExtnCapabilityTlv"); - if (MultiProtocolExtnCapabilityTlv.LENGTH != length) { - throw new BgpParseException("Invalid length received for MultiProtocolExtnCapabilityTlv."); - } - if (length > cb.readableBytes()) { - throw new BgpParseException("BGP LS tlv length is more than readableBytes."); - } - short afi = cb.readShort(); - byte res = cb.readByte(); - byte safi = cb.readByte(); - tlv = new MultiProtocolExtnCapabilityTlv(afi, res, safi); - break; - default: - log.debug("Warning: Unsupported TLV: " + type); - cb.skipBytes(length); - continue; - } - capabilityTlv.add(tlv); - } - return capabilityTlv; - } - - /** - * Builder class for BGP open message. - */ - static class Builder implements BgpOpenMsg.Builder { - - private boolean isHeaderSet = false; - private BgpHeader bgpMsgHeader; - private boolean isHoldTimeSet = false; - private short holdTime; - private boolean isAsNumSet = false; - private short asNumber; - private boolean isBgpIdSet = false; - private int bgpId; - private boolean isLargeAsCapabilityTlvSet = false; - private boolean isLsCapabilityTlvSet = false; - - LinkedList capabilityTlv = new LinkedList<>(); - - @Override - public BgpOpenMsg build() throws BgpParseException { - BgpHeader bgpMsgHeader = this.isHeaderSet ? this.bgpMsgHeader : DEFAULT_OPEN_HEADER; - short holdTime = this.isHoldTimeSet ? this.holdTime : DEFAULT_HOLD_TIME; - - if (!this.isAsNumSet) { - throw new BgpParseException("BGP AS number is not set (mandatory)"); - } - - if (!this.isBgpIdSet) { - throw new BgpParseException("BGPID is not set (mandatory)"); - } - - if (this.isLargeAsCapabilityTlvSet) { - BgpValueType tlv; - int value = this.asNumber; - tlv = new FourOctetAsNumCapabilityTlv(value); - this.capabilityTlv.add(tlv); - } - - if (this.isLsCapabilityTlvSet) { - BgpValueType tlv; - tlv = new MultiProtocolExtnCapabilityTlv(AFI, RES, SAFI); - this.capabilityTlv.add(tlv); - } - - return new BgpOpenMsgVer4(bgpMsgHeader, PACKET_VERSION, this.asNumber, holdTime, this.bgpId, - this.capabilityTlv); - } - - @Override - public Builder setHeader(BgpHeader bgpMsgHeader) { - this.bgpMsgHeader = bgpMsgHeader; - return this; - } - - @Override - public Builder setHoldTime(short holdTime) { - this.holdTime = holdTime; - this.isHoldTimeSet = true; - return this; - } - - @Override - public Builder setAsNumber(short asNumber) { - this.asNumber = asNumber; - this.isAsNumSet = true; - return this; - } - - @Override - public Builder setBgpId(int bgpId) { - this.bgpId = bgpId; - this.isBgpIdSet = true; - return this; - } - - @Override - public Builder setCapabilityTlv(LinkedList capabilityTlv) { - this.capabilityTlv = capabilityTlv; - return this; - } - - @Override - public Builder setLargeAsCapabilityTlv(boolean isLargeAsCapabilitySet) { - this.isLargeAsCapabilityTlvSet = isLargeAsCapabilitySet; - return this; - } - - @Override - public Builder setLsCapabilityTlv(boolean isLsCapabilitySet) { - this.isLsCapabilityTlvSet = isLsCapabilitySet; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) { - try { - WRITER.write(cb, this); - } catch (BgpParseException e) { - log.debug("[writeTo] Error: " + e.toString()); - } - } - - public static final Writer WRITER = new Writer(); - - /** - * Writer class for writing BGP open message to channel buffer. - */ - public static class Writer implements BgpMessageWriter { - - @Override - public void write(ChannelBuffer cb, BgpOpenMsgVer4 message) throws BgpParseException { - - int optParaLen = 0; - int as4num = 0; - - int startIndex = cb.writerIndex(); - - // write common header and get msg length index - int msgLenIndex = message.bgpMsgHeader.write(cb); - - if (msgLenIndex <= 0) { - throw new BgpParseException("Unable to write message header."); - } - - // write version in 1-octet - cb.writeByte(message.version); - - // get as4num if LS Capability is set - if (message.isLargeAsCapabilitySet) { - LinkedList capabilityTlv = message - .getCapabilityTlv(); - ListIterator listIterator = capabilityTlv - .listIterator(); - - while (listIterator.hasNext()) { - BgpValueType tlv = listIterator.next(); - if (tlv.getType() == FOUR_OCTET_AS_NUM_CAPA_TYPE) { - as4num = ((FourOctetAsNumCapabilityTlv) tlv).getInt(); - break; - } - } - } - - if ((message.isLargeAsCapabilitySet) && (as4num > 65535)) { - // write As number as AS_TRANS - cb.writeShort(AS_TRANS); - } else { - // write AS number in next 2-octet - cb.writeShort(message.asNumber); - } - - // write HoldTime in next 2-octet - cb.writeShort(message.holdTime); - - // write BGP Identifier in next 4-octet - cb.writeInt(message.bgpId); - - // store the index of Optional parameter length - int optParaLenIndex = cb.writerIndex(); - - // set optional parameter length as 0 - cb.writeByte(0); - - // Pack capability TLV - optParaLen = message.packCapabilityTlv(cb, message); - - if (optParaLen != 0) { - // Update optional parameter length - cb.setByte(optParaLenIndex, (byte) (optParaLen + 2)); //+2 for optional parameter type. - } - - // write OPEN Object Length - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - message.bgpMsgHeader.setLength((short) length); - } - } - - /** - * returns length of capability tlvs. - * - * @param cb of type channel buffer - * @param message of type BGPOpenMsgVer4 - * @return capParaLen of open message - */ - protected int packCapabilityTlv(ChannelBuffer cb, BgpOpenMsgVer4 message) { - int startIndex = cb.writerIndex(); - int capParaLen = 0; - int capParaLenIndex = 0; - - LinkedList capabilityTlv = message.capabilityTlv; - ListIterator listIterator = capabilityTlv.listIterator(); - - if (listIterator.hasNext()) { - // Set optional parameter type as 2 - cb.writeByte(OPT_PARA_TYPE_CAPABILITY); - - // Store the index of capability parameter length and update length at the end - capParaLenIndex = cb.writerIndex(); - - // Set capability parameter length as 0 - cb.writeByte(0); - - // Update the startIndex to know the length of capability tlv - startIndex = cb.writerIndex(); - } - - while (listIterator.hasNext()) { - BgpValueType tlv = listIterator.next(); - if (tlv == null) { - log.debug("Warning: tlv is null from CapabilityTlv list"); - continue; - } - tlv.write(cb); - } - - capParaLen = cb.writerIndex() - startIndex; - - if (capParaLen != 0) { - // Update capability parameter length - cb.setByte(capParaLenIndex, (byte) capParaLen); - } - return capParaLen; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("bgpMsgHeader", bgpMsgHeader) - .add("version", version) - .add("holdTime", holdTime) - .add("asNumber", asNumber) - .add("bgpId", bgpId) - .add("capabilityTlv", capabilityTlv) - .toString(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpPathAttributes.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpPathAttributes.java deleted file mode 100644 index 13e52ca2..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpPathAttributes.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.bgpio.protocol.ver4; - -import java.util.LinkedList; -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.As4Path; -import org.onosproject.bgpio.types.AsPath; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.LocalPref; -import org.onosproject.bgpio.types.Med; -import org.onosproject.bgpio.types.NextHop; -import org.onosproject.bgpio.types.Origin; -import org.onosproject.bgpio.types.MpReachNlri; -import org.onosproject.bgpio.types.MpUnReachNlri; -import org.onosproject.bgpio.util.UnSupportedAttribute; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Implementation of BGP Path Attribute. - */ -public class BgpPathAttributes { - - /* Path attribute: - - - 0 1 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Attr. Flags |Attr. Type Code| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - REFERENCE : RFC 4271 - */ - protected static final Logger log = LoggerFactory.getLogger(BgpPathAttributes.class); - - public static final int LINK_STATE_ATTRIBUTE_TYPE = 50; - public static final int MPREACHNLRI_TYPE = 14; - public static final int MPUNREACHNLRI_TYPE = 15; - - private final List pathAttribute; - - /** - * Initialize parameter. - */ - public BgpPathAttributes() { - this.pathAttribute = null; - } - - /** - * Constructor to initialize parameters for BGP path attributes. - * - * @param pathAttribute list of path attributes - */ - public BgpPathAttributes(List pathAttribute) { - this.pathAttribute = pathAttribute; - } - - /** - * Returns list of path attributes. - * - * @return list of path attributes - */ - public List pathAttributes() { - return this.pathAttribute; - } - - /** - * Reads from channelBuffer and parses BGP path attributes. - * - * @param cb channelBuffer - * @return object of BgpPathAttributes - * @throws BgpParseException while parsing BGP path attributes - */ - public static BgpPathAttributes read(ChannelBuffer cb) - throws BgpParseException { - - BgpValueType pathAttribute = null; - List pathAttributeList = new LinkedList<>(); - boolean isOrigin = false; - boolean isAsPath = false; - boolean isNextHop = false; - boolean isMpReach = false; - boolean isMpUnReach = false; - while (cb.readableBytes() > 0) { - cb.markReaderIndex(); - byte flags = cb.readByte(); - byte typeCode = cb.readByte(); - cb.resetReaderIndex(); - switch (typeCode) { - case Origin.ORIGIN_TYPE: - pathAttribute = Origin.read(cb); - isOrigin = ((Origin) pathAttribute).isOriginSet(); - break; - case AsPath.ASPATH_TYPE: - pathAttribute = AsPath.read(cb); - isAsPath = ((AsPath) pathAttribute).isaspathSet(); - break; - case As4Path.AS4PATH_TYPE: - pathAttribute = As4Path.read(cb); - break; - case NextHop.NEXTHOP_TYPE: - pathAttribute = NextHop.read(cb); - isNextHop = ((NextHop) pathAttribute).isNextHopSet(); - break; - case Med.MED_TYPE: - pathAttribute = Med.read(cb); - break; - case LocalPref.LOCAL_PREF_TYPE: - pathAttribute = LocalPref.read(cb); - break; - case MpReachNlri.MPREACHNLRI_TYPE: - pathAttribute = MpReachNlri.read(cb); - isMpReach = ((MpReachNlri) pathAttribute).isMpReachNlriSet(); - break; - case MpUnReachNlri.MPUNREACHNLRI_TYPE: - pathAttribute = MpUnReachNlri.read(cb); - isMpUnReach = ((MpUnReachNlri) pathAttribute) - .isMpUnReachNlriSet(); - break; - case LINK_STATE_ATTRIBUTE_TYPE: - //TODO: To be merged later - break; - default: - //skip bytes for unsupported attribute types - UnSupportedAttribute.read(cb); - } - pathAttributeList.add(pathAttribute); - } - - checkMandatoryAttr(isOrigin, isAsPath, isNextHop, isMpReach, isMpUnReach); - //TODO:if mp_reach or mp_unreach not present ignore the packet - return new BgpPathAttributes(pathAttributeList); - } - - /** - * Checks mandatory attributes are presents, if not present throws exception. - * - * @param isOrigin say whether origin attribute is present - * @param isAsPath say whether aspath attribute is present - * @param isNextHop say whether nexthop attribute is present - * @param isMpReach say whether mpreach attribute is present - * @param isMpUnReach say whether mpunreach attribute is present - * @throws BgpParseException if mandatory path attribute is not present - */ - public static void checkMandatoryAttr(boolean isOrigin, boolean isAsPath, - boolean isNextHop, boolean isMpReach, boolean isMpUnReach) - throws BgpParseException { - // Mandatory attributes validation not required for MP_UNREACH - if (isMpUnReach) { - return; - } - - if (!isOrigin) { - log.debug("Mandatory Attributes not Present"); - Validation.validateType(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.MISSING_WELLKNOWN_ATTRIBUTE, - Origin.ORIGIN_TYPE); - } - if (!isAsPath) { - log.debug("Mandatory Attributes not Present"); - Validation.validateType(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.MISSING_WELLKNOWN_ATTRIBUTE, - AsPath.ASPATH_TYPE); - } - if (!isMpUnReach && !isMpReach && !isNextHop) { - log.debug("Mandatory Attributes not Present"); - Validation.validateType(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.MISSING_WELLKNOWN_ATTRIBUTE, - NextHop.NEXTHOP_TYPE); - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("pathAttribute", pathAttribute) - .toString(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpUpdateMsgVer4.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpUpdateMsgVer4.java deleted file mode 100644 index 4d6af594..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpUpdateMsgVer4.java +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol.ver4; - -import java.util.LinkedList; -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.IpPrefix; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.BgpMessageReader; -import org.onosproject.bgpio.protocol.BgpType; -import org.onosproject.bgpio.protocol.BgpUpdateMsg; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpHeader; -import org.onosproject.bgpio.util.Validation; -import org.onosproject.bgpio.protocol.BgpVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * BGP Update Message: UPDATE messages are used to transfer routing information - * between BGP peers. The information in the UPDATE message is used by core to - * construct a graph - */ -public class BgpUpdateMsgVer4 implements BgpUpdateMsg { - - /* 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - + + - | | - + + - | Marker | - + + - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Length | Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Withdrawn Routes Length (2 octets) | - +-----------------------------------------------------+ - | Withdrawn Routes (variable) | - +-----------------------------------------------------+ - | Total Path Attribute Length (2 octets) | - +-----------------------------------------------------+ - | Path Attributes (variable) | - +-----------------------------------------------------+ - | Network Layer Reachability Information (variable) | - +-----------------------------------------------------+ - REFERENCE : RFC 4271 - */ - - protected static final Logger log = LoggerFactory - .getLogger(BgpUpdateMsgVer4.class); - - public static final byte PACKET_VERSION = 4; - //Withdrawn Routes Length(2) + Total Path Attribute Length(2) - public static final int PACKET_MINIMUM_LENGTH = 4; - public static final int BYTE_IN_BITS = 8; - public static final int MIN_LEN_AFTER_WITHDRW_ROUTES = 2; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 19; - public static final BgpType MSG_TYPE = BgpType.UPDATE; - public static final BgpUpdateMsgVer4.Reader READER = new Reader(); - - private List withdrawnRoutes; - private BgpPathAttributes bgpPathAttributes; - private BgpHeader bgpHeader; - private List nlri; - - /** - * Constructor to initialize parameters for BGP Update message. - * - * @param bgpHeader in Update message - * @param withdrawnRoutes withdrawn routes - * @param bgpPathAttributes BGP Path attributes - * @param nlri Network Layer Reachability Information - */ - public BgpUpdateMsgVer4(BgpHeader bgpHeader, List withdrawnRoutes, - BgpPathAttributes bgpPathAttributes, List nlri) { - this.bgpHeader = bgpHeader; - this.withdrawnRoutes = withdrawnRoutes; - this.bgpPathAttributes = bgpPathAttributes; - this.nlri = nlri; - } - - /** - * Reader reads BGP Update Message from the channel buffer. - */ - static class Reader implements BgpMessageReader { - - @Override - public BgpUpdateMsg readFrom(ChannelBuffer cb, BgpHeader bgpHeader) - throws BgpParseException { - - if (cb.readableBytes() != (bgpHeader.getLength() - MINIMUM_COMMON_HEADER_LENGTH)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.BAD_MESSAGE_LENGTH, bgpHeader.getLength()); - } - - LinkedList withDrwRoutes = new LinkedList<>(); - LinkedList nlri = new LinkedList<>(); - BgpPathAttributes bgpPathAttributes = new BgpPathAttributes(); - // Reading Withdrawn Routes Length - Short withDrwLen = cb.readShort(); - - if (cb.readableBytes() < withDrwLen) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.MALFORMED_ATTRIBUTE_LIST, - cb.readableBytes()); - } - ChannelBuffer tempCb = cb.readBytes(withDrwLen); - if (withDrwLen != 0) { - // Parsing WithdrawnRoutes - withDrwRoutes = parseWithdrawnRoutes(tempCb); - } - if (cb.readableBytes() < MIN_LEN_AFTER_WITHDRW_ROUTES) { - log.debug("Bgp Path Attribute len field not present"); - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.MALFORMED_ATTRIBUTE_LIST, null); - } - - // Reading Total Path Attribute Length - short totPathAttrLen = cb.readShort(); - int len = withDrwLen + totPathAttrLen + PACKET_MINIMUM_LENGTH; - if (len > bgpHeader.getLength()) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.MALFORMED_ATTRIBUTE_LIST, null); - } - if (totPathAttrLen != 0) { - // Parsing BGPPathAttributes - if (cb.readableBytes() < totPathAttrLen) { - Validation - .validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.MALFORMED_ATTRIBUTE_LIST, - cb.readableBytes()); - } - tempCb = cb.readBytes(totPathAttrLen); - bgpPathAttributes = BgpPathAttributes.read(tempCb); - } - if (cb.readableBytes() > 0) { - // Parsing NLRI - nlri = parseNlri(cb); - } - return new BgpUpdateMsgVer4(bgpHeader, withDrwRoutes, - bgpPathAttributes, nlri); - } - } - - /** - * Parses NLRI from channel buffer. - * - * @param cb channelBuffer - * @return list of IP Prefix - * @throws BgpParseException while parsing NLRI - */ - public static LinkedList parseNlri(ChannelBuffer cb) - throws BgpParseException { - LinkedList nlri = new LinkedList<>(); - while (cb.readableBytes() > 0) { - int length = cb.readByte(); - IpPrefix ipPrefix; - if (length == 0) { - byte[] prefix = new byte[] {0}; - ipPrefix = Validation.bytesToPrefix(prefix, length); - nlri.add(ipPrefix); - } else { - int len = length / BYTE_IN_BITS; - int reminder = length % BYTE_IN_BITS; - if (reminder > 0) { - len = len + 1; - } - if (cb.readableBytes() < len) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.MALFORMED_ATTRIBUTE_LIST, - cb.readableBytes()); - } - byte[] prefix = new byte[len]; - cb.readBytes(prefix, 0, len); - ipPrefix = Validation.bytesToPrefix(prefix, length); - nlri.add(ipPrefix); - } - } - return nlri; - } - - /** - * Parsing withdrawn routes from channel buffer. - * - * @param cb channelBuffer - * @return list of IP prefix - * @throws BgpParseException while parsing withdrawn routes - */ - public static LinkedList parseWithdrawnRoutes(ChannelBuffer cb) - throws BgpParseException { - LinkedList withDrwRoutes = new LinkedList<>(); - while (cb.readableBytes() > 0) { - int length = cb.readByte(); - IpPrefix ipPrefix; - if (length == 0) { - byte[] prefix = new byte[] {0}; - ipPrefix = Validation.bytesToPrefix(prefix, length); - withDrwRoutes.add(ipPrefix); - } else { - int len = length / BYTE_IN_BITS; - int reminder = length % BYTE_IN_BITS; - if (reminder > 0) { - len = len + 1; - } - if (cb.readableBytes() < len) { - Validation - .validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.MALFORMED_ATTRIBUTE_LIST, - cb.readableBytes()); - } - byte[] prefix = new byte[len]; - cb.readBytes(prefix, 0, len); - ipPrefix = Validation.bytesToPrefix(prefix, length); - withDrwRoutes.add(ipPrefix); - } - } - return withDrwRoutes; - } - - @Override - public BgpVersion getVersion() { - return BgpVersion.BGP_4; - } - - @Override - public BgpType getType() { - return BgpType.UPDATE; - } - - @Override - public void writeTo(ChannelBuffer channelBuffer) throws BgpParseException { - //Not to be implemented as of now - } - - @Override - public BgpPathAttributes bgpPathAttributes() { - return this.bgpPathAttributes; - } - - @Override - public List withdrawnRoutes() { - return withdrawnRoutes; - } - - @Override - public List nlri() { - return nlri; - } - - @Override - public BgpHeader getHeader() { - return this.bgpHeader; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("bgpHeader", bgpHeader) - .add("withDrawnRoutes", withdrawnRoutes) - .add("nlri", nlri) - .add("bgpPathAttributes", bgpPathAttributes) - .toString(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/package-info.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/package-info.java deleted file mode 100755 index fb8c67c0..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/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. - */ - -/** - * BGP Protocol specific details of version 4. - */ -package org.onosproject.bgpio.protocol.ver4; \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AreaIDTlv.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AreaIDTlv.java deleted file mode 100644 index 842c6f02..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AreaIDTlv.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; - -import com.google.common.base.MoreObjects; - -/** - * Provides AreaID Tlv which contains opaque value (32 Bit Area-ID). - */ -public class AreaIDTlv implements BgpValueType { - - /* Reference :draft-ietf-idr-ls-distribution-11 - * 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= 514 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | opaque value (32 Bit Area-ID) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - public static final short TYPE = 514; - public static final short LENGTH = 4; - - private final int areaID; - - /** - * Constructor to initialize areaID. - * - * @param areaID of BGP AreaID Tlv - */ - public AreaIDTlv(int areaID) { - this.areaID = areaID; - } - - /** - * Returns object of this class with specified areaID. - * - * @param areaID opaque value of area id - * @return object of AreaIDTlv - */ - public static AreaIDTlv of(final int areaID) { - return new AreaIDTlv(areaID); - } - - /** - * Returns opaque value of area id. - * - * @return opaque value of area id - */ - public int getAreaID() { - return areaID; - } - - @Override - public int hashCode() { - return Objects.hash(areaID); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof AreaIDTlv) { - AreaIDTlv other = (AreaIDTlv) obj; - return Objects.equals(areaID, other.areaID); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(areaID); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of AreaIDTlv. - * - * @param cb ChannelBuffer - * @return object of AreaIDTlv - */ - public static AreaIDTlv read(ChannelBuffer cb) { - return AreaIDTlv.of(cb.readInt()); - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - return ((Integer) (this.areaID)).compareTo((Integer) (((AreaIDTlv) o).areaID)); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", areaID) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java deleted file mode 100644 index 3ceca2ce..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types; - -import java.util.ArrayList; -import java.util.List; -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; - -/** - * Provides Implementation of As4Path BGP Path Attribute. - */ -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; - - private List as4pathSet; - private List as4pathSeq; - - /** - * Initialize fields. - */ - public As4Path() { - this.as4pathSeq = null; - this.as4pathSet = null; - } - - /** - * Constructor to initialize parameters. - * - * @param as4pathSet AS4path Set - * @param as4pathSeq AS4path Sequence - */ - public As4Path(List as4pathSet, List as4pathSeq) { - this.as4pathSeq = as4pathSeq; - this.as4pathSet = as4pathSet; - } - - /** - * Reads from the channel buffer and parses As4Path. - * - * @param cb ChannelBuffer - * @return object of As4Path - * @throws BgpParseException while parsing As4Path - */ - public static As4Path read(ChannelBuffer cb) throws BgpParseException { - List as4pathSet = new ArrayList<>(); - List as4pathSeq = new ArrayList<>(); - ChannelBuffer tempCb = cb.copy(); - Validation validation = Validation.parseAttributeHeader(cb); - - if (cb.readableBytes() < validation.getLength()) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - 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() + 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); - } - - ChannelBuffer tempBuf = cb.readBytes(validation.getLength()); - while (tempBuf.readableBytes() > 0) { - byte pathSegType = tempBuf.readByte(); - //no of ASes - byte pathSegLen = tempBuf.readByte(); - //length = no of Ases * ASnum size (4 bytes) - int length = pathSegLen * ASNUM_SIZE; - if (tempBuf.readableBytes() < length) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, length); - } - ChannelBuffer aspathBuf = tempBuf.readBytes(length); - while (aspathBuf.readableBytes() > 0) { - int asNum; - asNum = aspathBuf.readInt(); - switch (pathSegType) { - case AsPath.ASPATH_SET_TYPE: - as4pathSet.add(asNum); - break; - case AsPath.ASPATH_SEQ_TYPE: - as4pathSeq.add(asNum); - break; - default: log.debug("Other type Not Supported:" + pathSegType); - } - } - } - return new As4Path(as4pathSet, as4pathSeq); - } - - @Override - public short getType() { - return AS4PATH_TYPE; - } - - /** - * Returns list of ASNum in AS4path Sequence. - * - * @return list of ASNum in AS4path Sequence - */ - public List as4PathSEQ() { - return this.as4pathSeq; - } - - /** - * Returns list of ASNum in AS4path Set. - * - * @return list of ASNum in AS4path Set - */ - public List as4PathSET() { - return this.as4pathSet; - } - - @Override - public int hashCode() { - return Objects.hash(as4pathSet, as4pathSeq); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof As4Path) { - As4Path other = (As4Path) obj; - return Objects.equals(as4pathSet, other.as4pathSet) && Objects.equals(as4pathSeq, other.as4pathSeq); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("as4pathSet", as4pathSet) - .add("as4pathSeq", as4pathSeq) - .toString(); - } - - @Override - public int write(ChannelBuffer cb) { - //Not required to Implement as of now - return 0; - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java deleted file mode 100644 index 2a050c44..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.bgpio.types; - -import java.util.ArrayList; -import java.util.List; -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; - -/** - * Provides Implementation of AsPath mandatory BGP Path Attribute. - */ -public class AsPath implements BgpValueType { - /** - * Enum to provide AS types. - */ - public enum ASTYPE { - AS_SET(1), AS_SEQUENCE(2), AS_CONFED_SEQUENCE(3), AS_CONFED_SET(4); - int value; - - /** - * Assign val with the value as the AS type. - * - * @param val AS type - */ - ASTYPE(int val) { - value = val; - } - - /** - * Returns value of AS type. - * - * @return AS type - */ - public byte type() { - return (byte) value; - } - } - - private static final Logger log = LoggerFactory.getLogger(AsPath.class); - public static final byte ASPATH_TYPE = 2; - public static final byte ASPATH_SET_TYPE = 1; - public static final byte ASPATH_SEQ_TYPE = 2; - public static final byte ASNUM_SIZE = 2; - - private boolean isAsPath = false; - private List aspathSet; - private List aspathSeq; - - /** - * Initialize Fields. - */ - public AsPath() { - this.aspathSeq = null; - this.aspathSet = null; - } - - /** - * Constructor to initialize parameters. - * - * @param aspathSet ASpath Set type - * @param aspathSeq ASpath Sequence type - */ - public AsPath(List aspathSet, List aspathSeq) { - this.aspathSeq = aspathSeq; - this.aspathSet = aspathSet; - this.isAsPath = true; - } - - /** - * Reads from the channel buffer and parses AsPath. - * - * @param cb ChannelBuffer - * @return object of AsPath - * @throws BgpParseException while parsing AsPath - */ - public static AsPath read(ChannelBuffer cb) throws BgpParseException { - List aspathSet = new ArrayList<>(); - List aspathSeq = new ArrayList<>(); - ChannelBuffer tempCb = cb.copy(); - Validation validation = Validation.parseAttributeHeader(cb); - - if (cb.readableBytes() < validation.getLength()) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - 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() + 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); - } - - ChannelBuffer tempBuf = cb.readBytes(validation.getLength()); - while (tempBuf.readableBytes() > 0) { - byte pathSegType = tempBuf.readByte(); - //no of ASes - byte pathSegLen = tempBuf.readByte(); - int length = pathSegLen * ASNUM_SIZE; - if (tempBuf.readableBytes() < length) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, length); - } - ChannelBuffer aspathBuf = tempBuf.readBytes(length); - while (aspathBuf.readableBytes() > 0) { - short asNum; - asNum = aspathBuf.readShort(); - switch (pathSegType) { - case ASPATH_SET_TYPE: - aspathSet.add(asNum); - break; - case ASPATH_SEQ_TYPE: - aspathSeq.add(asNum); - break; - default: log.debug("Other type Not Supported:" + pathSegType); - } - } - } - return new AsPath(aspathSet, aspathSeq); - } - - @Override - public short getType() { - return ASPATH_TYPE; - } - - /** - * Returns whether ASpath path attribute is present. - * - * @return whether ASpath path attribute is present - */ - public boolean isaspathSet() { - return this.isAsPath; - } - - /** - * Returns list of ASNum in ASpath Sequence. - * - * @return list of ASNum in ASpath Sequence - */ - public List asPathSeq() { - return this.aspathSeq; - } - - /** - * Returns list of ASNum in ASpath SET. - * - * @return list of ASNum in ASpath SET - */ - public List asPathSet() { - return this.aspathSet; - } - - @Override - public int hashCode() { - return Objects.hash(aspathSet, aspathSeq); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof AsPath) { - AsPath other = (AsPath) obj; - return Objects.equals(aspathSet, other.aspathSet) && Objects.equals(aspathSeq, other.aspathSeq); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("aspathSet", aspathSet) - .add("aspathSeq", aspathSeq) - .toString(); - } - - @Override - public int write(ChannelBuffer cb) { - //Not required to Implement as of now - return 0; - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AutonomousSystemTlv.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AutonomousSystemTlv.java deleted file mode 100644 index 119926c8..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AutonomousSystemTlv.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; - -import com.google.common.base.MoreObjects; - -/** - * Provides Autonomous System Tlv which contains opaque value (32 Bit AS Number). - */ -public class AutonomousSystemTlv implements BgpValueType { - - /* Reference :draft-ietf-idr-ls-distribution-11 - * 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= 512 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | opaque value (32 Bit AS Number) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - public static final short TYPE = 512; - public static final short LENGTH = 4; - - private final int asNum; - - /** - * Constructor to initialize asNum. - * - * @param asNum 32 Bit AS Number - */ - public AutonomousSystemTlv(int asNum) { - this.asNum = asNum; - } - - /** - * Returns object of this class with specified asNum. - * - * @param asNum 32 Bit AS Number - * @return object of AutonomousSystemTlv - */ - public static AutonomousSystemTlv of(final int asNum) { - return new AutonomousSystemTlv(asNum); - } - - /** - * Returns opaque value of AS Number. - * - * @return opaque value of AS Number - */ - public int getAsNum() { - return asNum; - } - - @Override - public int hashCode() { - return Objects.hash(asNum); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof AutonomousSystemTlv) { - AutonomousSystemTlv other = (AutonomousSystemTlv) obj; - return Objects.equals(asNum, other.asNum); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(asNum); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of AutonomousSystemTlv. - * - * @param c ChannelBuffer - * @return object of AutonomousSystemTlv - */ - public static AutonomousSystemTlv read(ChannelBuffer c) { - return AutonomousSystemTlv.of(c.readInt()); - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - return ((Integer) (this.asNum)).compareTo((Integer) (((AutonomousSystemTlv) o).asNum)); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("asNum", asNum) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpErrorType.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpErrorType.java deleted file mode 100644 index c0932ebe..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpErrorType.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.bgpio.types; - -/** - * BgpErrorType class defines all errorCodes and error Subcodes required for Notification message. - */ -public final class BgpErrorType { - private BgpErrorType() { - } - - //Error Codes - public static final byte MESSAGE_HEADER_ERROR = 1; - 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 = 5; - public static final byte CEASE = 6; - - //Message Header Error subcodes - public static final byte CONNECTION_NOT_SYNCHRONIZED = 1; - public static final byte BAD_MESSAGE_LENGTH = 2; - public static final byte BAD_MESSAGE_TYPE = 3; - - //OPEN Message Error subcodes - public static final byte UNSUPPORTED_VERSION_NUMBER = 1; - public static final byte BAD_PEER_AS = 2; - 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; - public static final byte UNRECOGNIZED_WELLKNOWN_ATTRIBUTE = 2; - public static final byte MISSING_WELLKNOWN_ATTRIBUTE = 3; - public static final byte ATTRIBUTE_FLAGS_ERROR = 4; - public static final byte ATTRIBUTE_LENGTH_ERROR = 5; - public static final byte INVALID_ORIGIN_ATTRIBUTE = 6; - public static final byte INVALID_NEXTHOP_ATTRIBUTE = 8; - 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/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpHeader.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpHeader.java deleted file mode 100755 index ad637753..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpHeader.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.bgpio.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Provides BGP Message Header which is common for all the Messages. - */ - -public class BgpHeader { - - /* 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 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - + + - | | - + + - | Marker | - + + - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Length | Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - protected static final Logger log = LoggerFactory.getLogger(BgpHeader.class); - - public static final int MARKER_LENGTH = 16; - public static final short DEFAULT_HEADER_LENGTH = 19; - - private byte[] marker; - private byte type; - private short length; - - /** - * Reset fields. - */ - public BgpHeader() { - this.marker = null; - this.length = 0; - this.type = 0; - } - - /** - * Constructors to initialize parameters. - * - * @param marker field in BGP header - * @param length message length - * @param type message type - */ - public BgpHeader(byte[] marker, short length, byte type) { - this.marker = marker; - this.length = length; - this.type = type; - } - - /** - * Sets marker field. - * - * @param value marker field - */ - public void setMarker(byte[] value) { - this.marker = value; - } - - /** - * Sets message type. - * - * @param value message type - */ - public void setType(byte value) { - this.type = value; - } - - /** - * Sets message length. - * - * @param value message length - */ - public void setLength(short value) { - this.length = value; - } - - /** - * Returns message length. - * - * @return message length - */ - public short getLength() { - return this.length; - } - - /** - * Returns message marker. - * - * @return message marker - */ - public byte[] getMarker() { - return this.marker; - } - - /** - * Returns message type. - * - * @return message type - */ - public byte getType() { - return this.type; - } - - /** - * Writes Byte stream of BGP header to channel buffer. - * - * @param cb ChannelBuffer - * @return length index of message header - */ - public int write(ChannelBuffer cb) { - - cb.writeBytes(getMarker(), 0, MARKER_LENGTH); - - int headerLenIndex = cb.writerIndex(); - cb.writeShort((short) 0); - cb.writeByte(type); - - return headerLenIndex; - } - - /** - * Read from channel buffer and Returns BGP header. - * - * @param cb ChannelBuffer - * @return object of BGPHeader - */ - public static BgpHeader read(ChannelBuffer cb) { - - byte[] marker = new byte[MARKER_LENGTH]; - byte type; - short length; - cb.readBytes(marker, 0, MARKER_LENGTH); - length = cb.readShort(); - type = cb.readByte(); - return new BgpHeader(marker, length, type); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpLSIdentifierTlv.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpLSIdentifierTlv.java deleted file mode 100644 index 58645d4f..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpLSIdentifierTlv.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.bgpio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; - -import com.google.common.base.MoreObjects; - -/** - * Provides BGPLSIdentifier Tlv which contains opaque value (32 Bit BGPLS-Identifier). - */ -public class BgpLSIdentifierTlv implements BgpValueType { - - /* Reference :draft-ietf-idr-ls-distribution-11 - * 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= 513 | Length=4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | opaque value (32 Bit BGPLS-Identifier) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - public static final short TYPE = 513; - public static final short LENGTH = 4; - - private final int bgpLsIdentifier; - - /** - * Constructor to initialize bgpLsIdentifier. - * - * @param bgpLsIdentifier BGPLS-Identifier - */ - public BgpLSIdentifierTlv(int bgpLsIdentifier) { - this.bgpLsIdentifier = bgpLsIdentifier; - } - - /** - * Returns object of this class with specified bgpLsIdentifier. - * - * @param bgpLsIdentifier BGPLS-Identifier - * @return BGPLS-Identifier - */ - public static BgpLSIdentifierTlv of(final int bgpLsIdentifier) { - return new BgpLSIdentifierTlv(bgpLsIdentifier); - } - - /** - * Returns opaque value of BGPLS-Identifier. - * - * @return opaque value of BGPLS-Identifier - */ - public int getBgpLsIdentifier() { - return bgpLsIdentifier; - } - - @Override - public int hashCode() { - return Objects.hash(bgpLsIdentifier); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpLSIdentifierTlv) { - BgpLSIdentifierTlv other = (BgpLSIdentifierTlv) obj; - return Objects.equals(bgpLsIdentifier, other.bgpLsIdentifier); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(bgpLsIdentifier); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and parses BGPLS Identifier TLV. - * - * @param cb ChannelBuffer - * @return object of BGPLSIdentifierTlv - */ - public static BgpLSIdentifierTlv read(ChannelBuffer cb) { - return BgpLSIdentifierTlv.of(cb.readInt()); - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - return ((Integer) (this.bgpLsIdentifier)).compareTo((Integer) (((BgpLSIdentifierTlv) o).bgpLsIdentifier)); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", bgpLsIdentifier) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpValueType.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpValueType.java deleted file mode 100644 index af7f4b75..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpValueType.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.bgpio.types; - -import org.jboss.netty.buffer.ChannelBuffer; - -/** - * Abstraction which Provides the BGP of TLV format. - */ -public interface BgpValueType { - /** - * Returns the Type of BGP Message. - * - * @return short value of type - */ - short getType(); - - /** - * Writes the byte Stream of BGP Message to channel buffer. - * - * @param cb channel buffer - * @return length written to channel buffer - */ - int write(ChannelBuffer cb); - - /** - * Compares two objects. - * - * @param o object - * @return result after comparing two objects - */ - int compareTo(Object o); -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/FourOctetAsNumCapabilityTlv.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/FourOctetAsNumCapabilityTlv.java deleted file mode 100644 index 59db3318..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/FourOctetAsNumCapabilityTlv.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.bgpio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides FourOctetAsNumCapabilityTlv Capability Tlv. - */ -public class FourOctetAsNumCapabilityTlv implements BgpValueType { - - /** - * support to indicate its support for four-octet AS numbers -CAPABILITY TLV format. - */ - protected static final Logger log = LoggerFactory - .getLogger(FourOctetAsNumCapabilityTlv.class); - - public static final byte TYPE = 65; - public static final byte LENGTH = 4; - - private final int rawValue; - - /** - * constructor to initialize rawValue. - * @param rawValue FourOctetAsNumCapabilityTlv - */ - public FourOctetAsNumCapabilityTlv(int rawValue) { - this.rawValue = rawValue; - } - - /** - * constructor to initialize raw. - * @param raw AS number - * @return object of FourOctetAsNumCapabilityTlv - */ - public static FourOctetAsNumCapabilityTlv of(final int raw) { - return new FourOctetAsNumCapabilityTlv(raw); - } - - /** - * Returns value of TLV. - * @return int value of rawValue - */ - public int getInt() { - return rawValue; - } - - @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 FourOctetAsNumCapabilityTlv) { - FourOctetAsNumCapabilityTlv other = (FourOctetAsNumCapabilityTlv) obj; - return Objects.equals(rawValue, other.rawValue); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - int iLenStartIndex = cb.writerIndex(); - cb.writeByte(TYPE); - cb.writeByte(LENGTH); - cb.writeInt(rawValue); - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of FourOctetAsNumCapabilityTlv. - * @param cb type of channel buffer - * @return object of FourOctetAsNumCapabilityTlv - */ - public static FourOctetAsNumCapabilityTlv read(ChannelBuffer cb) { - return FourOctetAsNumCapabilityTlv.of(cb.readInt()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", rawValue).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java deleted file mode 100644 index d97537e8..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.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.bgpio.types; - -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.IpPrefix; -import org.onosproject.bgpio.util.Validation; - -import com.google.common.base.MoreObjects; - -/** - * Provides IP Reachability InformationTlv Tlv which contains IP Prefix. - */ -public class IPReachabilityInformationTlv implements BgpValueType { - - /* - * Reference :draft-ietf-idr-ls-distribution-11 - - 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 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Prefix Length | IP Prefix (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Figure 14: IP Reachability Information TLV Format - */ - - public static final short TYPE = 265; - public static final int ONE_BYTE_LEN = 8; - - private byte prefixLen; - private byte[] ipPrefix; - public short length; - - /** - * Constructor to initialize parameters. - * - * @param prefixLen length of IP Prefix - * @param ipPrefix IP Prefix - * @param length length of value field - */ - public IPReachabilityInformationTlv(byte prefixLen, byte[] ipPrefix, short length) { - this.ipPrefix = ipPrefix; - this.prefixLen = prefixLen; - this.length = length; - } - - /** - * Returns IP Prefix. - * - * @return IP Prefix - */ - public IpPrefix getPrefixValue() { - IpPrefix prefix = Validation.bytesToPrefix(ipPrefix, prefixLen); - return prefix; - } - - /** - * Returns IP Prefix length. - * - * @return IP Prefix length - */ - public byte getPrefixLen() { - return this.prefixLen; - } - - @Override - public int hashCode() { - return Objects.hash(Arrays.hashCode(ipPrefix), prefixLen); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof IPReachabilityInformationTlv) { - IPReachabilityInformationTlv other = (IPReachabilityInformationTlv) obj; - return Objects.equals(prefixLen, other.prefixLen) && Arrays.equals(ipPrefix, other.ipPrefix); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - int iLenStartIndex = cb.writerIndex(); - cb.writeShort(TYPE); - cb.writeShort(length); - cb.writeByte(prefixLen); - cb.writeBytes(ipPrefix); - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPReachabilityInformationTlv. - * - * @param cb ChannelBuffer - * @param length of value field - * @return object of IPReachabilityInformationTlv - */ - public static IPReachabilityInformationTlv read(ChannelBuffer cb, short length) { - byte preficLen = cb.readByte(); - byte[] prefix; - if (preficLen == 0) { - prefix = new byte[] {0}; - } else { - int len = preficLen / ONE_BYTE_LEN; - int reminder = preficLen % ONE_BYTE_LEN; - if (reminder > 0) { - len = len + 1; - } - prefix = new byte[len]; - cb.readBytes(prefix, 0, len); - } - return IPReachabilityInformationTlv.of(preficLen, prefix, length); - } - - public static IPReachabilityInformationTlv of(final byte preficLen, final byte[] prefix, final short length) { - return new IPReachabilityInformationTlv(preficLen, prefix, length); - } - @Override - public short getType() { - return TYPE; - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - ByteBuffer value1 = ByteBuffer.wrap(this.ipPrefix); - ByteBuffer value2 = ByteBuffer.wrap(((IPReachabilityInformationTlv) o).ipPrefix); - return value1.compareTo(value2); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", length) - .add("Prefixlength", getPrefixLen()) - .add("Prefixvalue", getPrefixValue()) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv4AddressTlv.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv4AddressTlv.java deleted file mode 100644 index 4efde70e..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv4AddressTlv.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.bgpio.types; - -import java.net.InetAddress; -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.Validation; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Preconditions; - -/** - * Provides Implementation of IPv4AddressTlv. - */ -public class IPv4AddressTlv implements BgpValueType { - private static final int LENGTH = 4; - - private Ip4Address address; - private short type; - - /** - * Constructor to initialize parameters. - * - * @param address Ipv4 address of interface/neighbor - * @param type address type - */ - public IPv4AddressTlv(Ip4Address address, short type) { - this.address = Preconditions.checkNotNull(address); - this.type = type; - } - - /** - * Returns Ipv4 address of interface/neighbor. - * - * @return Ipv4 address of interface/neighbor - */ - public Ip4Address address() { - return address; - } - - @Override - public short getType() { - return this.type; - } - - @Override - public int hashCode() { - return Objects.hash(address); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv4AddressTlv) { - IPv4AddressTlv other = (IPv4AddressTlv) obj; - return Objects.equals(this.address, other.address) && Objects.equals(this.type, other.type); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - int iLenStartIndex = cb.writerIndex(); - cb.writeShort(type); - cb.writeShort(LENGTH); - cb.writeInt(address.toInt()); - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv4AddressTlv. - * - * @param cb channelBuffer - * @param type address type - * @return object of IPv4AddressTlv - * @throws BgpParseException while parsing IPv4AddressTlv - */ - public static IPv4AddressTlv read(ChannelBuffer cb, short type) throws BgpParseException { - InetAddress ipAddress = Validation.toInetAddress(LENGTH, cb); - if (ipAddress.isMulticastAddress()) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, (byte) 0, null); - } - Ip4Address address = Ip4Address.valueOf(ipAddress); - return IPv4AddressTlv.of(address, type); - } - - /** - * Returns object of this class with specified values. - * - * @param address Ipv4 interface/neighbor Address - * @param type says Ipv4 address of interface/neighbor tlv type - * @return object of this class - */ - public static IPv4AddressTlv of(final Ip4Address address , final short type) { - return new IPv4AddressTlv(address, type); - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - return ((Ip4Address) (this.address)).compareTo((Ip4Address) (((IPv4AddressTlv) o).address)); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("type", type) - .add("LENGTH", LENGTH) - .add("address", address) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv6AddressTlv.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv6AddressTlv.java deleted file mode 100644 index 087cd5c6..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv6AddressTlv.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.bgpio.types; - -import java.net.InetAddress; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip6Address; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.util.Validation; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Preconditions; - -/** - * Provides Implementation of IPv6AddressTlv. - */ -public class IPv6AddressTlv implements BgpValueType { - private static final int LENGTH = 16; - - private final Ip6Address address; - private short type; - - /** - * Constructor to initialize parameters. - * - * @param address Ipv6 address of interface/neighbor - * @param type address type - */ - public IPv6AddressTlv(Ip6Address address, short type) { - this.address = Preconditions.checkNotNull(address); - this.type = type; - } - - /** - * Returns Ipv6 address of interface/neighbor. - * - * @return Ipv6 address of interface/neighbor - */ - public Ip6Address address() { - return address; - } - - @Override - public short getType() { - return type; - } - - @Override - public int hashCode() { - return Objects.hash(address); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6AddressTlv) { - IPv6AddressTlv other = (IPv6AddressTlv) obj; - return Objects.equals(this.address, other.address) && Objects.equals(this.type, other.type); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - int iLenStartIndex = cb.writerIndex(); - cb.writeShort(type); - cb.writeShort(LENGTH); - cb.writeBytes(address.toOctets()); - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IPv6AddressTlv. - * - * @param cb channelBuffer - * @param type address type - * @return object of IPv6AddressTlv - * @throws BgpParseException while parsing IPv6AddressTlv - */ - public static IPv6AddressTlv read(ChannelBuffer cb, short type) throws BgpParseException { - InetAddress ipAddress = Validation.toInetAddress(LENGTH, cb); - if (ipAddress.isMulticastAddress()) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, (byte) 0, null); - } - Ip6Address address = Ip6Address.valueOf(ipAddress); - return IPv6AddressTlv.of(address, type); - } - - /** - * Returns object of this class with specified values. - * - * @param address Ipv6 interface/neighbor address - * @param type says Ipv6 address of interface/neighbor tlv type - * @return object of this class - */ - public static IPv6AddressTlv of(final Ip6Address address , final short type) { - return new IPv6AddressTlv(address, type); - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - return ((Ip6Address) (this.address)).compareTo((Ip6Address) (((IPv6AddressTlv) o).address)); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("type", type) - .add("LENGTH", LENGTH) - .add("address", address) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsNonPseudonode.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsNonPseudonode.java deleted file mode 100644 index 427aa929..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsNonPseudonode.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types; - -import java.nio.ByteBuffer; -import java.util.Arrays; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.protocol.IGPRouterID; - -import com.google.common.base.MoreObjects; - -/** - * Provides Implementation of IsIsNonPseudonode Tlv. - */ -public class IsIsNonPseudonode implements IGPRouterID, BgpValueType { - public static final short TYPE = 515; - public static final short LENGTH = 6; - - private final byte[] isoNodeID; - - /** - * Constructor to initialize isoNodeID. - * - * @param isoNodeID ISO system-ID - */ - public IsIsNonPseudonode(byte[] isoNodeID) { - this.isoNodeID = Arrays.copyOf(isoNodeID, isoNodeID.length); - } - - /** - * Returns object of this class with specified isoNodeID. - * - * @param isoNodeID ISO system-ID - * @return object of IsIsNonPseudonode - */ - public static IsIsNonPseudonode of(final byte[] isoNodeID) { - return new IsIsNonPseudonode(isoNodeID); - } - - /** - * Returns ISO NodeID. - * - * @return ISO NodeID - */ - public byte[] getISONodeID() { - return isoNodeID; - } - - @Override - public int hashCode() { - return Arrays.hashCode(isoNodeID); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IsIsNonPseudonode) { - IsIsNonPseudonode other = (IsIsNonPseudonode) obj; - return Arrays.equals(isoNodeID, other.isoNodeID); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(isoNodeID); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IsIsNonPseudonode. - * - * @param cb ChannelBuffer - * @return object of IsIsNonPseudonode - */ - public static IsIsNonPseudonode read(ChannelBuffer cb) { - byte[] isoNodeID = new byte[LENGTH]; - cb.readBytes(isoNodeID); - return IsIsNonPseudonode.of(isoNodeID); - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - ByteBuffer value1 = ByteBuffer.wrap(this.isoNodeID); - ByteBuffer value2 = ByteBuffer.wrap(((IsIsNonPseudonode) o).isoNodeID); - return value1.compareTo(value2); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("ISONodeID", isoNodeID) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java deleted file mode 100644 index 094c4382..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types; - -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.protocol.IGPRouterID; - -import com.google.common.base.MoreObjects; - -/** - * Provides implementation of IsIsPseudonode Tlv. - */ -public class IsIsPseudonode implements IGPRouterID, BgpValueType { - public static final short TYPE = 515; - public static final short LENGTH = 7; - - private final byte[] isoNodeID; - private byte psnIdentifier; - - /** - * Constructor to initialize isoNodeID. - * - * @param isoNodeID ISO system-ID - * @param psnIdentifier PSN identifier - */ - public IsIsPseudonode(byte[] isoNodeID, byte psnIdentifier) { - this.isoNodeID = Arrays.copyOf(isoNodeID, isoNodeID.length); - this.psnIdentifier = psnIdentifier; - } - - /** - * Returns object of this class with specified values. - * - * @param isoNodeID ISO system-ID - * @param psnIdentifier PSN identifier - * @return object of IsIsPseudonode - */ - public static IsIsPseudonode of(final byte[] isoNodeID, - final byte psnIdentifier) { - return new IsIsPseudonode(isoNodeID, psnIdentifier); - } - - /** - * Returns ISO NodeID. - * - * @return ISO NodeID - */ - public byte[] getISONodeID() { - return isoNodeID; - } - - /** - * Returns PSN Identifier. - * - * @return PSN Identifier - */ - public byte getPSNIdentifier() { - return this.psnIdentifier; - } - - @Override - public int hashCode() { - return Arrays.hashCode(isoNodeID) & Objects.hash(psnIdentifier); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IsIsPseudonode) { - IsIsPseudonode other = (IsIsPseudonode) obj; - return Arrays.equals(isoNodeID, other.isoNodeID) - && Objects.equals(psnIdentifier, other.psnIdentifier); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeBytes(isoNodeID, 0, LENGTH - 1); - c.writeByte(psnIdentifier); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of IsIsPseudonode. - * - * @param cb ChannelBuffer - * @return object of IsIsPseudonode - */ - public static IsIsPseudonode read(ChannelBuffer cb) { - byte[] isoNodeID = new byte[LENGTH - 1]; - cb.readBytes(isoNodeID); - byte psnIdentifier = cb.readByte(); - return IsIsPseudonode.of(isoNodeID, psnIdentifier); - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - ByteBuffer value1 = ByteBuffer.wrap(this.isoNodeID); - ByteBuffer value2 = ByteBuffer.wrap(((IsIsPseudonode) o).isoNodeID); - if (value1.compareTo(value2) != 0) { - return value1.compareTo(value2); - } - return ((Byte) (this.psnIdentifier)).compareTo((Byte) (((IsIsPseudonode) o).psnIdentifier)); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("isoNodeID", isoNodeID) - .add("psnIdentifier", psnIdentifier) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTlv.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTlv.java deleted file mode 100644 index 0c412432..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTlv.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.bgpio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; - -import com.google.common.base.MoreObjects; - -/** - * Provides Implementation of Link Local/Remote IdentifiersTlv. - */ -public class LinkLocalRemoteIdentifiersTlv implements BgpValueType { - public static final short TYPE = 258; - private static final int LENGTH = 8; - - private final int linkLocalIdentifer; - private final int linkRemoteIdentifer; - - /** - * Constructor to initialize parameters. - * - * @param linkLocalIdentifer link local Identifer - * @param linkRemoteIdentifer link remote Identifer - */ - public LinkLocalRemoteIdentifiersTlv(int linkLocalIdentifer, int linkRemoteIdentifer) { - this.linkLocalIdentifer = linkLocalIdentifer; - this.linkRemoteIdentifer = linkRemoteIdentifer; - } - - /** - * Returns link remote Identifer. - * - * @return link remote Identifer - */ - public int getLinkRemoteIdentifier() { - return linkRemoteIdentifer; - } - - /** - * Returns link local Identifer. - * - * @return link local Identifer - */ - public int getLinkLocalIdentifier() { - return linkLocalIdentifer; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(linkLocalIdentifer, linkRemoteIdentifer); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LinkLocalRemoteIdentifiersTlv) { - LinkLocalRemoteIdentifiersTlv other = (LinkLocalRemoteIdentifiersTlv) obj; - return Objects.equals(this.linkLocalIdentifer, other.linkLocalIdentifer) - && Objects.equals(this.linkRemoteIdentifer, other.linkRemoteIdentifer); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - int iLenStartIndex = cb.writerIndex(); - cb.writeShort(TYPE); - cb.writeShort(LENGTH); - cb.writeInt(linkLocalIdentifer); - cb.writeInt(linkRemoteIdentifer); - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of LinkLocalRemoteIdentifiersTlv. - * - * @param cb channelBuffer - * @return object of LinkLocalRemoteIdentifiersTlv - */ - public static LinkLocalRemoteIdentifiersTlv read(ChannelBuffer cb) { - int linkLocalIdentifer = cb.readInt(); - int linkRemoteIdentifer = cb.readInt(); - return LinkLocalRemoteIdentifiersTlv.of(linkLocalIdentifer, linkRemoteIdentifer); - } - - /** - * Returns object of this class with specified link local identifer and link remote identifer. - * - * @param linkLocalIdentifer link local identifier - * @param linkRemoteIdentifer link remote identifier - * @return object of LinkLocalRemoteIdentifiersTlv - */ - public static LinkLocalRemoteIdentifiersTlv of(final int linkLocalIdentifer, final int linkRemoteIdentifer) { - return new LinkLocalRemoteIdentifiersTlv(linkLocalIdentifer, linkRemoteIdentifer); - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - int result = ((Integer) (this.linkLocalIdentifer)) - .compareTo((Integer) (((LinkLocalRemoteIdentifiersTlv) o).linkLocalIdentifer)); - if (result != 0) { - return result; - } - return ((Integer) (this.linkRemoteIdentifer)) - .compareTo((Integer) (((LinkLocalRemoteIdentifiersTlv) o).linkRemoteIdentifer)); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("TYPE", TYPE) - .add("LENGTH", LENGTH) - .add("linkLocalIdentifer", linkLocalIdentifer) - .add("linkRemoteIdentifer", linkRemoteIdentifer) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkStateAttributes.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkStateAttributes.java deleted file mode 100644 index cdf6ebeb..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkStateAttributes.java +++ /dev/null @@ -1,314 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types; - -import java.util.LinkedList; -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.attr.BgpAttrNodeFlagBitTlv; -import org.onosproject.bgpio.types.attr.BgpAttrNodeIsIsAreaId; -import org.onosproject.bgpio.types.attr.BgpAttrNodeMultiTopologyId; -import org.onosproject.bgpio.types.attr.BgpAttrNodeName; -import org.onosproject.bgpio.types.attr.BgpAttrOpaqueNode; -import org.onosproject.bgpio.types.attr.BgpAttrRouterIdV4; -import org.onosproject.bgpio.types.attr.BgpAttrRouterIdV6; -import org.onosproject.bgpio.types.attr.BgpLinkAttrIgpMetric; -import org.onosproject.bgpio.types.attr.BgpLinkAttrIsIsAdminstGrp; -import org.onosproject.bgpio.types.attr.BgpLinkAttrMplsProtocolMask; -import org.onosproject.bgpio.types.attr.BgpLinkAttrMaxLinkBandwidth; -import org.onosproject.bgpio.types.attr.BgpLinkAttrName; -import org.onosproject.bgpio.types.attr.BgpLinkAttrOpaqLnkAttrib; -import org.onosproject.bgpio.types.attr.BgpLinkAttrProtectionType; -import org.onosproject.bgpio.types.attr.BgpLinkAttrSrlg; -import org.onosproject.bgpio.types.attr.BgpLinkAttrTeDefaultMetric; -import org.onosproject.bgpio.types.attr.BgpLinkAttrUnRsrvdLinkBandwidth; -import org.onosproject.bgpio.types.attr.BgpPrefixAttrExtRouteTag; -import org.onosproject.bgpio.types.attr.BgpPrefixAttrIgpFlags; -import org.onosproject.bgpio.types.attr.BgpPrefixAttrMetric; -import org.onosproject.bgpio.types.attr.BgpPrefixAttrOspfFwdAddr; -import org.onosproject.bgpio.types.attr.BgpPrefixAttrOpaqueData; -import org.onosproject.bgpio.types.attr.BgpPrefixAttrRouteTag; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP Link state attribute. - */ -public class LinkStateAttributes implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(LinkStateAttributes.class); - - /* Node Attributes */ - public static final short ATTR_NODE_MT_TOPOLOGY_ID = 263; - public static final short ATTR_NODE_FLAG_BITS = 1024; - public static final short ATTR_NODE_OPAQUE_NODE = 1025; - public static final short ATTR_NODE_NAME = 1026; - public static final short ATTR_NODE_ISIS_AREA_ID = 1027; - public static final short ATTR_NODE_IPV4_LOCAL_ROUTER_ID = 1028; - public static final short ATTR_NODE_IPV6_LOCAL_ROUTER_ID = 1029; - - /* Link Attributes */ - public static final short ATTR_LINK_IPV4_REMOTE_ROUTER_ID = 1030; - public static final short ATTR_LINK_IPV6_REMOTE_ROUTER_ID = 1031; - public static final short ATTR_LINK_ADMINISTRATIVE_GRPS = 1088; - public static final short ATTR_LINK_MAX_BANDWIDTH = 1089; - public static final short ATTR_LINK_MAX_RES_BANDWIDTH = 1090; - public static final short ATTR_LINK_UNRES_BANDWIDTH = 1091; - public static final short ATTR_LINK_TE_DEFAULT_METRIC = 1092; - public static final short ATTR_LINK_PROTECTION_TYPE = 1093; - public static final short ATTR_LINK_MPLS_PROTOCOL_MASK = 1094; - public static final short ATTR_LINK_IGP_METRIC = 1095; - public static final short ATTR_LINK_SHR_RISK_GRP = 1096; - public static final short ATTR_LINK_OPAQUE_ATTR = 1097; - public static final short ATTR_LINK_NAME_ATTR = 1098; - - /* Prefix Attributes */ - public static final short ATTR_PREFIX_IGP_FLAG = 1152; - public static final short ATTR_PREFIX_ROUTE_TAG = 1153; - public static final short ATTR_PREFIX_EXTENDED_TAG = 1154; - public static final short ATTR_PREFIX_METRIC = 1155; - public static final short ATTR_PREFIX_OSPF_FWD_ADDR = 1156; - public static final short ATTR_PREFIX_OPAQUE_ATTR = 1157; - - public static final byte LINKSTATE_ATTRIB_TYPE = 50; - public static final byte TYPE_AND_LEN = 4; - private boolean isLinkStateAttribute = false; - private List linkStateAttribList; - - /** - * Constructor to reset parameters. - */ - LinkStateAttributes() { - this.linkStateAttribList = null; - } - - /** - * Constructor to initialize parameters. - * - * @param linkStateAttribList Linked list of Link, Node and Prefix TLVs - */ - LinkStateAttributes(List linkStateAttribList) { - this.linkStateAttribList = linkStateAttribList; - this.isLinkStateAttribute = true; - } - - /** - * Returns linked list of Link, Node and Prefix TLVs. - * - * @return linked list of Link, Node and Prefix TLVs - */ - public List linkStateAttributes() { - return this.linkStateAttribList; - } - - /** - * Returns if the Link state attributes are set or not. - * - * @return a boolean value to to check if the LS attributes are set or not - */ - public boolean isLinkStateAttributeSet() { - return this.isLinkStateAttribute; - } - - /** - * Reads the Link state attribute TLVs. - * - * @param cb ChannelBuffer - * @return constructor of LinkStateAttributes - * @throws BgpParseException while parsing link state attributes - */ - public static LinkStateAttributes read(ChannelBuffer cb) - throws BgpParseException { - - ChannelBuffer tempBuf = cb; - Validation parseFlags = Validation.parseAttributeHeader(cb); - int len = parseFlags.isShort() ? parseFlags.getLength() + TYPE_AND_LEN - : parseFlags.getLength() + 3; - - ChannelBuffer data = tempBuf.readBytes(len); - if (!parseFlags.getFirstBit() || parseFlags.getSecondBit() - || parseFlags.getThirdBit()) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_FLAGS_ERROR, - data); - } - - if (cb.readableBytes() < parseFlags.getLength()) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.BAD_MESSAGE_LENGTH, - parseFlags.getLength()); - } - - BgpValueType bgpLSAttrib = null; - LinkedList linkStateAttribList; - linkStateAttribList = new LinkedList(); - ChannelBuffer tempCb = cb.readBytes(parseFlags.getLength()); - while (tempCb.readableBytes() > 0) { - short tlvCodePoint = tempCb.readShort(); - switch (tlvCodePoint) { - - /********* 7 NODE ATTRIBUTES ********/ - case ATTR_NODE_MT_TOPOLOGY_ID: /* 263 Multi-Topology Identifier*/ - bgpLSAttrib = BgpAttrNodeMultiTopologyId.read(tempCb); - break; - - case ATTR_NODE_FLAG_BITS: /*Node flag bit TLV*/ - bgpLSAttrib = BgpAttrNodeFlagBitTlv.read(tempCb); - break; - - case ATTR_NODE_OPAQUE_NODE: /*Opaque Node Attribute*/ - bgpLSAttrib = BgpAttrOpaqueNode.read(tempCb); - break; - - case ATTR_NODE_NAME: /*Node Name*/ - bgpLSAttrib = BgpAttrNodeName.read(tempCb); - break; - - case ATTR_NODE_ISIS_AREA_ID: /*IS-IS Area Identifier TLV*/ - bgpLSAttrib = BgpAttrNodeIsIsAreaId.read(tempCb); - break; - - case ATTR_NODE_IPV4_LOCAL_ROUTER_ID: /*IPv4 Router-ID of Local Node*/ - bgpLSAttrib = BgpAttrRouterIdV4.read(tempCb, (short) ATTR_NODE_IPV4_LOCAL_ROUTER_ID); - break; - - case ATTR_NODE_IPV6_LOCAL_ROUTER_ID: /*IPv6 Router-ID of Local Node*/ - bgpLSAttrib = BgpAttrRouterIdV6.read(tempCb, (short) ATTR_NODE_IPV6_LOCAL_ROUTER_ID); - break; - - /********* 15 LINK ATTRIBUTES ********/ - - case ATTR_LINK_IPV4_REMOTE_ROUTER_ID: /*IPv4 Router-ID of Remote Node*/ - bgpLSAttrib = BgpAttrRouterIdV4.read(tempCb, (short) 1030); - break; - - case ATTR_LINK_IPV6_REMOTE_ROUTER_ID: /*IPv6 Router-ID of Remote Node*/ - bgpLSAttrib = BgpAttrRouterIdV6.read(tempCb, (short) 1031); - break; - - case ATTR_LINK_ADMINISTRATIVE_GRPS: /*ISIS Administrative group STLV 3*/ - bgpLSAttrib = BgpLinkAttrIsIsAdminstGrp.read(tempCb); - break; - - case ATTR_LINK_MAX_BANDWIDTH: /*Maximum link bandwidth*/ - bgpLSAttrib = BgpLinkAttrMaxLinkBandwidth.read(tempCb, - (short) 1089); - break; - - case ATTR_LINK_MAX_RES_BANDWIDTH: /* Maximum Reservable link bandwidth */ - bgpLSAttrib = BgpLinkAttrMaxLinkBandwidth.read(tempCb, - (short) 1090); - break; - - case ATTR_LINK_UNRES_BANDWIDTH: /* UnReserved link bandwidth */ - bgpLSAttrib = BgpLinkAttrUnRsrvdLinkBandwidth - .read(tempCb, (short) 1091); - break; - - case ATTR_LINK_TE_DEFAULT_METRIC: /* TE Default Metric */ - bgpLSAttrib = BgpLinkAttrTeDefaultMetric.read(tempCb); - break; - - case ATTR_LINK_PROTECTION_TYPE:/* Link Protection type */ - bgpLSAttrib = BgpLinkAttrProtectionType.read(tempCb); - break; - - case ATTR_LINK_MPLS_PROTOCOL_MASK: /* MPLS Protocol Mask */ - bgpLSAttrib = BgpLinkAttrMplsProtocolMask.read(tempCb); // 2 - break; - - case ATTR_LINK_IGP_METRIC: /* IGP Metric */ - bgpLSAttrib = BgpLinkAttrIgpMetric.read(tempCb); // 2 - break; - - case ATTR_LINK_SHR_RISK_GRP: /* Shared Risk Link Group */ - bgpLSAttrib = BgpLinkAttrSrlg.read(tempCb); // 3 - break; - - case ATTR_LINK_OPAQUE_ATTR: /* Opaque link attribute */ - bgpLSAttrib = BgpLinkAttrOpaqLnkAttrib.read(tempCb); - break; - - case ATTR_LINK_NAME_ATTR: /* Link Name attribute */ - bgpLSAttrib = BgpLinkAttrName.read(tempCb); - break; - - /********* 6 PREFIX ATTRIBUTES ********/ - - case ATTR_PREFIX_IGP_FLAG: /* IGP Flags */ - bgpLSAttrib = BgpPrefixAttrIgpFlags.read(tempCb); - break; - - case ATTR_PREFIX_ROUTE_TAG: /* Route Tag */ - bgpLSAttrib = BgpPrefixAttrRouteTag.read(tempCb); - break; - - case ATTR_PREFIX_EXTENDED_TAG: /* Extended Tag */ - bgpLSAttrib = BgpPrefixAttrExtRouteTag.read(tempCb); - break; - - case ATTR_PREFIX_METRIC: /* Prefix Metric */ - bgpLSAttrib = BgpPrefixAttrMetric.read(tempCb); - break; - - case ATTR_PREFIX_OSPF_FWD_ADDR: /* OSPF Forwarding Address */ - bgpLSAttrib = BgpPrefixAttrOspfFwdAddr.read(tempCb); - break; - - case ATTR_PREFIX_OPAQUE_ATTR: /* Opaque Prefix Attribute */ - bgpLSAttrib = BgpPrefixAttrOpaqueData.read(tempCb); - break; - - default: - throw new BgpParseException( - "The Bgp-LS Attribute is not supported : " - + tlvCodePoint); - } - - linkStateAttribList.add(bgpLSAttrib); - } - return new LinkStateAttributes(linkStateAttribList); - } - - @Override - public short getType() { - return LINKSTATE_ATTRIB_TYPE; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("linkStateAttribList", linkStateAttribList).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java deleted file mode 100644 index 36793c18..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types; - -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 com.google.common.base.MoreObjects; - -/** - * Provides implementation of LocalPref BGP Path Attribute. - */ -public class LocalPref implements BgpValueType { - public static final byte LOCAL_PREF_TYPE = 5; - public static final byte LOCAL_PREF_MAX_LEN = 4; - - private int localPref; - - /** - * Constructor to initialize LocalPref. - * - * @param localPref local preference - */ - public LocalPref(int localPref) { - this.localPref = localPref; - } - - /** - * Returns local preference value. - * - * @return local preference value - */ - public int localPref() { - return this.localPref; - } - - /** - * Reads the channel buffer and returns object of LocalPref. - * - * @param cb channelBuffer - * @return object of LocalPref - * @throws BgpParseException while parsing localPref attribute - */ - public static LocalPref read(ChannelBuffer cb) throws BgpParseException { - int localPref; - ChannelBuffer tempCb = cb.copy(); - Validation parseFlags = Validation.parseAttributeHeader(cb); - if ((parseFlags.getLength() > LOCAL_PREF_MAX_LEN) || cb.readableBytes() < parseFlags.getLength()) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - parseFlags.getLength()); - } - - 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); - } - - localPref = cb.readInt(); - return new LocalPref(localPref); - } - - @Override - public short getType() { - return LOCAL_PREF_TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(localPref); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LocalPref) { - LocalPref other = (LocalPref) obj; - return Objects.equals(localPref, other.localPref); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localPref", localPref) - .toString(); - } - - @Override - public int write(ChannelBuffer cb) { - //Not to implement as of now - return 0; - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java deleted file mode 100644 index 7f1ab53f..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types; - -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 com.google.common.base.MoreObjects; - -/** - * Provides Implementation of Med BGP Path Attribute. - */ -public class Med implements BgpValueType { - public static final byte MED_TYPE = 4; - public static final byte MED_MAX_LEN = 4; - - private int med; - - /** - * Constructor to initialize med. - * - * @param med MULTI_EXIT_DISC value - */ - public Med(int med) { - this.med = med; - } - - /** - * Returns Med value. - * - * @return Med value - */ - public int med() { - return this.med; - } - - /** - * Reads the channel buffer and returns object of Med. - * - * @param cb ChannelBuffer - * @return object of Med - * @throws BgpParseException while parsing Med path attribute - */ - public static Med read(ChannelBuffer cb) throws BgpParseException { - int med; - ChannelBuffer tempCb = cb.copy(); - Validation parseFlags = Validation.parseAttributeHeader(cb); - - if ((parseFlags.getLength() > MED_MAX_LEN) || cb.readableBytes() < parseFlags.getLength()) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - parseFlags.getLength()); - } - 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); - } - - med = cb.readInt(); - return new Med(med); - } - - @Override - public short getType() { - return MED_TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(med); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof Med) { - Med other = (Med) obj; - return Objects.equals(med, other.med); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("med", med) - .toString(); - } - - @Override - public int write(ChannelBuffer cb) { - //Not to implement as of now - return 0; - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java deleted file mode 100644 index 2e4e6599..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.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.bgpio.types; - -import java.net.InetAddress; -import java.util.LinkedList; -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -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; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/* - * Provides Implementation of MpReach Nlri BGP Path Attribute. - */ -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; - - private boolean isMpReachNlri = false; - private final List mpReachNlri; - private final int length; - private final short afi; - private final byte safi; - private final Ip4Address ipNextHop; - - /** - * Constructor to initialize parameters. - * - * @param mpReachNlri MpReach Nlri attribute - * @param afi address family identifier - * @param safi subsequent address family identifier - * @param ipNextHop nexthop IpAddress - * @param length of MpReachNlri - */ - public MpReachNlri(List mpReachNlri, short afi, byte safi, Ip4Address ipNextHop, int length) { - this.mpReachNlri = mpReachNlri; - this.isMpReachNlri = true; - this.ipNextHop = ipNextHop; - this.afi = afi; - this.safi = safi; - this.length = length; - } - - /** - * Returns whether MpReachNlri is present. - * - * @return whether MpReachNlri is present - */ - public boolean isMpReachNlriSet() { - return this.isMpReachNlri; - } - - /** - * Returns list of MpReach Nlri. - * - * @return list of MpReach Nlri - */ - public List mpReachNlri() { - return this.mpReachNlri; - } - - /** - * Returns length of MpReachNlri. - * - * @return length of MpReachNlri - */ - public int mpReachNlriLen() { - return this.length; - } - - /** - * Reads from ChannelBuffer and parses MpReachNlri. - * - * @param cb channelBuffer - * @return object of MpReachNlri - * @throws BgpParseException while parsing MpReachNlri - */ - public static MpReachNlri read(ChannelBuffer cb) throws BgpParseException { - ChannelBuffer tempBuf = cb.copy(); - Validation parseFlags = Validation.parseAttributeHeader(cb); - int len = parseFlags.isShort() ? parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_SHORT : - parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_BYTE; - ChannelBuffer data = tempBuf.readBytes(len); - - if (cb.readableBytes() < parseFlags.getLength()) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - parseFlags.getLength()); - } - if (!parseFlags.getFirstBit() && parseFlags.getSecondBit() && parseFlags.getThirdBit()) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.ATTRIBUTE_FLAGS_ERROR, data); - } - - BgpLSNlri bgpLSNlri = null; - List mpReachNlri = new LinkedList<>(); - ChannelBuffer tempCb = cb.readBytes(parseFlags.getLength()); - short afi = 0; - byte safi = 0; - Ip4Address ipNextHop = null; - while (tempCb.readableBytes() > 0) { - afi = tempCb.readShort(); - safi = tempCb.readByte(); - - //Supporting for AFI 16388 / SAFI 71 and VPN AFI 16388 / SAFI 128 - if ((afi == Constants.AFI_VALUE) && (safi == Constants.SAFI_VALUE) || (afi == Constants.AFI_VALUE) - && (safi == Constants.VPN_SAFI_VALUE)) { - byte nextHopLen = tempCb.readByte(); - InetAddress ipAddress = Validation.toInetAddress(nextHopLen, tempCb); - if (ipAddress.isMulticastAddress()) { - throw new BgpParseException("Multicast not supported"); - } - ipNextHop = Ip4Address.valueOf(ipAddress); - byte reserved = tempCb.readByte(); - - while (tempCb.readableBytes() > 0) { - short nlriType = tempCb.readShort(); - short totNlriLen = tempCb.readShort(); - if (tempCb.readableBytes() < totNlriLen) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, totNlriLen); - } - tempBuf = tempCb.readBytes(totNlriLen); - switch (nlriType) { - case BgpNodeLSNlriVer4.NODE_NLRITYPE: - bgpLSNlri = BgpNodeLSNlriVer4.read(tempBuf, afi, safi); - break; - case BgpLinkLsNlriVer4.LINK_NLRITYPE: - bgpLSNlri = BgpLinkLsNlriVer4.read(tempBuf, afi, safi); - break; - case BgpPrefixIPv4LSNlriVer4.PREFIX_IPV4_NLRITYPE: - bgpLSNlri = BgpPrefixIPv4LSNlriVer4.read(tempBuf, afi, safi); - break; - default: - log.debug("nlriType not supported" + nlriType); - } - mpReachNlri.add(bgpLSNlri); - } - } else { - throw new BgpParseException("Not Supporting afi " + afi + "safi " + safi); - } - } - return new MpReachNlri(mpReachNlri, afi, safi, ipNextHop, parseFlags.getLength()); - } - - @Override - public short getType() { - return MPREACHNLRI_TYPE; - } - - /** - * Returns AFI. - * - * @return AFI - */ - public short afi() { - return this.afi; - } - - /** - * Returns Nexthop IpAddress. - * - * @return Nexthop IpAddress - */ - public Ip4Address nexthop4() { - return this.ipNextHop; - } - - /** - * Returns SAFI. - * - * @return SAFI - */ - public byte safi() { - return this.safi; - } - - @Override - public int write(ChannelBuffer cb) { - //Not to be Implemented as of now - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("mpReachNlri", mpReachNlri) - .add("afi", afi) - .add("safi", safi) - .add("ipNextHop", ipNextHop) - .add("length", length) - .toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java deleted file mode 100644 index f354b3ea..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.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.bgpio.types; - -import java.util.LinkedList; -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -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; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Implementation of MpUnReach Nlri BGP Path Attribute. - */ -public class MpUnReachNlri implements BgpValueType { - - 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; - private final List mpUnReachNlri; - private final int length; - - /** - * Constructor to initialize parameters. - * - * @param mpUnReachNlri MpUnReach Nlri attribute - * @param afi address family identifier - * @param safi subsequent address family identifier - * @param length of MpUnReachNlri - */ - public MpUnReachNlri(List mpUnReachNlri, short afi, byte safi, - int length) { - this.mpUnReachNlri = mpUnReachNlri; - this.isMpUnReachNlri = true; - this.afi = afi; - this.safi = safi; - this.length = length; - } - - /** - * Reads from ChannelBuffer and parses MpUnReachNlri. - * - * @param cb ChannelBuffer - * @return object of MpUnReachNlri - * @throws BgpParseException while parsing MpUnReachNlri - */ - public static MpUnReachNlri read(ChannelBuffer cb) throws BgpParseException { - ChannelBuffer tempBuf = cb.copy(); - Validation parseFlags = Validation.parseAttributeHeader(cb); - int len = parseFlags.isShort() ? parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_SHORT - : parseFlags.getLength() + Constants.TYPE_AND_LEN_AS_BYTE; - ChannelBuffer data = tempBuf.readBytes(len); - - if (!parseFlags.getFirstBit() && parseFlags.getSecondBit() - && parseFlags.getThirdBit()) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_FLAGS_ERROR, data); - } - - if (cb.readableBytes() < parseFlags.getLength()) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, parseFlags.getLength()); - } - - LinkedList mpUnReachNlri = new LinkedList<>(); - BgpLSNlri bgpLSNlri = null; - short afi = 0; - byte safi = 0; - ChannelBuffer tempCb = cb.readBytes(parseFlags.getLength()); - while (tempCb.readableBytes() > 0) { - afi = tempCb.readShort(); - safi = tempCb.readByte(); - - //Supporting only for AFI 16388 / SAFI 71 - if ((afi == Constants.AFI_VALUE) && (safi == Constants.SAFI_VALUE) - || (afi == Constants.AFI_VALUE) && (safi == Constants.VPN_SAFI_VALUE)) { - while (tempCb.readableBytes() > 0) { - short nlriType = tempCb.readShort(); - short totNlriLen = tempCb.readShort(); - if (tempCb.readableBytes() < totNlriLen) { - Validation.validateLen( - BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, totNlriLen); - } - tempBuf = tempCb.readBytes(totNlriLen); - switch (nlriType) { - case BgpNodeLSNlriVer4.NODE_NLRITYPE: - bgpLSNlri = BgpNodeLSNlriVer4.read(tempBuf, afi, safi); - break; - case BgpLinkLsNlriVer4.LINK_NLRITYPE: - bgpLSNlri = BgpLinkLsNlriVer4.read(tempBuf, afi, safi); - break; - case BgpPrefixIPv4LSNlriVer4.PREFIX_IPV4_NLRITYPE: - bgpLSNlri = BgpPrefixIPv4LSNlriVer4.read(tempBuf, afi, - safi); - break; - default: - log.debug("nlriType not supported" + nlriType); - } - mpUnReachNlri.add(bgpLSNlri); - } - } else { - //TODO: check with the values got from capability - throw new BgpParseException("Not Supporting afi " + afi - + "safi " + safi); - } - } - return new MpUnReachNlri(mpUnReachNlri, afi, safi, - parseFlags.getLength()); - } - - @Override - public short getType() { - return MPUNREACHNLRI_TYPE; - } - - /** - * Returns SAFI. - * - * @return SAFI - */ - public byte safi() { - return this.safi; - } - - /** - * Returns AFI. - * - * @return AFI - */ - public short afi() { - return this.afi; - } - - /** - * Returns list of MpUnReach Nlri. - * - * @return list of MpUnReach Nlri - */ - public List mpUnReachNlri() { - return this.mpUnReachNlri; - } - - /** - * Returns whether MpReachNlri is present. - * - * @return whether MpReachNlri is present - */ - public boolean isMpUnReachNlriSet() { - return this.isMpUnReachNlri; - } - - /** - * Returns length of MpUnReach. - * - * @return length of MpUnReach - */ - public int mpUnReachNlriLen() { - return this.length; - } - - @Override - public int write(ChannelBuffer cb) { - //Not to be Implemented as of now - return 0; - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("mpReachNlri", mpUnReachNlri) - .add("afi", afi) - .add("safi", safi) - .add("length", length) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MultiProtocolExtnCapabilityTlv.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MultiProtocolExtnCapabilityTlv.java deleted file mode 100644 index 7082483e..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MultiProtocolExtnCapabilityTlv.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.bgpio.types; - -import java.util.Objects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides MultiProtocolExtnCapabilityTlv. - */ -public class MultiProtocolExtnCapabilityTlv implements BgpValueType { - - /* - 0 7 15 23 31 - +-------+-------+-------+-------+ - | AFI | Res | SAFI | - +-------+-------+-------+-------+ - - Multiprotocol Extensions CAPABILITY TLV format - REFERENCE : RFC 4760 - */ - protected static final Logger log = LoggerFactory - .getLogger(MultiProtocolExtnCapabilityTlv.class); - - public static final byte TYPE = 1; - public static final byte LENGTH = 4; - - private final short afi; - private final byte res; - private final byte safi; - - /** - * Constructor to initialize variables. - * @param afi Address Family Identifiers - * @param res reserved field - * @param safi Subsequent Address Family Identifier - */ - public MultiProtocolExtnCapabilityTlv(short afi, byte res, byte safi) { - this.afi = afi; - this.res = res; - this.safi = safi; - } - - /** - * Returns object of MultiProtocolExtnCapabilityTlv. - * @param afi Address Family Identifiers - * @param res reserved field - * @param safi Subsequent Address Family Identifier - * @return object of MultiProtocolExtnCapabilityTlv - */ - public static MultiProtocolExtnCapabilityTlv of(short afi, byte res, - byte safi) { - return new MultiProtocolExtnCapabilityTlv(afi, res, safi); - } - - /** - * Returns afi Address Family Identifiers value. - * @return afi Address Family Identifiers value - */ - public short getAFI() { - return afi; - } - - /** - * Returns res reserved field value. - * @return res reserved field value - */ - public byte getRes() { - return res; - } - - /** - * Returns safi Subsequent Address Family Identifier value. - * @return safi Subsequent Address Family Identifier value - */ - public byte getSAFI() { - return safi; - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int hashCode() { - return Objects.hash(afi, res, safi); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MultiProtocolExtnCapabilityTlv) { - MultiProtocolExtnCapabilityTlv other = (MultiProtocolExtnCapabilityTlv) obj; - return Objects.equals(this.afi, other.afi) - && Objects.equals(this.res, other.res) - && Objects.equals(this.safi, other.safi); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - int iLenStartIndex = cb.writerIndex(); - cb.writeByte(TYPE); - cb.writeByte(LENGTH); - - // write afi - cb.writeShort(afi); - - // write res - cb.writeByte(res); - - // write safi - cb.writeByte(safi); - - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Reads from channel buffer and returns object of MultiprotocolCapabilityTlv. - * @param cb of type channel buffer - * @return object of MultiProtocolExtnCapabilityTlv - */ - public static BgpValueType read(ChannelBuffer cb) { - short afi = cb.readShort(); - byte res = cb.readByte(); - byte safi = cb.readByte(); - return new MultiProtocolExtnCapabilityTlv(afi, res, safi); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("AFI", afi) - .add("Reserved", res) - .add("SAFI", safi).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java deleted file mode 100644 index 806efe52..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.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.bgpio.types; - -import java.net.InetAddress; -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 com.google.common.base.MoreObjects; -import com.google.common.base.Preconditions; - -/** - * Implementation of NextHop BGP Path Attribute. - */ -public class NextHop implements BgpValueType { - public static final byte NEXTHOP_TYPE = 3; - - private boolean isNextHop = false; - private Ip4Address nextHop; - - /** - * Constructor to initialize parameters. - * - * @param nextHop nextHop address - */ - public NextHop(Ip4Address nextHop) { - this.nextHop = Preconditions.checkNotNull(nextHop); - this.isNextHop = true; - } - - /** - * Returns whether next hop is present. - * - * @return whether next hop is present - */ - public boolean isNextHopSet() { - return this.isNextHop; - } - - /** - * Reads from ChannelBuffer and parses NextHop. - * - * @param cb ChannelBuffer - * @return object of NextHop - * @throws BgpParseException while parsing nexthop attribute - */ - public static NextHop read(ChannelBuffer cb) throws BgpParseException { - Ip4Address nextHop; - ChannelBuffer tempCb = cb.copy(); - Validation parseFlags = Validation.parseAttributeHeader(cb); - - if (cb.readableBytes() < parseFlags.getLength()) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - parseFlags.getLength()); - } - 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); - } - - InetAddress ipAddress = Validation.toInetAddress(parseFlags.getLength(), cb); - if (ipAddress.isMulticastAddress()) { - throw new BgpParseException("Multicast address is not supported"); - } - - nextHop = Ip4Address.valueOf(ipAddress); - return new NextHop(nextHop); - } - - /** - * Return nexthop address. - * - * @return nexthop address - */ - public Ip4Address nextHop() { - return nextHop; - } - - @Override - public short getType() { - return NEXTHOP_TYPE; - } - - @Override - public int write(ChannelBuffer cb) { - //Not required to be implemented now - return 0; - } - - @Override - public int hashCode() { - return Objects.hash(nextHop); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NextHop) { - NextHop other = (NextHop) obj; - return Objects.equals(nextHop, other.nextHop); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("nextHop", nextHop) - .toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFNonPseudonode.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFNonPseudonode.java deleted file mode 100644 index d281a4ef..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFNonPseudonode.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.bgpio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.protocol.IGPRouterID; - -import com.google.common.base.MoreObjects; - -/** - * Provides implementation of OSPFNonPseudonode Tlv. - */ -public class OSPFNonPseudonode implements IGPRouterID, BgpValueType { - public static final short TYPE = 515; - public static final short LENGTH = 4; - - private final int routerID; - - /** - * Constructor to initialize routerID. - * - * @param routerID routerID - */ - public OSPFNonPseudonode(int routerID) { - this.routerID = routerID; - } - - /** - * Returns object of this class with specified routerID. - * - * @param routerID routerID - * @return object of OSPFNonPseudonode - */ - public static OSPFNonPseudonode of(final int routerID) { - return new OSPFNonPseudonode(routerID); - } - - /** - * Returns RouterID. - * - * @return RouterID - */ - public int getrouterID() { - return this.routerID; - } - - @Override - public int hashCode() { - return Objects.hash(routerID); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof OSPFNonPseudonode) { - OSPFNonPseudonode other = (OSPFNonPseudonode) obj; - return Objects.equals(routerID, other.routerID); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(routerID); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of OSPFNonPseudonode. - * - * @param cb ChannelBuffer - * @return object of OSPFNonPseudonode - */ - public static OSPFNonPseudonode read(ChannelBuffer cb) { - return OSPFNonPseudonode.of(cb.readInt()); - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - return ((Integer) (this.routerID)).compareTo((Integer) (((OSPFNonPseudonode) o).routerID)); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("RouterID", routerID) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFPseudonode.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFPseudonode.java deleted file mode 100644 index 0d17651a..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFPseudonode.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.bgpio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.bgpio.protocol.IGPRouterID; - -import com.google.common.base.MoreObjects; - -/** - * Provides implementation of OSPFPseudonode Tlv. - */ -public class OSPFPseudonode implements IGPRouterID, BgpValueType { - public static final short TYPE = 515; - public static final short LENGTH = 8; - - private final int routerID; - private final Ip4Address drInterface; - - /** - * Constructor to initialize parameters. - * - * @param routerID routerID - * @param drInterface IPv4 address of the DR's interface - */ - public OSPFPseudonode(int routerID, Ip4Address drInterface) { - this.routerID = routerID; - this.drInterface = drInterface; - } - - /** - * Returns object of this class with specified values. - * - * @param routerID routerID - * @param drInterface IPv4 address of the DR's interface - * @return object of OSPFPseudonode - */ - public static OSPFPseudonode of(final int routerID, final Ip4Address drInterface) { - return new OSPFPseudonode(routerID, drInterface); - } - - /** - * Returns RouterID. - * - * @return RouterID - */ - public int getrouterID() { - return this.routerID; - } - - @Override - public int hashCode() { - return Objects.hash(routerID, drInterface); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OSPFPseudonode) { - OSPFPseudonode other = (OSPFPseudonode) obj; - return Objects.equals(routerID, other.routerID) && Objects.equals(drInterface, other.drInterface); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeInt(routerID); - c.writeInt(drInterface.toInt()); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads the channel buffer and returns object of OSPFPseudonode. - * - * @param cb ChannelBuffer - * @return object of OSPFPseudonode - */ - public static OSPFPseudonode read(ChannelBuffer cb) { - int routerID = cb.readInt(); - Ip4Address drInterface = Ip4Address.valueOf(cb.readInt()); - return OSPFPseudonode.of(routerID, drInterface); - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - int result = ((Integer) (this.routerID)).compareTo((Integer) (((OSPFPseudonode) o).routerID)); - if (result != 0) { - return this.drInterface.compareTo(((OSPFPseudonode) o).drInterface); - } - return result; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("RouterID", routerID) - .add("DRInterface", drInterface) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFRouteTypeTlv.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFRouteTypeTlv.java deleted file mode 100644 index be321c95..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFRouteTypeTlv.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.bgpio.types; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; - -import com.google.common.base.MoreObjects; - -/** - * Provides OSPF Route Type Tlv which contains route type. - */ -public class OSPFRouteTypeTlv implements BgpValueType { - - /* Reference :draft-ietf-idr-ls-distribution-11 - 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 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Route Type | - +-+-+-+-+-+-+-+-+ - - Figure : OSPF Route Type TLV Format - */ - - public static final short TYPE = 264; - public static final short LENGTH = 1; - public static final int INTRA_AREA_TYPE = 1; - public static final short INTER_AREA_TYPE = 2; - public static final short EXTERNAL_TYPE_1 = 3; - public static final short EXTERNAL_TYPE_2 = 4; - public static final short NSSA_TYPE_1 = 5; - public static final short NSSA_TYPE_2 = 6; - - private final byte routeType; - - /** - * Enum for Route Type. - */ - public enum RouteType { - Intra_Area(1), Inter_Area(2), External_1(3), External_2(4), NSSA_1(5), NSSA_2(6); - int value; - RouteType(int val) { - value = val; - } - public byte getType() { - return (byte) value; - } - } - - /** - * Constructor to initialize routeType. - * - * @param routeType Route type - */ - public OSPFRouteTypeTlv(byte routeType) { - this.routeType = routeType; - } - - /** - * Returns object of this class with specified routeType. - * - * @param routeType Route type - * @return object of OSPFRouteTypeTlv - */ - public static OSPFRouteTypeTlv of(final byte routeType) { - return new OSPFRouteTypeTlv(routeType); - } - - /** - * Returns RouteType. - * - * @return RouteType - * @throws BgpParseException if routeType is not matched - */ - public RouteType getValue() throws BgpParseException { - switch (routeType) { - case INTRA_AREA_TYPE: - return RouteType.Intra_Area; - case INTER_AREA_TYPE: - return RouteType.Inter_Area; - case EXTERNAL_TYPE_1: - return RouteType.External_1; - case EXTERNAL_TYPE_2: - return RouteType.External_2; - case NSSA_TYPE_1: - return RouteType.NSSA_1; - case NSSA_TYPE_2: - return RouteType.NSSA_2; - default: - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, (byte) 0, null); - } - } - - @Override - public int hashCode() { - return Objects.hash(routeType); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OSPFRouteTypeTlv) { - OSPFRouteTypeTlv other = (OSPFRouteTypeTlv) obj; - return Objects.equals(routeType, other.routeType); - } - return false; - } - - @Override - public int write(ChannelBuffer c) { - int iLenStartIndex = c.writerIndex(); - c.writeShort(TYPE); - c.writeShort(LENGTH); - c.writeByte(routeType); - return c.writerIndex() - iLenStartIndex; - } - - /** - * Reads from ChannelBuffer and parses OSPFRouteTypeTlv. - * - * @param cb channelBuffer - * @return object of OSPFRouteTypeTlv - */ - public static OSPFRouteTypeTlv read(ChannelBuffer cb) { - return OSPFRouteTypeTlv.of(cb.readByte()); - } - - @Override - public short getType() { - return TYPE; - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - return ((Byte) (this.routeType)).compareTo((Byte) (((OSPFRouteTypeTlv) o).routeType)); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("Type", TYPE) - .add("Length", LENGTH) - .add("Value", routeType) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java deleted file mode 100644 index d642d83c..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.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.bgpio.types; - -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 com.google.common.base.MoreObjects; - -/** - * Provides Implementation of mandatory BGP Origin path attribute. - */ -public class Origin implements BgpValueType { - - /** - * Enum to provide ORIGIN types. - */ - public enum ORIGINTYPE { - IGP(0), EGP(1), INCOMPLETE(2); - int value; - /** - * Assign val with the value as the ORIGIN type. - * - * @param val ORIGIN type - */ - ORIGINTYPE(int val) { - value = val; - } - - /** - * Returns value of ORIGIN type. - * - * @return ORIGIN type - */ - public byte getType() { - return (byte) value; - } - } - - public static final byte ORIGIN_TYPE = 1; - public static final byte ORIGIN_VALUE_LEN = 1; - - private boolean isOrigin = false; - private byte origin; - - /** - * Constructor to initialize parameters. - * - * @param origin origin value - */ - public Origin(byte origin) { - this.origin = origin; - this.isOrigin = true; - } - - /** - * Returns true if origin attribute is present otherwise false. - * - * @return whether origin is present or not - */ - public boolean isOriginSet() { - return this.isOrigin; - } - - /** - * Returns type of Origin in Enum values. - * - * @return type of Origin in Enum values - */ - public ORIGINTYPE origin() { - if (this.origin == 0) { - return ORIGINTYPE.IGP; - } else if (this.origin == 1) { - return ORIGINTYPE.EGP; - } else { - return ORIGINTYPE.INCOMPLETE; - } - } - - /** - * Reads from ChannelBuffer and parses Origin. - * - * @param cb ChannelBuffer - * @return object of Origin - * @throws BgpParseException while parsing Origin path attribute - */ - public static Origin read(ChannelBuffer cb) throws BgpParseException { - ChannelBuffer tempCb = cb.copy(); - Validation parseFlags = Validation.parseAttributeHeader(cb); - - 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, - parseFlags.getLength()); - } - if (parseFlags.getFirstBit() && !parseFlags.getSecondBit() && parseFlags.getThirdBit()) { - throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.ATTRIBUTE_FLAGS_ERROR, data); - } - - byte originValue; - originValue = cb.readByte(); - 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); - } - return new Origin(originValue); - } - - @Override - public short getType() { - return ORIGIN_TYPE; - } - - @Override - public int write(ChannelBuffer cb) { - //Not required to Implement as of now - return 0; - } - - @Override - public int hashCode() { - return Objects.hash(origin); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof Origin) { - Origin other = (Origin) obj; - return Objects.equals(origin, other.origin); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("origin", origin) - .toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/RouteDistinguisher.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/RouteDistinguisher.java deleted file mode 100644 index 37632ad8..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/RouteDistinguisher.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.bgpio.types; - -import org.jboss.netty.buffer.ChannelBuffer; - -import com.google.common.base.MoreObjects; - -/** - * Implementation of RouteDistinguisher. - */ -public class RouteDistinguisher implements Comparable { - - private long routeDistinguisher; - - /** - * Resets fields. - */ - public RouteDistinguisher() { - this.routeDistinguisher = 0; - } - - /** - * Constructor to initialize parameters. - * - * @param routeDistinguisher route distinguisher - */ - public RouteDistinguisher(long routeDistinguisher) { - this.routeDistinguisher = routeDistinguisher; - } - - /** - * Reads route distinguisher from channelBuffer. - * - * @param cb channelBuffer - * @return object of RouteDistinguisher - */ - public static RouteDistinguisher read(ChannelBuffer cb) { - return new RouteDistinguisher(cb.readLong()); - } - - /** - * Returns route distinguisher. - * - * @return route distinguisher - */ - public long getRouteDistinguisher() { - return this.routeDistinguisher; - } - - @Override - public int compareTo(RouteDistinguisher rd) { - if (this.equals(rd)) { - return 0; - } - return ((Long) (this.getRouteDistinguisher())).compareTo((Long) (rd.getRouteDistinguisher())); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("routeDistinguisher", routeDistinguisher) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlv.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlv.java deleted file mode 100755 index e0fef7c8..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlv.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.bgpio.types.attr; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP attribute node flag. - */ -public final class BgpAttrNodeFlagBitTlv implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpAttrNodeFlagBitTlv.class); - - public static final int ATTRNODE_FLAGBIT = 1024; - - /* Node flag bit TLV */ - private final boolean bOverloadBit; - private final boolean bAttachedBit; - private final boolean bExternalBit; - private final boolean bAbrBit; - - public static final byte FIRST_BIT = (byte) 0x80; - public static final byte SECOND_BIT = 0x40; - public static final byte THIRD_BIT = 0x20; - public static final byte FOURTH_BIT = 0x01; - - /** - * Constructor to initialize parameters. - * - * @param bOverloadBit Overload bit - * @param bAttachedBit Attached bit - * @param bExternalBit External bit - * @param bAbrBit ABR Bit - */ - private BgpAttrNodeFlagBitTlv(boolean bOverloadBit, boolean bAttachedBit, - boolean bExternalBit, boolean bAbrBit) { - this.bOverloadBit = bOverloadBit; - this.bAttachedBit = bAttachedBit; - this.bExternalBit = bExternalBit; - this.bAbrBit = bAbrBit; - } - - /** - * Returns object of this class with specified values. - * - * @param bOverloadBit Overload bit - * @param bAttachedBit Attached bit - * @param bExternalBit External bit - * @param bAbrBit ABR Bit - * @return object of BgpAttrNodeFlagBitTlv - */ - public static BgpAttrNodeFlagBitTlv of(final boolean bOverloadBit, - final boolean bAttachedBit, - final boolean bExternalBit, - final boolean bAbrBit) { - return new BgpAttrNodeFlagBitTlv(bOverloadBit, bAttachedBit, - bExternalBit, bAbrBit); - } - - /** - * Reads the Node Flag Bits. - * - * @param cb ChannelBuffer - * @return attribute node flag bit tlv - * @throws BgpParseException while parsing BgpAttrNodeFlagBitTlv - */ - public static BgpAttrNodeFlagBitTlv read(ChannelBuffer cb) - throws BgpParseException { - boolean bOverloadBit = false; - boolean bAttachedBit = false; - boolean bExternalBit = false; - boolean bAbrBit = false; - - short lsAttrLength = cb.readShort(); - - if ((lsAttrLength != 1) || (cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - byte nodeFlagBits = cb.readByte(); - - bOverloadBit = ((nodeFlagBits & FIRST_BIT) == FIRST_BIT); - bAttachedBit = ((nodeFlagBits & SECOND_BIT) == SECOND_BIT); - bExternalBit = ((nodeFlagBits & THIRD_BIT) == THIRD_BIT); - bAbrBit = ((nodeFlagBits & FOURTH_BIT) == FOURTH_BIT); - - return BgpAttrNodeFlagBitTlv.of(bOverloadBit, bAttachedBit, - bExternalBit, bAbrBit); - } - - /** - * Returns Overload Bit. - * - * @return Overload Bit - */ - public boolean overLoadBit() { - return bOverloadBit; - } - - /** - * Returns Attached Bit. - * - * @return Attached Bit - */ - public boolean attachedBit() { - return bAttachedBit; - } - - /** - * Returns External Bit. - * - * @return External Bit - */ - public boolean externalBit() { - return bExternalBit; - } - - /** - * Returns ABR Bit. - * - * @return ABR Bit - */ - public boolean abrBit() { - return bAbrBit; - } - - @Override - public short getType() { - return ATTRNODE_FLAGBIT; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public int hashCode() { - return Objects.hash(bOverloadBit, bAttachedBit, bExternalBit, bAbrBit); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpAttrNodeFlagBitTlv) { - BgpAttrNodeFlagBitTlv other = (BgpAttrNodeFlagBitTlv) obj; - return Objects.equals(bOverloadBit, other.bOverloadBit) - && Objects.equals(bAttachedBit, other.bAttachedBit) - && Objects.equals(bExternalBit, other.bExternalBit) - && Objects.equals(bAbrBit, other.bAbrBit); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("bOverloadBit", bOverloadBit) - .add("bAttachedBit", bAttachedBit) - .add("bExternalBit", bExternalBit).add("bAbrBit", bAbrBit) - .toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeIsIsAreaId.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeIsIsAreaId.java deleted file mode 100644 index 0435a65f..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeIsIsAreaId.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.bgpio.types.attr; - -import java.util.Arrays; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP attribute ISIS Area Identifier. - */ -public class BgpAttrNodeIsIsAreaId implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpAttrNodeIsIsAreaId.class); - - public static final int ATTRNODE_ISISAREAID = 1027; - - /* IS-IS Area Identifier TLV */ - private byte[] isisAreaId; - - /** - * Constructor to initialize value. - * - * @param isisAreaId ISIS area Identifier - */ - public BgpAttrNodeIsIsAreaId(byte[] isisAreaId) { - this.isisAreaId = Arrays.copyOf(isisAreaId, isisAreaId.length); - } - - /** - * Returns object of this class with specified values. - * - * @param isisAreaId ISIS area Identifier - * @return object of BgpAttrNodeIsIsAreaId - */ - public static BgpAttrNodeIsIsAreaId of(final byte[] isisAreaId) { - return new BgpAttrNodeIsIsAreaId(isisAreaId); - } - - /** - * Reads the IS-IS Area Identifier. - * - * @param cb ChannelBuffer - * @return object of BgpAttrNodeIsIsAreaId - * @throws BgpParseException while parsing BgpAttrNodeIsIsAreaId - */ - public static BgpAttrNodeIsIsAreaId read(ChannelBuffer cb) - throws BgpParseException { - byte[] isisAreaId; - - short lsAttrLength = cb.readShort(); - - if (cb.readableBytes() < lsAttrLength) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - isisAreaId = new byte[lsAttrLength]; - cb.readBytes(isisAreaId); - - return BgpAttrNodeIsIsAreaId.of(isisAreaId); - } - - /** - * Returns ISIS area Identifier. - * - * @return Area ID - */ - public byte[] attrNodeIsIsAreaId() { - return isisAreaId; - } - - @Override - public short getType() { - return ATTRNODE_ISISAREAID; - } - - @Override - public int hashCode() { - return Arrays.hashCode(isisAreaId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpAttrNodeIsIsAreaId) { - BgpAttrNodeIsIsAreaId other = (BgpAttrNodeIsIsAreaId) obj; - return Arrays.equals(isisAreaId, other.isisAreaId); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("isisAreaId", isisAreaId).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java deleted file mode 100644 index 31d855db..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.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.bgpio.types.attr; - -import java.util.ArrayList; -import java.util.List; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * BGP Multi-Topology ID of the LS attribute. - */ -public class BgpAttrNodeMultiTopologyId implements BgpValueType { - - private static final Logger log = LoggerFactory - .getLogger(BgpAttrNodeMultiTopologyId.class); - - public static final int ATTRNODE_MULTITOPOLOGY = 263; - - /* Opaque Node Attribute */ - private List multiTopologyId = new ArrayList(); - - /** - * Constructor to initialize the Node attribute multi-topology ID. - * - * @param multiTopologyId multi-topology ID - */ - public BgpAttrNodeMultiTopologyId(List 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 multiTopologyId) { - return new BgpAttrNodeMultiTopologyId(multiTopologyId); - } - - /** - * Reads the Multi-topology ID of Node attribute. - * - * @param cb ChannelBuffer - * @return Constructor of BgpAttrNodeMultiTopologyId - * @throws BgpParseException while parsing BgpAttrNodeMultiTopologyId - */ - public static BgpAttrNodeMultiTopologyId read(ChannelBuffer cb) - throws BgpParseException { - ArrayList multiTopologyId = new ArrayList(); - 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, - lsAttrLength); - } - - for (int i = 0; i < len; i++) { - tempMultiTopologyId = cb.readShort(); - multiTopologyId.add(new Short(tempMultiTopologyId)); - } - - return new BgpAttrNodeMultiTopologyId(multiTopologyId); - } - - /** - * to get the multi-topology ID. - * - * @return multitopology ID - */ - public List attrMultiTopologyId() { - return multiTopologyId; - } - - @Override - public short getType() { - return ATTRNODE_MULTITOPOLOGY; - } - - @Override - public int hashCode() { - return Objects.hash(multiTopologyId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpAttrNodeMultiTopologyId) { - BgpAttrNodeMultiTopologyId other = (BgpAttrNodeMultiTopologyId) obj; - return Objects.equals(multiTopologyId, other.multiTopologyId); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("multiTopologyId", multiTopologyId) - .toString(); - } - - @Override - public int compareTo(Object o) { - if (this.equals(o)) { - return 0; - } - int countOtherSubTlv = ((BgpAttrNodeMultiTopologyId) o).multiTopologyId.size(); - int countObjSubTlv = multiTopologyId.size(); - if (countOtherSubTlv != countObjSubTlv) { - if (countOtherSubTlv > countObjSubTlv) { - return 1; - } else { - return -1; - } - } - ListIterator listIterator = multiTopologyId.listIterator(); - ListIterator listIteratorOther = ((BgpAttrNodeMultiTopologyId) o).multiTopologyId.listIterator(); - while (listIterator.hasNext()) { - short id = listIterator.next(); - short id1 = listIteratorOther.next(); - if (((Short) id).compareTo((Short) id1) != 0) { - return ((Short) id).compareTo((Short) id1); - } - } - return 0; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeName.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeName.java deleted file mode 100644 index 2e1c7a05..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeName.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.bgpio.types.attr; - -import java.util.Arrays; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP attribute node name. - */ -public class BgpAttrNodeName implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpAttrNodeName.class); - - public static final int ATTRNODE_NAME = 1026; - - /* Node Name */ - private byte[] nodeName; - - /** - * Constructor to initialize value. - * - * @param nodeName node name - */ - public BgpAttrNodeName(byte[] nodeName) { - this.nodeName = Arrays.copyOf(nodeName, nodeName.length); - } - - /** - * Returns object of this class with specified values. - * - * @param nodeName node name - * @return object of BgpAttrNodeName - */ - public static BgpAttrNodeName of(final byte[] nodeName) { - return new BgpAttrNodeName(nodeName); - } - - /** - * Reads the LS attribute node name. - * - * @param cb ChannelBuffer - * @return object of BgpAttrNodeName - * @throws BgpParseException while parsing BgpAttrNodeName - */ - public static BgpAttrNodeName read(ChannelBuffer cb) - throws BgpParseException { - byte[] nodeName; - - short lsAttrLength = cb.readShort(); - - if (cb.readableBytes() < lsAttrLength) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - nodeName = new byte[lsAttrLength]; - cb.readBytes(nodeName); - return BgpAttrNodeName.of(nodeName); - } - - /** - * Returns LS attribute node name. - * - * @return node name - */ - public byte[] attrNodeName() { - return nodeName; - } - - @Override - public short getType() { - return ATTRNODE_NAME; - } - - @Override - public int hashCode() { - return Arrays.hashCode(nodeName); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpAttrNodeName) { - BgpAttrNodeName other = (BgpAttrNodeName) obj; - return Arrays.equals(nodeName, other.nodeName); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("nodeName", nodeName).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrOpaqueNode.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrOpaqueNode.java deleted file mode 100644 index 545755a7..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrOpaqueNode.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.bgpio.types.attr; - -import java.util.Arrays; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP attribute opaque node. - */ -public class BgpAttrOpaqueNode implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpAttrOpaqueNode.class); - - public static final int ATTRNODE_OPAQUEDATA = 1025; - - /* Opaque Node Attribute */ - private byte[] opaqueNodeAttribute; - - /** - * Constructor to initialize parameter. - * - * @param opaqueNodeAttribute opaque node attribute - */ - public BgpAttrOpaqueNode(byte[] opaqueNodeAttribute) { - this.opaqueNodeAttribute = Arrays.copyOf(opaqueNodeAttribute, opaqueNodeAttribute.length); - } - - /** - * Returns object of this class with specified values. - * - * @param opaqueNodeAttribute Prefix Metric - * @return object of BgpAttrOpaqueNode - */ - public static BgpAttrOpaqueNode of(byte[] opaqueNodeAttribute) { - return new BgpAttrOpaqueNode(opaqueNodeAttribute); - } - - /** - * Reads the Opaque Node Properties. - * - * @param cb ChannelBuffer - * @return object of BgpAttrOpaqueNode - * @throws BgpParseException while parsing BgpAttrOpaqueNode - */ - public static BgpAttrOpaqueNode read(ChannelBuffer cb) - throws BgpParseException { - - byte[] opaqueNodeAttribute; - - short lsAttrLength = cb.readShort(); - - if (cb.readableBytes() < lsAttrLength) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - opaqueNodeAttribute = new byte[lsAttrLength]; - cb.readBytes(opaqueNodeAttribute); - - return BgpAttrOpaqueNode.of(opaqueNodeAttribute); - } - - /** - * Returns opaque node attribute. - * - * @return LS node attribute value - */ - public byte[] attrOpaqueNode() { - return opaqueNodeAttribute; - } - - @Override - public short getType() { - return ATTRNODE_OPAQUEDATA; - } - - @Override - public int hashCode() { - return Arrays.hashCode(opaqueNodeAttribute); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpAttrOpaqueNode) { - BgpAttrOpaqueNode other = (BgpAttrOpaqueNode) obj; - return Arrays - .equals(opaqueNodeAttribute, other.opaqueNodeAttribute); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("opaqueNodeAttribute", opaqueNodeAttribute).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV4.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV4.java deleted file mode 100644 index f3c0d17b..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV4.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.bgpio.types.attr; - -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.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP attribute node router ID. - */ -public final class BgpAttrRouterIdV4 implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpAttrRouterIdV4.class); - - private final short sType; - - /* IPv4 Router-ID of Node */ - private final Ip4Address ip4RouterId; - - /** - * Constructor to initialize the value. - * - * @param ip4RouterId IPV4 address of router - * @param sType TLV type - */ - private BgpAttrRouterIdV4(Ip4Address ip4RouterId, short sType) { - this.ip4RouterId = ip4RouterId; - this.sType = sType; - } - - /** - * Returns object of this class with specified values. - * - * @param ip4RouterId IPv4 address - * @param sType Type of this TLV - * @return object of BgpAttrRouterIdV4 - */ - public static BgpAttrRouterIdV4 of(final Ip4Address ip4RouterId, - final short sType) { - return new BgpAttrRouterIdV4(ip4RouterId, sType); - } - - /** - * Reads the IPv4 Router-ID. - * - * @param cb ChannelBuffer - * @param sType tag type - * @return object of BgpAttrRouterIdV4 - * @throws BgpParseException while parsing BgpAttrRouterIdV4 - */ - public static BgpAttrRouterIdV4 read(ChannelBuffer cb, short sType) - throws BgpParseException { - short lsAttrLength = cb.readShort(); - - if ((lsAttrLength != 4) || (cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - byte[] ipBytes = new byte[lsAttrLength]; - cb.readBytes(ipBytes, 0, lsAttrLength); - Ip4Address ip4RouterId = Ip4Address.valueOf(ipBytes); - return BgpAttrRouterIdV4.of(ip4RouterId, sType); - } - - /** - * Returns the IPV4 router ID. - * - * @return Router ID - */ - public Ip4Address attrRouterId() { - return ip4RouterId; - } - - @Override - public short getType() { - return sType; - } - - @Override - public int hashCode() { - return Objects.hash(ip4RouterId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpAttrRouterIdV4) { - BgpAttrRouterIdV4 other = (BgpAttrRouterIdV4) obj; - return Objects.equals(ip4RouterId, other.ip4RouterId); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("ip4RouterId", ip4RouterId).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6.java deleted file mode 100644 index 648fd56e..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6.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.bgpio.types.attr; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip6Address; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP attribute IPv6 router ID. - */ -public final class BgpAttrRouterIdV6 implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpAttrRouterIdV6.class); - - private final short sType; - - /* IPv4 Router-ID of Node */ - private final Ip6Address ip6RouterId; - - /** - * Constructor to initialize the value. - * - * @param ip6RouterId IPV6 address of the router ID - * @param sType TLV type - */ - private BgpAttrRouterIdV6(Ip6Address ip6RouterId, short sType) { - this.ip6RouterId = ip6RouterId; - this.sType = sType; - } - - /** - * Returns object of this class with specified values. - * - * @param ip6RouterId IPV6 address of the router ID - * @param sType TLV type - * @return object of BgpAttrRouterIdV6 - */ - public static BgpAttrRouterIdV6 of(final Ip6Address ip6RouterId, - final short sType) { - return new BgpAttrRouterIdV6(ip6RouterId, sType); - } - - /** - * Reads the IPv6 Router-ID. - * - * @param cb ChannelBuffer - * @param sType TLV type - * @return object of BgpAttrRouterIdV6 - * @throws BgpParseException while parsing BgpAttrRouterIdV6 - */ - public static BgpAttrRouterIdV6 read(ChannelBuffer cb, short sType) - throws BgpParseException { - byte[] ipBytes; - Ip6Address ip6RouterId; - - short lsAttrLength = cb.readShort(); - - if ((lsAttrLength != 16) || (cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - ipBytes = new byte[lsAttrLength]; - cb.readBytes(ipBytes); - ip6RouterId = Ip6Address.valueOf(ipBytes); - return BgpAttrRouterIdV6.of(ip6RouterId, sType); - } - - /** - * Returns IPV6 router ID. - * - * @return Router ID - */ - public Ip6Address attrRouterId() { - return ip6RouterId; - } - - @Override - public short getType() { - return sType; - } - - @Override - public int hashCode() { - return Objects.hash(ip6RouterId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpAttrRouterIdV6) { - BgpAttrRouterIdV6 other = (BgpAttrRouterIdV6) obj; - return Objects.equals(ip6RouterId, other.ip6RouterId); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("ip6RouterId", ip6RouterId).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetric.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetric.java deleted file mode 100644 index 5721cf6c..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetric.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types.attr; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP link IGP metric attribute. - */ -public class BgpLinkAttrIgpMetric implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpLinkAttrIgpMetric.class); - - public static final int ATTRLINK_IGPMETRIC = 1095; - public static final int ATTRLINK_MAX_LEN = 3; - - /* Variable metric length based on protocol */ - public static final int ISIS_SMALL_METRIC = 1; - public static final int OSPF_LINK_METRIC = 2; - public static final int ISIS_WIDE_METRIC = 3; - - /* IGP Metric */ - private final int igpMetric; - private final int igpMetricLen; - - /** - * Constructor to initialize the value. - * - * @param igpMetric 3 byte IGP metric data. - * @param igpMetricLen length of IGP metric data. - */ - public BgpLinkAttrIgpMetric(final int igpMetric, final int igpMetricLen) { - this.igpMetric = igpMetric; - this.igpMetricLen = igpMetricLen; - } - - /** - * Returns object of this class with specified values. - * - * @param igpMetric 3 byte IGP metric data. - * @param igpMetricLen length of IGP metric data. - * @return object of BgpLinkAttrIgpMetric - */ - public static BgpLinkAttrIgpMetric of(final int igpMetric, - final int igpMetricLen) { - return new BgpLinkAttrIgpMetric(igpMetric, igpMetricLen); - } - - /** - * Reads the BGP link attributes IGP Metric. - * - * @param cb Channel buffer - * @return object of type BgpLinkAttrIgpMetric - * @throws BgpParseException while parsing BgpLinkAttrIgpMetric - */ - public static BgpLinkAttrIgpMetric read(ChannelBuffer cb) - throws BgpParseException { - - short linkigp; - int igpMetric = 0; - int igpMetricLen = 0; - - short lsAttrLength = cb.readShort(); - - if (cb.readableBytes() < lsAttrLength - || lsAttrLength > ATTRLINK_MAX_LEN) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - switch (lsAttrLength) { - case ISIS_SMALL_METRIC: - igpMetric = cb.readByte(); - igpMetricLen = ISIS_SMALL_METRIC; - break; - case OSPF_LINK_METRIC: - igpMetric = cb.readShort(); - igpMetricLen = OSPF_LINK_METRIC; - break; - case ISIS_WIDE_METRIC: - linkigp = cb.readShort(); - igpMetric = cb.readByte(); - igpMetric = (igpMetric << 16) | linkigp; - igpMetricLen = ISIS_WIDE_METRIC; - break; - default: // validation is already in place - break; - } - - return BgpLinkAttrIgpMetric.of(igpMetric, igpMetricLen); - } - - /** - * Returns the variable length IGP metric data. - * - * @return IGP metric data - */ - public int attrLinkIgpMetric() { - return igpMetric; - } - - /** - * Returns IGP metric data length. - * - * @return IGP metric length - */ - public int attrLinkIgpMetricLength() { - return igpMetricLen; - } - - @Override - public short getType() { - return ATTRLINK_IGPMETRIC; - } - - @Override - public int hashCode() { - return Objects.hash(igpMetric, igpMetricLen); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpLinkAttrIgpMetric) { - BgpLinkAttrIgpMetric other = (BgpLinkAttrIgpMetric) obj; - return Objects.equals(igpMetric, other.igpMetric) - && Objects.equals(igpMetricLen, other.igpMetricLen); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("igpMetric", igpMetric).add("igpMetricLen", igpMetricLen) - .toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIsIsAdminstGrp.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIsIsAdminstGrp.java deleted file mode 100644 index 448f1e58..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIsIsAdminstGrp.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.bgpio.types.attr; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP attribute Is Is Administrative area. - */ -public final class BgpLinkAttrIsIsAdminstGrp implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpLinkAttrIsIsAdminstGrp.class); - - public static final int ATTRLINK_PROTECTIONTYPE = 1088; - public static final int ISIS_ADMIN_DATA_LEN = 4; - - /* ISIS administrative group */ - private final long isisAdminGrp; - - /** - * Constructor to initialize the values. - * - * @param isisAdminGrp ISIS protocol admin group - */ - public BgpLinkAttrIsIsAdminstGrp(long isisAdminGrp) { - this.isisAdminGrp = isisAdminGrp; - } - - /** - * Returns object of this class with specified values. - * - * @param isisAdminGrp ISIS admin group - * @return object of BgpLinkAttrIsIsAdminstGrp - */ - public static BgpLinkAttrIsIsAdminstGrp of(final long isisAdminGrp) { - return new BgpLinkAttrIsIsAdminstGrp(isisAdminGrp); - } - - /** - * Reads the BGP link attributes of ISIS administrative group area. - * - * @param cb Channel buffer - * @return object of type BgpLinkAttrIsIsAdminstGrp - * @throws BgpParseException while parsing BgpLinkAttrIsIsAdminstGrp - */ - public static BgpLinkAttrIsIsAdminstGrp read(ChannelBuffer cb) - throws BgpParseException { - long isisAdminGrp; - short lsAttrLength = cb.readShort(); - - if ((lsAttrLength != ISIS_ADMIN_DATA_LEN) - || (cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - isisAdminGrp = cb.readUnsignedInt(); - - return BgpLinkAttrIsIsAdminstGrp.of(isisAdminGrp); - } - - /** - * Link attributes of ISIS administrative group area. - * - * @return long value of the administrative group area - */ - public long linkAttrIsIsAdminGrp() { - return isisAdminGrp; - } - - @Override - public short getType() { - return ATTRLINK_PROTECTIONTYPE; - } - - @Override - public int hashCode() { - return Objects.hash(isisAdminGrp); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpLinkAttrIsIsAdminstGrp) { - BgpLinkAttrIsIsAdminstGrp other = (BgpLinkAttrIsIsAdminstGrp) obj; - return Objects.equals(isisAdminGrp, other.isisAdminGrp); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("isisAdminGrp", isisAdminGrp).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidth.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidth.java deleted file mode 100644 index 2711ca94..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidth.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.bgpio.types.attr; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP attribute Max Link bandwidth. - */ -public final class BgpLinkAttrMaxLinkBandwidth implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpLinkAttrMaxLinkBandwidth.class); - - public static final int MAX_BANDWIDTH_LEN = 4; - public static final int NO_OF_BITS = 8; - - public short type; - - /* ISIS administrative group */ - private final float maxBandwidth; - - /** - * Constructor to initialize the values. - * - * @param maxBandwidth Maximum link bandwidth. - * @param type TLV type - */ - private BgpLinkAttrMaxLinkBandwidth(float maxBandwidth, short type) { - this.maxBandwidth = maxBandwidth; - this.type = type; - } - - /** - * Returns object of this class with specified values. - * - * @param maxBandwidth Maximum link bandwidth. - * @param type TLV type - * @return object of BgpLinkAttrMaxLinkBandwidth - */ - public static BgpLinkAttrMaxLinkBandwidth of(final float maxBandwidth, - final short type) { - return new BgpLinkAttrMaxLinkBandwidth(maxBandwidth, type); - } - - /** - * Reads the BGP link attributes of Maximum link bandwidth. - * - * @param cb Channel buffer - * @param type type of this tlv - * @return object of type BgpLinkAttrMaxLinkBandwidth - * @throws BgpParseException while parsing BgpLinkAttrMaxLinkBandwidth - */ - public static BgpLinkAttrMaxLinkBandwidth read(ChannelBuffer cb, short type) - throws BgpParseException { - float maxBandwidth; - short lsAttrLength = cb.readShort(); - - if ((lsAttrLength != MAX_BANDWIDTH_LEN) - || (cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - maxBandwidth = ieeeToFloatRead(cb.readInt()) * NO_OF_BITS; - - return BgpLinkAttrMaxLinkBandwidth.of(maxBandwidth, type); - } - - /** - * Returns Maximum link bandwidth. - * - * @return Maximum link bandwidth - */ - float linkAttrMaxLinkBandwidth() { - return maxBandwidth; - } - - /** - * Parse the IEEE floating point notation and returns it in normal float. - * - * @param iVal IEEE floating point number - * @return normal float - */ - static float ieeeToFloatRead(int iVal) { - iVal = (((iVal & 0xFF) << 24) | ((iVal & 0xFF00) << 8) - | ((iVal & 0xFF0000) >> 8) | ((iVal >> 24) & 0xFF)); - - return Float.intBitsToFloat(iVal); - } - - @Override - public short getType() { - return this.type; - } - - @Override - public int hashCode() { - return Objects.hash(maxBandwidth); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpLinkAttrMaxLinkBandwidth) { - BgpLinkAttrMaxLinkBandwidth other = (BgpLinkAttrMaxLinkBandwidth) obj; - return Objects.equals(maxBandwidth, other.maxBandwidth); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("maxBandwidth", maxBandwidth).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMask.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMask.java deleted file mode 100644 index 2bf1a59d..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMask.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types.attr; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP MPLS protocol mask attribute. - */ -public class BgpLinkAttrMplsProtocolMask implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpLinkAttrMplsProtocolMask.class); - - public static final int ATTRLINK_MPLSPROTOMASK = 1094; - public static final int MASK_BYTE_LEN = 1; - - private final boolean bLdp; - private final boolean bRsvpTe; - - public static final byte FIRST_BIT = (byte) 0x80; - public static final byte SECOND_BIT = 0x40; - - /** - * Constructor to initialize the values. - * - * @param bLdp boolean value true if LDP flag is available - * @param bRsvpTe boolean value true if RSVP TE information is available - */ - public BgpLinkAttrMplsProtocolMask(boolean bLdp, boolean bRsvpTe) { - this.bLdp = bLdp; - this.bRsvpTe = bRsvpTe; - } - - /** - * Returns object of this class with specified values. - * - * @param bLdp boolean value true if LDP flag is available - * @param bRsvpTe boolean value true if RSVP TE information is available - * @return object of BgpLinkAttrMplsProtocolMask - */ - public static BgpLinkAttrMplsProtocolMask of(final boolean bLdp, - final boolean bRsvpTe) { - return new BgpLinkAttrMplsProtocolMask(bLdp, bRsvpTe); - } - - /** - * Reads the BGP link attributes MPLS protocol mask. - * - * @param cb Channel buffer - * @return object of type BgpLinkAttrMPLSProtocolMask - * @throws BgpParseException while parsing BgpLinkAttrMplsProtocolMask - */ - public static BgpLinkAttrMplsProtocolMask read(ChannelBuffer cb) - throws BgpParseException { - boolean bLdp = false; - boolean bRsvpTe = false; - - short lsAttrLength = cb.readShort(); - - if ((lsAttrLength != MASK_BYTE_LEN) - || (cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - byte flags = cb.readByte(); - - bLdp = ((flags & (byte) FIRST_BIT) == FIRST_BIT); - bRsvpTe = ((flags & (byte) SECOND_BIT) == SECOND_BIT); - - return BgpLinkAttrMplsProtocolMask.of(bLdp, bRsvpTe); - } - - /** - * Returns true if LDP bit is set. - * - * @return True if LDP information is set else false. - */ - public boolean ldpBit() { - return bLdp; - } - - /** - * Returns RSVP TE information. - * - * @return True if RSVP TE information is set else false. - */ - public boolean rsvpBit() { - return bRsvpTe; - } - - @Override - public short getType() { - return ATTRLINK_MPLSPROTOMASK; - } - - @Override - public int hashCode() { - return Objects.hash(bLdp, bRsvpTe); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpLinkAttrMplsProtocolMask) { - BgpLinkAttrMplsProtocolMask other = (BgpLinkAttrMplsProtocolMask) obj; - return Objects.equals(bLdp, other.bLdp) - && Objects.equals(bRsvpTe, other.bRsvpTe); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("bLdp", bLdp).add("bRsvpTe", bRsvpTe).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java deleted file mode 100644 index 856ffc36..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types.attr; - -import java.util.Arrays; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP link name attribute. - */ -public class BgpLinkAttrName implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpLinkAttrName.class); - - public static final int ATTRLINK_NAME = 1098; - - /* Link Name */ - private byte[] linkName; - - /** - * Constructor to initialize the values. - * - * @param linkName link name - */ - 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 - * @return object of type BgpLinkAttrName - * @throws BgpParseException while parsing BgpLinkAttrName - */ - public static BgpLinkAttrName read(ChannelBuffer cb) - throws BgpParseException { - byte[] linkName; - short lsAttrLength = cb.readShort(); - - if (cb.readableBytes() < lsAttrLength) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - linkName = new byte[lsAttrLength]; - cb.readBytes(linkName); - return BgpLinkAttrName.of(linkName); - } - - /** - * Returns the link name. - * - * @return link name - */ - public byte[] attrLinkName() { - return linkName; - } - - @Override - public short getType() { - return ATTRLINK_NAME; - } - - @Override - public int hashCode() { - return Arrays.hashCode(linkName); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpLinkAttrName) { - BgpLinkAttrName other = (BgpLinkAttrName) obj; - return Arrays.equals(linkName, other.linkName); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("linkName", linkName).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttrib.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttrib.java deleted file mode 100644 index 275b85be..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttrib.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.bgpio.types.attr; - -import java.util.Arrays; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP link opaque attribute. - */ -public final class BgpLinkAttrOpaqLnkAttrib implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpLinkAttrOpaqLnkAttrib.class); - - public static final int ATTRNODE_OPAQUELNKATTRIB = 1097; - - /* Opaque Node Attribute */ - private final byte[] opaqueLinkAttribute; - - /** - * Constructor to initialize the data. - * - * @param opaqueLinkAttribute opaque link attribute - */ - private BgpLinkAttrOpaqLnkAttrib(byte[] opaqueLinkAttribute) { - this.opaqueLinkAttribute = Arrays.copyOf(opaqueLinkAttribute, - opaqueLinkAttribute.length); - } - - /** - * Returns object of this class with specified values. - * - * @param opaqueLinkAttribute opaque link attribute - * @return object of BgpLinkAttrOpaqLnkAttrib - */ - public static BgpLinkAttrOpaqLnkAttrib of(final byte[] opaqueLinkAttribute) { - return new BgpLinkAttrOpaqLnkAttrib(opaqueLinkAttribute); - } - - /** - * Reads the BGP link attributes Opaque link attribute. - * - * @param cb Channel buffer - * @return object of type BgpLinkAttrOpaqLnkAttrib - * @throws BgpParseException while parsing BgpLinkAttrOpaqLnkAttrib - */ - public static BgpLinkAttrOpaqLnkAttrib read(ChannelBuffer cb) - throws BgpParseException { - - byte[] opaqueLinkAttribute; - - short lsAttrLength = cb.readShort(); - - if (cb.readableBytes() < lsAttrLength) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - opaqueLinkAttribute = new byte[lsAttrLength]; - cb.readBytes(opaqueLinkAttribute); - - return BgpLinkAttrOpaqLnkAttrib.of(opaqueLinkAttribute); - } - - /** - * Returns the Opaque link attribute. - * - * @return byte array of opaque link attribute. - */ - public byte[] attrOpaqueLnk() { - return opaqueLinkAttribute; - } - - @Override - public short getType() { - return ATTRNODE_OPAQUELNKATTRIB; - } - - @Override - public int hashCode() { - return Arrays.hashCode(opaqueLinkAttribute); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpLinkAttrOpaqLnkAttrib) { - BgpLinkAttrOpaqLnkAttrib other = (BgpLinkAttrOpaqLnkAttrib) obj; - return Arrays - .equals(opaqueLinkAttribute, other.opaqueLinkAttribute); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("opaqueLinkAttribute", opaqueLinkAttribute).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionType.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionType.java deleted file mode 100644 index 59011d97..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionType.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.bgpio.types.attr; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP link protection type attribute. - */ -public final class BgpLinkAttrProtectionType implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpLinkAttrProtectionType.class); - - public static final int ATTRLINK_PROTECTIONTYPE = 1093; - public static final int LINK_PROTECTION_LEN = 2; - - public static final int EXTRA_TRAFFIC = 0x01; - public static final int UNPROTECTED = 0x02; - public static final int SHARED = 0x04; - public static final int DEDICATED_ONE_ISTO_ONE = 0x08; - public static final int DEDICATED_ONE_PLUS_ONE = 0x10; - public static final int ENHANCED = 0x20; - - /* Link Protection type flags */ - private final boolean bExtraTraffic; - private final boolean bUnprotected; - private final boolean bShared; - private final boolean bDedOneIstoOne; - private final boolean bDedOnePlusOne; - private final boolean bEnhanced; - - /** - * Constructor to initialize the value. - * - * @param bExtraTraffic Extra Traffic - * @param bUnprotected Unprotected - * @param bShared Shared - * @param bDedOneIstoOne Dedicated 1:1 - * @param bDedOnePlusOne Dedicated 1+1 - * @param bEnhanced Enhanced - */ - private BgpLinkAttrProtectionType(boolean bExtraTraffic, - boolean bUnprotected, - boolean bShared, boolean bDedOneIstoOne, - boolean bDedOnePlusOne, boolean bEnhanced) { - this.bExtraTraffic = bExtraTraffic; - this.bUnprotected = bUnprotected; - this.bShared = bShared; - this.bDedOneIstoOne = bDedOneIstoOne; - this.bDedOnePlusOne = bDedOnePlusOne; - this.bEnhanced = bEnhanced; - } - - /** - * Returns object of this class with specified values. - * - * @param bExtraTraffic Extra Traffic - * @param bUnprotected Unprotected - * @param bShared Shared - * @param bDedOneIstoOne Dedicated 1:1 - * @param bDedOnePlusOne Dedicated 1+1 - * @param bEnhanced Enhanced - * @return object of BgpLinkAttrProtectionType - */ - public static BgpLinkAttrProtectionType of(boolean bExtraTraffic, - boolean bUnprotected, - boolean bShared, - boolean bDedOneIstoOne, - boolean bDedOnePlusOne, - boolean bEnhanced) { - return new BgpLinkAttrProtectionType(bExtraTraffic, bUnprotected, - bShared, bDedOneIstoOne, - bDedOnePlusOne, bEnhanced); - } - - /** - * Reads the BGP link attributes protection type. - * - * @param cb Channel buffer - * @return object of type BgpLinkAttrProtectionType - * @throws BgpParseException while parsing BgpLinkAttrProtectionType - */ - public static BgpLinkAttrProtectionType read(ChannelBuffer cb) - throws BgpParseException { - short linkProtectionType; - byte higherByte; - short lsAttrLength = cb.readShort(); - - boolean bExtraTraffic; - boolean bUnprotected; - boolean bShared; - boolean bDedOneIstoOne; - boolean bDedOnePlusOne; - boolean bEnhanced; - - if ((lsAttrLength != LINK_PROTECTION_LEN) - || (cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - linkProtectionType = cb.readShort(); - higherByte = (byte) (linkProtectionType >> 8); - - bExtraTraffic = ((higherByte & (byte) EXTRA_TRAFFIC) == EXTRA_TRAFFIC); - bUnprotected = ((higherByte & (byte) UNPROTECTED) == UNPROTECTED); - bShared = ((higherByte & (byte) SHARED) == SHARED); - bDedOneIstoOne = ((higherByte & (byte) DEDICATED_ONE_ISTO_ONE) == DEDICATED_ONE_ISTO_ONE); - bDedOnePlusOne = ((higherByte & (byte) DEDICATED_ONE_PLUS_ONE) == DEDICATED_ONE_PLUS_ONE); - bEnhanced = ((higherByte & (byte) ENHANCED) == ENHANCED); - - return BgpLinkAttrProtectionType.of(bExtraTraffic, bUnprotected, - bShared, bDedOneIstoOne, - bDedOnePlusOne, bEnhanced); - } - - /** - * Returns ExtraTraffic Bit. - * - * @return ExtraTraffic Bit - */ - public boolean extraTraffic() { - return bExtraTraffic; - } - - /** - * Returns Unprotected Bit. - * - * @return Unprotected Bit - */ - public boolean unprotected() { - return bUnprotected; - } - - /** - * Returns Shared Bit. - * - * @return Shared Bit - */ - public boolean shared() { - return bShared; - } - - /** - * Returns DedOneIstoOne Bit. - * - * @return DedOneIstoOne Bit - */ - public boolean dedOneIstoOne() { - return bDedOneIstoOne; - } - - /** - * Returns DedOnePlusOne Bit. - * - * @return DedOnePlusOne Bit - */ - public boolean dedOnePlusOne() { - return bDedOnePlusOne; - } - - /** - * Returns Enhanced Bit. - * - * @return Enhanced Bit - */ - public boolean enhanced() { - return bEnhanced; - } - - @Override - public short getType() { - return ATTRLINK_PROTECTIONTYPE; - } - - @Override - public int hashCode() { - return Objects.hash(bExtraTraffic, bUnprotected, bShared, - bDedOneIstoOne, bDedOnePlusOne, bEnhanced); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpLinkAttrProtectionType) { - BgpLinkAttrProtectionType other = (BgpLinkAttrProtectionType) obj; - return Objects.equals(bExtraTraffic, other.bExtraTraffic) - && Objects.equals(bUnprotected, other.bUnprotected) - && Objects.equals(bShared, other.bShared) - && Objects.equals(bDedOneIstoOne, other.bDedOneIstoOne) - && Objects.equals(bDedOnePlusOne, other.bDedOnePlusOne) - && Objects.equals(bEnhanced, other.bEnhanced); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("bExtraTraffic", bExtraTraffic) - .add("bUnprotected", bUnprotected).add("bShared", bShared) - .add("bDedOneIstoOne", bDedOneIstoOne) - .add("bDedOnePlusOne", bDedOnePlusOne) - .add("bEnhanced", bEnhanced).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrSrlg.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrSrlg.java deleted file mode 100644 index 4a6f23f9..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrSrlg.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.bgpio.types.attr; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP link Shared Risk Link Group attribute. - */ -public class BgpLinkAttrSrlg implements BgpValueType { - - public static final short ATTRNODE_SRLG = 1097; - - /* Shared Risk Link Group */ - private List sRlg = new ArrayList(); - - /** - * Constructor to initialize the date. - * - * @param sRlg Shared Risk link group data - */ - public BgpLinkAttrSrlg(List sRlg) { - this.sRlg = sRlg; - } - - /** - * Returns object of this class with specified values. - * - * @param sRlg Shared Risk link group data - * @return object of BgpLinkAttrSrlg - */ - public static BgpLinkAttrSrlg of(ArrayList sRlg) { - return new BgpLinkAttrSrlg(sRlg); - } - - /** - * Reads the BGP link attributes Shared Risk link group data. - * - * @param cb Channel buffer - * @return object of type BgpLinkAttrSrlg - * @throws BgpParseException while parsing BgpLinkAttrSrlg - */ - public static BgpLinkAttrSrlg read(ChannelBuffer cb) - throws BgpParseException { - int tempSrlg; - ArrayList sRlg = new ArrayList(); - - short lsAttrLength = cb.readShort(); - int len = lsAttrLength / Integer.SIZE; // each element is of 4 octets - - if (cb.readableBytes() < lsAttrLength) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - for (int i = 0; i < len; i++) { - tempSrlg = cb.readInt(); - sRlg.add(new Integer(tempSrlg)); - } - - return BgpLinkAttrSrlg.of(sRlg); - } - - /** - * Returns the Shared Risk link group data. - * - * @return array of Shared Risk link group data - */ - public List attrSrlg() { - return sRlg; - } - - @Override - public short getType() { - return ATTRNODE_SRLG; - } - - @Override - public int hashCode() { - return Objects.hash(sRlg); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpLinkAttrSrlg) { - BgpLinkAttrSrlg other = (BgpLinkAttrSrlg) obj; - return Objects.equals(sRlg, other.sRlg); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues().add("sRlg", sRlg).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetric.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetric.java deleted file mode 100644 index 1ae7ecc5..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetric.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.bgpio.types.attr; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP link state Default TE metric link attribute. - */ -public class BgpLinkAttrTeDefaultMetric implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpLinkAttrTeDefaultMetric.class); - - public static final int ATTRLINK_TEDEFAULTMETRIC = 1092; - public static final int TE_DATA_LEN = 4; - - /* TE Default Metric */ - private int linkTeMetric; - - /** - * Constructor to initialize the value. - * - * @param linkTeMetric TE default metric - * - */ - public BgpLinkAttrTeDefaultMetric(int linkTeMetric) { - this.linkTeMetric = linkTeMetric; - } - - /** - * Returns object of this class with specified values. - * - * @param linkTeMetric TE default metric - * @return object of BgpLinkAttrTeDefaultMetric - */ - public static BgpLinkAttrTeDefaultMetric of(final int linkTeMetric) { - return new BgpLinkAttrTeDefaultMetric(linkTeMetric); - } - - /** - * Reads the BGP link attributes of TE default metric. - * - * @param cb Channel buffer - * @return object of type BgpLinkAttrTeDefaultMetric - * @throws BgpParseException while parsing BgpLinkAttrTeDefaultMetric - */ - public static BgpLinkAttrTeDefaultMetric read(ChannelBuffer cb) - throws BgpParseException { - int linkTeMetric; - - short lsAttrLength = cb.readShort(); - - if ((lsAttrLength != TE_DATA_LEN) - || (cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - linkTeMetric = cb.readInt(); - - return new BgpLinkAttrTeDefaultMetric(linkTeMetric); - } - - /** - * Returns the TE default metrics. - * - * @return link default metric - */ - public int attrLinkDefTeMetric() { - return linkTeMetric; - } - - @Override - public short getType() { - return ATTRLINK_TEDEFAULTMETRIC; - } - - @Override - public int hashCode() { - return Objects.hash(linkTeMetric); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpLinkAttrTeDefaultMetric) { - BgpLinkAttrTeDefaultMetric other = (BgpLinkAttrTeDefaultMetric) obj; - return Objects.equals(linkTeMetric, other.linkTeMetric); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("linkTEMetric", linkTeMetric).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.java deleted file mode 100644 index c927eea5..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.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.bgpio.types.attr; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP unreserved bandwidth attribute. - */ -public class BgpLinkAttrUnRsrvdLinkBandwidth implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpLinkAttrUnRsrvdLinkBandwidth.class); - - public static final int MAX_BANDWIDTH_LEN = 4; - public static final int NO_OF_BITS = 8; - public static final int NO_OF_PRIORITY = 8; - - public short sType; - - /* ISIS administrative group */ - private List maxUnResBandwidth = new ArrayList(); - - /** - * Constructor to initialize the values. - * - * @param maxUnResBandwidth Maximum Unreserved bandwidth - * @param sType returns the tag value - */ - public BgpLinkAttrUnRsrvdLinkBandwidth(List maxUnResBandwidth, - short sType) { - this.maxUnResBandwidth = maxUnResBandwidth; - this.sType = sType; - } - - /** - * Returns object of this class with specified values. - * - * @param linkPfxMetric Prefix Metric - * @param sType returns the tag value - * @return object of BgpLinkAttrUnRsrvdLinkBandwidth - */ - public static BgpLinkAttrUnRsrvdLinkBandwidth of(List linkPfxMetric, short sType) { - return new BgpLinkAttrUnRsrvdLinkBandwidth(linkPfxMetric, sType); - } - - /** - * Reads the BGP link attributes of Maximum link bandwidth. - * - * @param cb Channel buffer - * @return object of type BgpLinkAttrMaxLinkBandwidth - * @throws BgpParseException while parsing BgpLinkAttrMaxLinkBandwidth - */ - public static BgpLinkAttrUnRsrvdLinkBandwidth read(ChannelBuffer cb, - short sType) - throws BgpParseException { - ArrayList maxUnResBandwidth = new ArrayList(); - float tmp; - short lsAttrLength = cb.readShort(); - - if ((lsAttrLength != MAX_BANDWIDTH_LEN * NO_OF_PRIORITY) - || (cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - for (int i = 0; i < NO_OF_PRIORITY; i++) { - tmp = ieeeToFloatRead(cb.readInt()) * NO_OF_BITS; - maxUnResBandwidth.add(new Float(tmp)); - } - - return BgpLinkAttrUnRsrvdLinkBandwidth.of(maxUnResBandwidth, sType); - } - - /** - * Returns maximum unreserved bandwidth. - * - * @return unreserved bandwidth. - */ - public List getLinkAttrUnRsrvdLinkBandwidth() { - return maxUnResBandwidth; - } - - /** - * Parse the IEEE floating point notation and returns it in normal float. - * - * @param iVal IEEE floating point number - * @return normal float - */ - static float ieeeToFloatRead(int iVal) { - iVal = (((iVal & 0xFF) << 24) | ((iVal & 0xFF00) << 8) - | ((iVal & 0xFF0000) >> 8) | ((iVal >> 24) & 0xFF)); - - return Float.intBitsToFloat(iVal); - } - - @Override - public short getType() { - return this.sType; - } - - @Override - public int hashCode() { - return Objects.hash(maxUnResBandwidth); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpLinkAttrUnRsrvdLinkBandwidth) { - BgpLinkAttrUnRsrvdLinkBandwidth other = (BgpLinkAttrUnRsrvdLinkBandwidth) obj; - return Objects.equals(maxUnResBandwidth, other.maxUnResBandwidth); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("maxUnResBandwidth", maxUnResBandwidth).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrExtRouteTag.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrExtRouteTag.java deleted file mode 100644 index a2d7c57e..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrExtRouteTag.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types.attr; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP prefix route Extended tag attribute. - */ -public class BgpPrefixAttrExtRouteTag implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpPrefixAttrExtRouteTag.class); - - public static final int ATTR_PREFIX_EXTROUTETAG = 1154; - public static final int ATTR_PREFIX_EXT_LEN = 8; - - /* Prefix Route Tag */ - private List pfxExtRouteTag = new ArrayList(); - - /** - * Constructor to initialize the values. - * - * @param pfxExtRouteTag Extended route tag - */ - public BgpPrefixAttrExtRouteTag(List pfxExtRouteTag) { - this.pfxExtRouteTag = checkNotNull(pfxExtRouteTag); - } - - /** - * Returns object of this class with specified values. - * - * @param pfxExtRouteTag Prefix Metric - * @return object of BgpPrefixAttrMetric - */ - public static BgpPrefixAttrExtRouteTag of(ArrayList pfxExtRouteTag) { - return new BgpPrefixAttrExtRouteTag(pfxExtRouteTag); - } - - /** - * Reads the Extended Tag. - * - * @param cb ChannelBuffer - * @return object of BgpPrefixAttrExtRouteTag - * @throws BgpParseException while parsing BgpPrefixAttrExtRouteTag - */ - public static BgpPrefixAttrExtRouteTag read(ChannelBuffer cb) - throws BgpParseException { - ArrayList pfxExtRouteTag = new ArrayList(); - long temp; - - short lsAttrLength = cb.readShort(); - int len = lsAttrLength / ATTR_PREFIX_EXT_LEN; - - if (cb.readableBytes() < lsAttrLength) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - for (int i = 0; i < len; i++) { - temp = cb.readLong(); - pfxExtRouteTag.add(new Long(temp)); - } - - return new BgpPrefixAttrExtRouteTag(pfxExtRouteTag); - } - - /** - * Returns Extended route tag. - * - * @return route tag - */ - public List pfxExtRouteTag() { - return pfxExtRouteTag; - } - - @Override - public short getType() { - return ATTR_PREFIX_EXTROUTETAG; - } - - @Override - public int hashCode() { - return Objects.hash(pfxExtRouteTag); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpPrefixAttrExtRouteTag) { - BgpPrefixAttrExtRouteTag other = (BgpPrefixAttrExtRouteTag) obj; - return Objects.equals(pfxExtRouteTag, other.pfxExtRouteTag); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("pfxExtRouteTag", pfxExtRouteTag).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlags.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlags.java deleted file mode 100644 index 4e84191a..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlags.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.bgpio.types.attr; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP prefix IGP Flag attribute. - */ -public final class BgpPrefixAttrIgpFlags implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpPrefixAttrIgpFlags.class); - - public static final int ATTR_PREFIX_FLAGBIT = 1152; - public static final int ATTR_PREFIX_FLAG_LEN = 1; - - public static final byte FIRST_BIT = (byte) 0x80; - public static final byte SECOND_BIT = 0x40; - public static final byte THIRD_BIT = 0x20; - public static final byte FOURTH_BIT = 0x01; - - /* Prefix IGP flag bit TLV */ - private final boolean bisisUpDownBit; - private final boolean bOspfNoUnicastBit; - private final boolean bOspfLclAddrBit; - private final boolean bOspfNSSABit; - - /** - * Constructor to initialize the value. - * - * @param bisisUpDownBit IS-IS Up/Down Bit - * @param bOspfNoUnicastBit OSPF no unicast Bit - * @param bOspfLclAddrBit OSPF local address Bit - * @param bOspfNSSABit OSPF propagate NSSA Bit - */ - BgpPrefixAttrIgpFlags(boolean bisisUpDownBit, - boolean bOspfNoUnicastBit, - boolean bOspfLclAddrBit, boolean bOspfNSSABit) { - this.bisisUpDownBit = bisisUpDownBit; - this.bOspfNoUnicastBit = bOspfNoUnicastBit; - this.bOspfLclAddrBit = bOspfLclAddrBit; - this.bOspfNSSABit = bOspfNSSABit; - } - - /** - * Returns object of this class with specified values. - * - * @param bisisUpDownBit IS-IS Up/Down Bit - * @param bOspfNoUnicastBit OSPF no unicast Bit - * @param bOspfLclAddrBit OSPF local address Bit - * @param bOspfNSSABit OSPF propagate NSSA Bit - * @return object of BgpPrefixAttrIGPFlags - */ - public static BgpPrefixAttrIgpFlags of(final boolean bisisUpDownBit, - final boolean bOspfNoUnicastBit, - final boolean bOspfLclAddrBit, - final boolean bOspfNSSABit) { - return new BgpPrefixAttrIgpFlags(bisisUpDownBit, bOspfNoUnicastBit, - bOspfLclAddrBit, bOspfNSSABit); - } - - /** - * Reads the IGP Flags. - * - * @param cb ChannelBuffer - * @return object of BgpPrefixAttrIGPFlags - * @throws BgpParseException while parsing BgpPrefixAttrIGPFlags - */ - public static BgpPrefixAttrIgpFlags read(ChannelBuffer cb) - throws BgpParseException { - boolean bisisUpDownBit = false; - boolean bOspfNoUnicastBit = false; - boolean bOspfLclAddrBit = false; - boolean bOspfNSSABit = false; - - short lsAttrLength = cb.readShort(); - - if ((lsAttrLength != ATTR_PREFIX_FLAG_LEN) - || (cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - byte nodeFlagBits = cb.readByte(); - - bisisUpDownBit = ((nodeFlagBits & FIRST_BIT) == FIRST_BIT); - bOspfNoUnicastBit = ((nodeFlagBits & SECOND_BIT) == SECOND_BIT); - bOspfLclAddrBit = ((nodeFlagBits & THIRD_BIT) == THIRD_BIT); - bOspfNSSABit = ((nodeFlagBits & FOURTH_BIT) == FOURTH_BIT); - - return BgpPrefixAttrIgpFlags.of(bisisUpDownBit, bOspfNoUnicastBit, - bOspfLclAddrBit, bOspfNSSABit); - } - - /** - * Returns the IS-IS Up/Down Bit set or not. - * - * @return IS-IS Up/Down Bit set or not - */ - public boolean isisUpDownBit() { - return bisisUpDownBit; - } - - /** - * Returns the OSPF no unicast Bit set or not. - * - * @return OSPF no unicast Bit set or not - */ - public boolean ospfNoUnicastBit() { - return bOspfNoUnicastBit; - } - - /** - * Returns the OSPF local address Bit set or not. - * - * @return OSPF local address Bit set or not - */ - public boolean ospfLclAddrBit() { - return bOspfLclAddrBit; - } - - /** - * Returns the OSPF propagate NSSA Bit set or not. - * - * @return OSPF propagate NSSA Bit set or not - */ - public boolean ospfNSSABit() { - return bOspfNSSABit; - } - - @Override - public short getType() { - return ATTR_PREFIX_FLAGBIT; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public int hashCode() { - return Objects.hash(bisisUpDownBit, bOspfNoUnicastBit, bOspfLclAddrBit, - bOspfNSSABit); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpPrefixAttrIgpFlags) { - BgpPrefixAttrIgpFlags other = (BgpPrefixAttrIgpFlags) obj; - return Objects.equals(bisisUpDownBit, other.bisisUpDownBit) - && Objects.equals(bOspfNoUnicastBit, - other.bOspfNoUnicastBit) - && Objects.equals(bOspfLclAddrBit, other.bOspfLclAddrBit) - && Objects.equals(bOspfNSSABit, other.bOspfNSSABit); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("bisisUpDownBit", bisisUpDownBit) - .add("bOspfNoUnicastBit", bOspfNoUnicastBit) - .add("bOspfLclAddrBit", bOspfLclAddrBit) - .add("bOspfNSSABit", bOspfNSSABit).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetric.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetric.java deleted file mode 100644 index 1886102c..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetric.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.bgpio.types.attr; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP prefix metric attribute. - */ -public class BgpPrefixAttrMetric implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpPrefixAttrMetric.class); - - public static final int ATTR_PREFIX_METRIC = 1155; - public static final int ATTR_PREFIX_LEN = 4; - - /* TE Default Metric */ - private final int linkPfxMetric; - - /** - * Constructor to initialize value. - * - * @param linkPfxMetric Prefix Metric - */ - public BgpPrefixAttrMetric(int linkPfxMetric) { - this.linkPfxMetric = linkPfxMetric; - } - - /** - * Returns object of this class with specified values. - * - * @param linkPfxMetric Prefix Metric - * @return object of BgpPrefixAttrMetric - */ - public static BgpPrefixAttrMetric of(final int linkPfxMetric) { - return new BgpPrefixAttrMetric(linkPfxMetric); - } - - /** - * Reads the Prefix Metric. - * - * @param cb ChannelBuffer - * @return object of BgpPrefixAttrMetric - * @throws BgpParseException while parsing BgpPrefixAttrMetric - */ - public static BgpPrefixAttrMetric read(ChannelBuffer cb) - throws BgpParseException { - int linkPfxMetric; - - short lsAttrLength = cb.readShort(); // 4 Bytes - - if ((lsAttrLength != ATTR_PREFIX_LEN) - || (cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - linkPfxMetric = cb.readInt(); - - return BgpPrefixAttrMetric.of(linkPfxMetric); - } - - /** - * Returns the Prefix Metric. - * - * @return Prefix Metric - */ - public int attrPfxMetric() { - return linkPfxMetric; - } - - @Override - public short getType() { - return ATTR_PREFIX_METRIC; - } - - @Override - public int hashCode() { - return Objects.hash(linkPfxMetric); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpPrefixAttrMetric) { - BgpPrefixAttrMetric other = (BgpPrefixAttrMetric) obj; - return Objects.equals(linkPfxMetric, other.linkPfxMetric); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("linkPfxMetric", linkPfxMetric).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueData.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueData.java deleted file mode 100644 index 6f7a74bb..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueData.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.bgpio.types.attr; - -import java.util.Arrays; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP prefix opaque data attribute. - */ -public final class BgpPrefixAttrOpaqueData implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpPrefixAttrOpaqueData.class); - - public static final int ATTR_PREFIX_OPAQUEDATA = 1157; - - /* Opaque Node Attribute */ - private final byte[] opaquePrefixAttribute; - - /** - * Constructor to initialize the values. - * - * @param opaquePrefixAttribute opaque prefix data - */ - public BgpPrefixAttrOpaqueData(byte[] opaquePrefixAttribute) { - this.opaquePrefixAttribute = Arrays - .copyOf(opaquePrefixAttribute, opaquePrefixAttribute.length); - } - - /** - * Returns object of this class with specified values. - * - * @param opaquePrefixAttribute opaque prefix data - * @return object of BgpPrefixAttrOpaqueData - */ - public static BgpPrefixAttrOpaqueData of(final byte[] opaquePrefixAttribute) { - return new BgpPrefixAttrOpaqueData(opaquePrefixAttribute); - } - - /** - * Reads the Opaque Prefix Attribute. - * - * @param cb ChannelBuffer - * @return object of BgpPrefixAttrOpaqueData - * @throws BgpParseException while parsing BgpPrefixAttrOpaqueData - */ - public static BgpPrefixAttrOpaqueData read(ChannelBuffer cb) - throws BgpParseException { - byte[] opaquePrefixAttribute; - - short lsAttrLength = cb.readShort(); - opaquePrefixAttribute = new byte[lsAttrLength]; - - if (cb.readableBytes() < lsAttrLength) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - cb.readBytes(opaquePrefixAttribute); - - return BgpPrefixAttrOpaqueData.of(opaquePrefixAttribute); - } - - /** - * Returns the Opaque prefix attribute name. - * - * @return opaque prefix name - */ - public byte[] getOpaquePrefixAttribute() { - return opaquePrefixAttribute; - } - - @Override - public short getType() { - return ATTR_PREFIX_OPAQUEDATA; - } - - @Override - public int hashCode() { - return Arrays.hashCode(opaquePrefixAttribute); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpPrefixAttrOpaqueData) { - BgpPrefixAttrOpaqueData other = (BgpPrefixAttrOpaqueData) obj; - return Arrays.equals(opaquePrefixAttribute, - other.opaquePrefixAttribute); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("opaquePrefixAttribute", getOpaquePrefixAttribute()) - .toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddr.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddr.java deleted file mode 100644 index 4e9db1ee..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddr.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types.attr; - -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.Ip6Address; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP prefix OSPF Forwarding address attribute. - */ -public class BgpPrefixAttrOspfFwdAddr implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpPrefixAttrOspfFwdAddr.class); - - public static final int ATTR_PREFIX_OSPFFWDADDR = 1156; - public static final int IPV4_LEN = 4; - public static final int IPV6_LEN = 16; - - /* OSPF Forwarding Address */ - private final short lsAttrLength; - private final Ip4Address ip4RouterId; - private final Ip6Address ip6RouterId; - - /** - * Constructor to initialize the value. - * - * @param lsAttrLength length of the IP address - * @param ip4RouterId Valid IPV4 address if length is 4 else null - * @param ip6RouterId Valid IPV6 address if length is 16 else null - */ - public BgpPrefixAttrOspfFwdAddr(short lsAttrLength, Ip4Address ip4RouterId, - Ip6Address ip6RouterId) { - this.lsAttrLength = lsAttrLength; - this.ip4RouterId = ip4RouterId; - this.ip6RouterId = ip6RouterId; - } - - /** - * Returns object of this class with specified values. - * - * @param lsAttrLength length of the IP address - * @param ip4RouterId Valid IPV4 address if length is 4 else null - * @param ip6RouterId Valid IPV6 address if length is 16 else null - * @return object of BgpPrefixAttrOspfFwdAddr - */ - public static BgpPrefixAttrOspfFwdAddr of(final short lsAttrLength, - final Ip4Address ip4RouterId, - final Ip6Address ip6RouterId) { - return new BgpPrefixAttrOspfFwdAddr(lsAttrLength, ip4RouterId, - ip6RouterId); - } - - /** - * Reads the OSPF Forwarding Address. - * - * @param cb ChannelBuffer - * @return object of BgpPrefixAttrOSPFFwdAddr - * @throws BgpParseException while parsing BgpPrefixAttrOspfFwdAddr - */ - public static BgpPrefixAttrOspfFwdAddr read(ChannelBuffer cb) - throws BgpParseException { - short lsAttrLength; - byte[] ipBytes; - Ip4Address ip4RouterId = null; - Ip6Address ip6RouterId = null; - - lsAttrLength = cb.readShort(); - ipBytes = new byte[lsAttrLength]; - - if ((cb.readableBytes() < lsAttrLength)) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - cb.readBytes(ipBytes); - - if (IPV4_LEN == lsAttrLength) { - ip4RouterId = Ip4Address.valueOf(ipBytes); - } else if (IPV6_LEN == lsAttrLength) { - ip6RouterId = Ip6Address.valueOf(ipBytes); - } - - return BgpPrefixAttrOspfFwdAddr.of(lsAttrLength, ip4RouterId, - ip6RouterId); - } - - /** - * Returns IPV4 Address of OSPF forwarding address. - * - * @return IPV4 address - */ - public Ip4Address ospfv4FwdAddr() { - return ip4RouterId; - } - - /** - * Returns IPV6 Address of OSPF forwarding address. - * - * @return IPV6 address - */ - public Ip6Address ospfv6FwdAddr() { - return ip6RouterId; - } - - /** - * Returns OSPF forwarding address length. - * - * @return length of the ip address - */ - public short ospfFwdAddrLen() { - return lsAttrLength; - } - - @Override - public short getType() { - return ATTR_PREFIX_OSPFFWDADDR; - } - - @Override - public int hashCode() { - if (IPV4_LEN == lsAttrLength) { - return Objects.hash(ip4RouterId); - } else { - return Objects.hash(ip6RouterId); - } - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpPrefixAttrOspfFwdAddr) { - BgpPrefixAttrOspfFwdAddr other = (BgpPrefixAttrOspfFwdAddr) obj; - if (IPV4_LEN == lsAttrLength) { - return Objects.equals(ip4RouterId, other.ip4RouterId); - } else { - return Objects.equals(ip6RouterId, other.ip6RouterId); - } - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - if (IPV4_LEN == lsAttrLength) { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("ip4RouterId", ip4RouterId).toString(); - } else { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("ip6RouterId", ip6RouterId).toString(); - } - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java deleted file mode 100644 index 3894c003..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.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.bgpio.types.attr; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpErrorType; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.util.Validation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Implements BGP prefix route tag attribute. - */ -public class BgpPrefixAttrRouteTag implements BgpValueType { - - protected static final Logger log = LoggerFactory - .getLogger(BgpPrefixAttrRouteTag.class); - - public static final short ATTR_PREFIX_ROUTETAG = 1153; - - /* Prefix Route Tag */ - private List pfxRouteTag = new ArrayList(); - - /** - * Constructor to initialize the values. - * - * @param pfxRouteTag prefix route tag - */ - public BgpPrefixAttrRouteTag(List 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 pfxRouteTag) { - return new BgpPrefixAttrRouteTag(pfxRouteTag); - } - - /** - * Reads the Route Tag. - * - * @param cb ChannelBuffer - * @return object of BgpPrefixAttrRouteTag - * @throws BgpParseException while parsing BgpPrefixAttrRouteTag - */ - public static BgpPrefixAttrRouteTag read(ChannelBuffer cb) - throws BgpParseException { - int tmp; - ArrayList pfxRouteTag = new ArrayList(); - - short lsAttrLength = cb.readShort(); - int len = lsAttrLength / Integer.SIZE; - - if (cb.readableBytes() < lsAttrLength) { - Validation.validateLen(BgpErrorType.UPDATE_MESSAGE_ERROR, - BgpErrorType.ATTRIBUTE_LENGTH_ERROR, - lsAttrLength); - } - - for (int i = 0; i < len; i++) { - tmp = cb.readInt(); - pfxRouteTag.add(new Integer(tmp)); - } - - return BgpPrefixAttrRouteTag.of(pfxRouteTag); - } - - /** - * Returns the prefix route tag. - * - * @return route tag - */ - public List getPfxRouteTag() { - return pfxRouteTag; - } - - @Override - public short getType() { - return ATTR_PREFIX_ROUTETAG; - } - - @Override - public int hashCode() { - return Objects.hash(pfxRouteTag); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof BgpPrefixAttrRouteTag) { - BgpPrefixAttrRouteTag other = (BgpPrefixAttrRouteTag) obj; - return Objects.equals(pfxRouteTag, other.pfxRouteTag); - } - return false; - } - - @Override - public int write(ChannelBuffer cb) { - // TODO This will be implemented in the next version - return 0; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("pfxRouteTag", pfxRouteTag).toString(); - } - - @Override - public int compareTo(Object o) { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/package-info.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/package-info.java deleted file mode 100755 index e2a74dbc..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/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 BGP Link state attribute Tlvs. - */ -package org.onosproject.bgpio.types.attr; diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/package-info.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/package-info.java deleted file mode 100755 index 1f2ed95e..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/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, Attributes and Descriptors. - */ -package org.onosproject.bgpio.types; diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/Constants.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/Constants.java deleted file mode 100644 index 9649bf16..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/Constants.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.bgpio.util; - -/** - * Provides Constants usage for BGP. - */ -public final class Constants { - private Constants() { - } - - public static final short TYPE_AND_LEN = 4; - public static final short TYPE_AND_LEN_AS_SHORT = 4; - public static final short TYPE_AND_LEN_AS_BYTE = 3; - public static final int ISIS_LEVELONE = 1; - public static final int ISIS_LEVELTWO = 2; - public static final int OSPFV2 = 3; - public static final int DIRECT = 4; - public static final int STATIC_CONFIGURATION = 5; - public static final int OSPFV3 = 6; - public static final short AFI_VALUE = 16388; - public static final byte VPN_SAFI_VALUE = (byte) 0x80; - public static final byte SAFI_VALUE = 71; -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/UnSupportedAttribute.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/UnSupportedAttribute.java deleted file mode 100644 index 663b1e9a..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/UnSupportedAttribute.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.bgpio.util; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Provides methods to handle UnSupportedAttribute. - */ -public final class UnSupportedAttribute { - protected static final Logger log = LoggerFactory.getLogger(UnSupportedAttribute.class); - - private UnSupportedAttribute() { - } - - /** - * Reads channel buffer parses attribute header and skips specified length. - * - * @param cb channelBuffer - */ - public static void read(ChannelBuffer cb) { - Validation parseFlags = Validation.parseAttributeHeader(cb); - cb.skipBytes(parseFlags.getLength()); - } - - /** - * Skip specified bytes in channel buffer. - * - * @param cb channelBuffer - * @param length to be skipped - */ - public static void skipBytes(ChannelBuffer cb, short length) { - cb.skipBytes(length); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/Validation.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/Validation.java deleted file mode 100644 index 23dd1a75..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/Validation.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.bgpio.util; - -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.Arrays; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.primitives.Ints; - -/** - * Provides methods to parse attribute header, validate length and type. - */ -public class Validation { - private static final Logger log = LoggerFactory.getLogger(Validation.class); - public static final byte FIRST_BIT = (byte) 0x80; - public static final byte SECOND_BIT = 0x40; - public static final byte THIRD_BIT = 0x20; - public static final byte FOURTH_BIT = (byte) 0x10; - public static final byte IPV4_SIZE = 4; - private boolean firstBit; - private boolean secondBit; - private boolean thirdBit; - private boolean fourthBit; - private int len; - private boolean isShort; - - /** - * Constructor to initialize parameter. - * - * @param firstBit in AttributeFlags - * @param secondBit in AttributeFlags - * @param thirdBit in AttributeFlags - * @param fourthBit in AttributeFlags - * @param len length - * @param isShort true if length is read as short otherwise false - */ - Validation(boolean firstBit, boolean secondBit, boolean thirdBit, boolean fourthBit, int len, boolean isShort) { - this.firstBit = firstBit; - this.secondBit = secondBit; - this.thirdBit = thirdBit; - this.fourthBit = fourthBit; - this.len = len; - this.isShort = isShort; - } - - /** - * Parses attribute Header. - * - * @param cb ChannelBuffer - * @return object of Validation - */ - public static Validation parseAttributeHeader(ChannelBuffer cb) { - - boolean firstBit; - boolean secondBit; - boolean thirdBit; - boolean fourthBit; - boolean isShort; - byte flags = cb.readByte(); - byte typeCode = cb.readByte(); - byte temp = flags; - //first Bit : Optional (1) or well-known (0) - firstBit = ((temp & FIRST_BIT) == FIRST_BIT); - //second Bit : Transitive (1) or non-Transitive (0) - secondBit = ((temp & SECOND_BIT) == SECOND_BIT); - //third Bit : partial (1) or complete (0) - thirdBit = ((temp & THIRD_BIT) == THIRD_BIT); - //forth Bit(Extended Length bit) : Attribute Length is 1 octects (0) or 2 octects (1) - fourthBit = ((temp & FOURTH_BIT) == FOURTH_BIT); - int len; - if (fourthBit) { - isShort = true; - short length = cb.readShort(); - len = length; - } else { - isShort = false; - byte length = cb.readByte(); - len = length; - } - return new Validation(firstBit, secondBit, thirdBit, fourthBit, len, isShort); - } - - /** - * Throws exception if length is not correct. - * - * @param errorCode Error code - * @param subErrCode Sub Error Code - * @param length erroneous length - * @throws BgpParseException for erroneous length - */ - public static void validateLen(byte errorCode, byte subErrCode, int length) throws BgpParseException { - byte[] errLen = Ints.toByteArray(length); - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errLen); - throw new BgpParseException(errorCode, subErrCode, buffer); - } - - /** - * Throws exception if type is not correct. - * - * @param errorCode Error code - * @param subErrCode Sub Error Code - * @param type erroneous type - * @throws BgpParseException for erroneous type - */ - public static void validateType(byte errorCode, byte subErrCode, int type) throws BgpParseException { - byte[] errType = Ints.toByteArray(type); - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(errType); - throw new BgpParseException(errorCode, subErrCode, buffer); - } - - /** - * Convert byte array to InetAddress. - * - * @param length of IpAddress - * @param cb channelBuffer - * @return InetAddress - */ - public static InetAddress toInetAddress(int length, ChannelBuffer cb) { - byte[] address = new byte[length]; - cb.readBytes(address, 0, length); - InetAddress ipAddress = null; - try { - ipAddress = InetAddress.getByAddress(address); - } catch (UnknownHostException e) { - log.info("InetAddress convertion failed"); - } - return ipAddress; - } - - /** - * Returns first bit in type flags. - * - * @return first bit in type flags - */ - public boolean getFirstBit() { - return this.firstBit; - } - - /** - * Returns second bit in type flags. - * - * @return second bit in type flags - */ - public boolean getSecondBit() { - return this.secondBit; - } - - /** - * Returns third bit in type flags. - * - * @return third bit in type flags - */ - public boolean getThirdBit() { - return this.thirdBit; - } - - /** - * Returns fourth bit in type flags. - * - * @return fourth bit in type flags - */ - public boolean getFourthBit() { - return this.fourthBit; - } - - /** - * Returns attribute length. - * - * @return attribute length - */ - public int getLength() { - return this.len; - } - - /** - * Returns whether attribute length read in short or byte. - * - * @return whether attribute length read in short or byte - */ - public boolean isShort() { - return this.isShort; - } - - /** - * Converts byte array of prefix value to IpPrefix object. - * - * @param value byte array of prefix value - * @param length prefix length in bits - * @return object of IpPrefix - */ - public static IpPrefix bytesToPrefix(byte[] value, int length) { - if (value.length != IPV4_SIZE) { - value = Arrays.copyOf(value, IPV4_SIZE); - } - IpPrefix ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, length); - return ipPrefix; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/package-info.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/util/package-info.java deleted file mode 100755 index 3229d89a..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/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. - */ - -/** - * Implementation of BGP utility functions. - */ -package org.onosproject.bgpio.util; diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpLinkAttrMaxLinkBandwidthTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpLinkAttrMaxLinkBandwidthTest.java deleted file mode 100644 index d4c3b610..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpLinkAttrMaxLinkBandwidthTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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; - -import org.junit.Test; -import org.onosproject.bgpio.types.attr.BgpLinkAttrMaxLinkBandwidth; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP link max bandwidth attribute. - */ -public class BgpLinkAttrMaxLinkBandwidthTest { - private final float val = 0x010203; - private final short valLen = 3; - private final float val1 = 0x01020304; - private final short val1Len = 4; - - private final BgpLinkAttrMaxLinkBandwidth data = BgpLinkAttrMaxLinkBandwidth - .of(val, valLen); - private final BgpLinkAttrMaxLinkBandwidth sameAsData = BgpLinkAttrMaxLinkBandwidth - .of(val, valLen); - private final BgpLinkAttrMaxLinkBandwidth diffData = BgpLinkAttrMaxLinkBandwidth - .of(val1, val1Len); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpLinkAttrTeDefaultMetricTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpLinkAttrTeDefaultMetricTest.java deleted file mode 100644 index b6453c45..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpLinkAttrTeDefaultMetricTest.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.bgp; - -import org.junit.Test; -import org.onosproject.bgpio.types.attr.BgpLinkAttrTeDefaultMetric; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP link TE default metric attribute. - */ -public class BgpLinkAttrTeDefaultMetricTest { - private final int val = 0x010203; - private final int val1 = 0x01020304; - - private final BgpLinkAttrTeDefaultMetric data = BgpLinkAttrTeDefaultMetric - .of(val); - private final BgpLinkAttrTeDefaultMetric sameAsData = BgpLinkAttrTeDefaultMetric - .of(val); - private final BgpLinkAttrTeDefaultMetric diffData = BgpLinkAttrTeDefaultMetric - .of(val1); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpPrefixAttrOpaqueDataTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpPrefixAttrOpaqueDataTest.java deleted file mode 100644 index 7ba6a880..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgp/BgpPrefixAttrOpaqueDataTest.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.bgp; - -import org.junit.Test; -import org.onosproject.bgpio.types.attr.BgpPrefixAttrOpaqueData; - -import com.google.common.testing.EqualsTester; - -/** - * Test for prefix attribute opaque data Tlv. - */ -public class BgpPrefixAttrOpaqueDataTest { - private final byte[] array = new byte[] {0x01, 0x02, 0x03, 0x04}; - private final byte[] array1 = new byte[] {0x01, 0x02, 0x03, 0x01}; - - private final BgpPrefixAttrOpaqueData isisData = BgpPrefixAttrOpaqueData - .of(array); - private final BgpPrefixAttrOpaqueData sameAsIsisData = BgpPrefixAttrOpaqueData - .of(array); - private final BgpPrefixAttrOpaqueData isisDiff = BgpPrefixAttrOpaqueData - .of(array1); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(isisData, sameAsIsisData) - .addEqualityGroup(isisDiff).testEquals(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpKeepaliveMsgTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpKeepaliveMsgTest.java deleted file mode 100755 index 682c1bc0..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpKeepaliveMsgTest.java +++ /dev/null @@ -1,66 +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.bgpio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -/** - * Test case for BGP KEEPALIVE Message. - */ -public class BgpKeepaliveMsgTest { - - /** - * This test case checks BGP Keepalive message. - */ - @Test - public void keepaliveMessageTest1() throws BgpParseException { - - // BGP KEEPALIVE Message - byte[] keepaliveMsg = new byte[] {(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, - 0x00, 0x13, 0x04}; - - byte[] testKeepaliveMsg; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(keepaliveMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpKeepaliveMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testKeepaliveMsg = new byte[readLen]; - buf.readBytes(testKeepaliveMsg, 0, readLen); - - assertThat(testKeepaliveMsg, is(keepaliveMsg)); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpNotificationMsgTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpNotificationMsgTest.java deleted file mode 100644 index 6dfa57ee..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpNotificationMsgTest.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.bgpio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -/** - * Test for Notification message. - */ -public class BgpNotificationMsgTest { - - /** - * Notification message with error code, error subcode and data. - * - * @throws BgpParseException while decoding and encoding notification message - */ - @Test - public void bgpNotificationMessageTest1() throws BgpParseException { - byte[] notificationMsg = new byte[] {(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, 0x00, - 0x17, 0x03, 0x02, 0x02, - (byte) 0xfe, (byte) 0xb0}; - - byte[] testNotificationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(notificationMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message = null; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - assertThat(message, instanceOf(BgpNotificationMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testNotificationMsg = buf.array(); - - int iReadLen = buf.writerIndex() - 0; - testNotificationMsg = new byte[iReadLen]; - buf.readBytes(testNotificationMsg, 0, iReadLen); - assertThat(testNotificationMsg, is(notificationMsg)); - } - - /** - * Notification message without data. - * - * @throws BgpParseException while decoding and encoding notification message - */ - @Test - public void bgpNotificationMessageTest2() throws BgpParseException { - byte[] notificationMsg = new byte[] {(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, 0x00, - 0x15, 0x03, 0x02, 0x00}; - - byte[] testNotificationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(notificationMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message = null; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - assertThat(message, instanceOf(BgpNotificationMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testNotificationMsg = buf.array(); - - int iReadLen = buf.writerIndex() - 0; - testNotificationMsg = new byte[iReadLen]; - buf.readBytes(testNotificationMsg, 0, iReadLen); - assertThat(testNotificationMsg, is(notificationMsg)); - } - - //Negative scenarios - /** - * Notification message with wrong maker value. - * - * @throws BgpParseException while decoding and encoding notification message - */ - @Test(expected = BgpParseException.class) - public void bgpNotificationMessageTest3() throws BgpParseException { - byte[] notificationMsg = new byte[] {(byte) 0xff, (byte) 0xff, - (byte) 0xff, (byte) 0xff, - (byte) 0xff, (byte) 0xff, - (byte) 0xff, (byte) 0xff, - (byte) 0xff, (byte) 0xff, - 0x01, (byte) 0xff, - (byte) 0xff, (byte) 0xff, - (byte) 0xff, (byte) 0xff, 0x00, - 0x15, 0x03, 0x02, 0x00}; - - byte[] testNotificationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(notificationMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message = null; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - assertThat(message, instanceOf(BgpNotificationMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testNotificationMsg = buf.array(); - - int iReadLen = buf.writerIndex() - 0; - testNotificationMsg = new byte[iReadLen]; - buf.readBytes(testNotificationMsg, 0, iReadLen); - assertThat(testNotificationMsg, is(notificationMsg)); - } - - /** - * Notification message without error subcode. - * - * @throws BgpParseException while decoding and encoding notification message - */ - @Test(expected = BgpParseException.class) - public void bgpNotificationMessageTest4() throws BgpParseException { - byte[] notificationMsg = new byte[] {(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, 0x00, - 0x14, 0x03, 0x02}; - - byte[] testNotificationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(notificationMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message = null; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - assertThat(message, instanceOf(BgpNotificationMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testNotificationMsg = buf.array(); - - int iReadLen = buf.writerIndex() - 0; - testNotificationMsg = new byte[iReadLen]; - buf.readBytes(testNotificationMsg, 0, iReadLen); - assertThat(testNotificationMsg, is(notificationMsg)); - } - - /** - * Notification message with wrong message length. - * - * @throws BgpParseException while decoding and encoding notification message - */ - @Test(expected = BgpParseException.class) - public void bgpNotificationMessageTest5() throws BgpParseException { - byte[] notificationMsg = new byte[] {(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, 0x00, - 0x14, 0x03, 0x02, 0x02}; - - byte[] testNotificationMsg = {0}; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(notificationMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message = null; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - assertThat(message, instanceOf(BgpNotificationMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - testNotificationMsg = buf.array(); - - int iReadLen = buf.writerIndex() - 0; - testNotificationMsg = new byte[iReadLen]; - buf.readBytes(testNotificationMsg, 0, iReadLen); - assertThat(testNotificationMsg, is(notificationMsg)); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpOpenMsgTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpOpenMsgTest.java deleted file mode 100755 index 1fe4036f..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpOpenMsgTest.java +++ /dev/null @@ -1,314 +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.bgpio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.types.BgpHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -/** - * Test cases for BGP Open Message. - */ -public class BgpOpenMsgTest { - - /** - * This test case checks open message without optional parameter. - */ - @Test - public void openMessageTest1() throws BgpParseException { - //Open message without optional parameter - byte[] openMsg = new byte[] {(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, - 0x00, 0x1d, 0x01, 0X04, (byte) 0xfe, 0x09, 0x00, - (byte) 0xb4, (byte) 0xc0, (byte) 0xa8, 0x00, 0x0f, - 0x00}; - - byte[] testOpenMsg; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - } - - /** - * This test case checks open message with Multiprotocol extension - * capability. - */ - @Test - public void openMessageTest2() throws BgpParseException { - - // OPEN Message (MultiProtocolExtension-CAPABILITY). - byte[] openMsg = new byte[] {(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, 0x00, 0x25, - 0x01, //BGP Header - 0X04, //Version - (byte) 0x00, (byte) 0xc8, // AS Number - 0x00, (byte) 0xb4, // Hold time - (byte) 0xb6, (byte) 0x02, 0x5d, - (byte) 0xc8, // BGP Identifier - 0x08, 0x02, 0x06, // Opt Parameter length - 0x01, 0x04, 0x00, 0x00, 0x00, (byte) 0xc8}; // Multiprotocol CAPABILITY - - byte[] testOpenMsg; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - } - - /** - * This test case checks open message with Four-octet AS number - * capability. - */ - @Test - public void openMessageTest3() throws BgpParseException { - - // OPEN Message (Four-Octet AS number capability). - byte[] openMsg = new byte[] {(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, 0x00, 0x25, - 0x01, //BGPHeader - 0X04, //Version - (byte) 0x00, (byte) 0xc8, //AS Number - 0x00, (byte) 0xb4, //Hold Time - (byte) 0xb6, (byte) 0x02, 0x5d, - (byte) 0xc8, //BGP Identifier - 0x08, 0x02, 0x06, //Opt Parameter Length - 0x41, 0x04, 0x00, 0x01, 0x00, 0x01}; //Four Octet AS Number-CAPABILITY-TLV - - byte[] testOpenMsg; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpOpenMsg.class)); - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - } - - /** - * This test case checks open message with capabilities. - */ - @Test - public void openMessageTest4() throws BgpParseException { - - // OPEN Message with capabilities. - byte[] openMsg = new byte[] {(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, 0x00, 0x2b, - 0x01, //BGPHeader - 0X04, //Version - (byte) 0x00, (byte) 0xc8, //AS Number - 0x00, (byte) 0xb4, //Hold Time - (byte) 0xb6, (byte) 0x02, 0x5d, (byte) 0xc8, //BGP Identifier - 0x0e, 0x02, 0x0c, //Opt Parameter Length - 0x01, 0x04, 0x00, 0x00, 0x00, (byte) 0xc8, // Multiprotocol extension capability - 0x41, 0x04, 0x00, 0x01, 0x00, 0x01}; //Four Octet AS Number-CAPABILITY-TLV - - byte[] testOpenMsg; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpOpenMsg.class)); - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - message.writeTo(buf); - - int readLen = buf.writerIndex(); - testOpenMsg = new byte[readLen]; - buf.readBytes(testOpenMsg, 0, readLen); - - assertThat(testOpenMsg, is(openMsg)); - } - - /** - * In this test case, Invalid version is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void openMessageTest5() throws BgpParseException { - - // OPEN Message with invalid version number. - byte[] openMsg = new byte[] {(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, 0x00, 0x1d, 0x01, 0X05, - (byte) 0xfe, 0x09, 0x00, (byte) 0xb4, - (byte) 0xc0, (byte) 0xa8, 0x00, 0x0f, - 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpOpenMsg.class)); - } - - /** - * In this test case, Marker is set as 0 in input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void openMessageTest6() throws BgpParseException { - - // OPEN Message with marker set to 0. - byte[] openMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, - (byte) 0xff, (byte) 0xff, (byte) 0xff, - (byte) 0xff, (byte) 0xff, (byte) 0xff, - (byte) 0x00, (byte) 0xff, (byte) 0xff, - (byte) 0xff, (byte) 0xff, (byte) 0xff, - 0x00, 0x00, 0x1d, 0x01, 0X04, - (byte) 0xfe, 0x09, 0x00, (byte) 0xb4, - (byte) 0xc0, (byte) 0xa8, 0x00, 0x0f, - 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpOpenMsg.class)); - } - - /** - * In this test case, Invalid message length is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void openMessageTest7() throws BgpParseException { - - // OPEN Message with invalid header length. - byte[] openMsg = new byte[] {(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, 0x00, 0x1e, 0x01, 0X04, - (byte) 0xfe, 0x09, 0x00, (byte) 0xb4, - (byte) 0xc0, (byte) 0xa8, 0x00, 0x0f, - 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpOpenMsg.class)); - } - - /** - * In this test case, Invalid message type is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void openMessageTest8() throws BgpParseException { - - // OPEN Message with invalid message type. - byte[] openMsg = new byte[] {(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, 0x00, 0x1d, 0x05, 0X04, - (byte) 0xfe, 0x09, 0x00, (byte) 0xb4, - (byte) 0xc0, (byte) 0xa8, 0x00, 0x0f, - 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(openMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpOpenMsg.class)); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpUpdateMsgTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpUpdateMsgTest.java deleted file mode 100755 index 8e1cd202..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/protocol/BgpUpdateMsgTest.java +++ /dev/null @@ -1,1496 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.protocol; - - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.core.Is.is; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSIdentifier; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4.ProtocolType; -import org.onosproject.bgpio.protocol.linkstate.NodeDescriptors; -import org.onosproject.bgpio.protocol.ver4.BgpPathAttributes; -import org.onosproject.bgpio.types.As4Path; -import org.onosproject.bgpio.types.AsPath; -import org.onosproject.bgpio.types.AutonomousSystemTlv; -import org.onosproject.bgpio.types.BgpHeader; -import org.onosproject.bgpio.types.BgpLSIdentifierTlv; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.IPReachabilityInformationTlv; -import org.onosproject.bgpio.types.IsIsNonPseudonode; -import org.onosproject.bgpio.types.IsIsPseudonode; -import org.onosproject.bgpio.types.Med; -import org.onosproject.bgpio.types.MpReachNlri; -import org.onosproject.bgpio.types.MpUnReachNlri; -import org.onosproject.bgpio.types.Origin; -import org.onosproject.bgpio.types.NextHop; -import org.onosproject.bgpio.types.LocalPref; -import org.onosproject.bgpio.types.Origin.ORIGINTYPE; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; - -/** - * Test cases for BGP update Message. - */ -public class BgpUpdateMsgTest { - protected static final Logger log = LoggerFactory.getLogger(BgpUpdateMsgTest.class); - public static final byte[] MARKER = new byte[]{(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 byte UPDATE_MSG_TYPE = 0x2; - - /** - * This test case checks update message with no withdrawn routes - * and path attributes. - */ - @Test - public void bgpUpdateMessageTest01() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x17, 0x02, 0x00, 0x00, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - BgpUpdateMsg other = (BgpUpdateMsg) message; - - assertThat(other.getHeader().getMarker(), is(MARKER)); - assertThat(other.getHeader().getType(), is(UPDATE_MSG_TYPE)); - assertThat(other.getHeader().getLength(), is((short) 23)); - } - - /** - * In this test case, Marker is set as 0 in input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest02() throws BgpParseException { - byte[] updateMsg = new byte[] {(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, - 0x00, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, - (byte) 0xff, (byte) 0xff, 0x00, 0x17, 0x02, 0x00, 0x00, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid message length is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest03() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid message type is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest04() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x17, 0x06, 0x00, 0x00, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * This test case checks update message with withdrawn routes. - */ - @Test - public void bgpUpdateMessageTest05() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x1b, 0x02, 0x00, 0x04, 0x18, 0x0a, 0x01, 0x01, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - BgpUpdateMsg other = (BgpUpdateMsg) message; - - assertThat(other.getHeader().getMarker(), is(MARKER)); - assertThat(other.getHeader().getType(), is(UPDATE_MSG_TYPE)); - assertThat(other.getHeader().getLength(), is((short) 27)); - - ListIterator listIterator1 = other.withdrawnRoutes().listIterator(); - byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00}; - - IpPrefix testPrefixValue = listIterator1.next(); - assertThat(testPrefixValue.prefixLength(), is((int) 24)); - assertThat(testPrefixValue.address().toOctets(), is(prefix)); - } - - /** - * In this test case, Invalid withdrawn route length is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest06() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x1b, 0x02, 0x00, 0x04, 0x19, 0x0a, 0x01, 0x01, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * This test case checks update message with path attributes. - */ - @Test - public void bgpUpdateMessageTest07() throws BgpParseException { - byte[] updateMsg = new byte [] {(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, 0x00, 0x3f, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x40, 0x01, 0x01, - 0x00, 0x40, 0x02, 0x00, 0x40, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, (byte) 0x80, 0x04, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x05, 0x04, 0x00, 0x00, 0x00, 0x64, 0x18, 0x0a, 0x1e, 0x03, 0x18, 0x0a, 0x1e, - 0x02, 0x18, 0x0a, 0x1e, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - BgpUpdateMsg other = (BgpUpdateMsg) message; - - assertThat(other.getHeader().getMarker(), is(MARKER)); - assertThat(other.getHeader().getType(), is(UPDATE_MSG_TYPE)); - assertThat(other.getHeader().getLength(), is((short) 63)); - - BgpValueType testPathAttribute; - Origin origin; - AsPath asPath; - NextHop nexthop; - Med med; - LocalPref localPref; - - List pathAttributes = new LinkedList<>(); - BgpPathAttributes actualpathAttribute = other.bgpPathAttributes(); - pathAttributes = actualpathAttribute.pathAttributes(); - ListIterator listIterator = pathAttributes.listIterator(); - ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP; - - testPathAttribute = listIterator.next(); - origin = (Origin) testPathAttribute; - assertThat(origin.origin(), is(originValue)); - - testPathAttribute = listIterator.next(); // AS PATH value is empty in hex dump - asPath = (AsPath) testPathAttribute; - List asPathValues = asPath.asPathSeq(); - assertThat(asPathValues.isEmpty(), is(true)); - - testPathAttribute = listIterator.next(); - nexthop = (NextHop) testPathAttribute; - byte[] nextHopAddr = new byte[] {0x03, 0x03, 0x03, 0x03}; - assertThat(nexthop.nextHop().toOctets(), is(nextHopAddr)); - - testPathAttribute = listIterator.next(); - med = (Med) testPathAttribute; - assertThat(med.med(), is(0)); - - testPathAttribute = listIterator.next(); - localPref = (LocalPref) testPathAttribute; - assertThat(localPref.localPref(), is(100)); - - ListIterator listIterator1 = other.nlri().listIterator(); - byte[] prefix = new byte[] {0x0a, 0x1e, 0x03, 0x00}; - - IpPrefix testPrefixValue = listIterator1.next(); - assertThat(testPrefixValue.prefixLength(), is((int) 24)); - assertThat(testPrefixValue.address().toOctets(), is(prefix)); - } - - /** - * In this test case, Invalid ORIGIN flags is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest08() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x60, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x49, //path attribute len - (byte) 0xff, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x34, 0x40, 0x04, 0x47, //mpreach with safi = 71 - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid ORIGIN value is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest09() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x60, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x49, //path attribute len - (byte) 0xff, 0x01, 0x04, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x34, 0x40, 0x04, 0x47, //mpreach with safi = 71 - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, update message without path attribute is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest10() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x1a, 0x02, 0x00, 0x04, 0x18, 0x0a, 0x01, 0x01, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, update message with incorrect path attribute length is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest11() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x1b, 0x02, 0x00, 0x04, 0x18, 0x0a, 0x01, 0x01, 0x00, 0x01}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid MED flags is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest12() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x60, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x49, //path attribute len - (byte) 0xff, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0xff, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x34, 0x40, 0x04, 0x47, //mpreach with safi = 71 - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid AS Path flags is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest13() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x60, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x49, //path attribute len - (byte) 0xff, 0x01, 0x01, 0x00, //origin - (byte) 0xff, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x34, 0x40, 0x04, 0x47, //mpreach with safi = 71 - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid MP reach flags is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest14() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x60, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x49, //path attribute len - (byte) 0xff, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0xff, 0x0e, 0x34, 0x40, 0x04, 0x47, //mpreach with safi = 71 - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid SAFI is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest15() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x60, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x49, //path attribute len - (byte) 0xff, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x34, 0x40, 0x04, 0x49, //mpreach with safi = 71 - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid AFI is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest16() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x60, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x49, //path attribute len - (byte) 0xff, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x34, 0x40, 0x06, 0x47, //mpreach with safi = 71 - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid res is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest17() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x60, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x49, //path attribute len - (byte) 0xff, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x34, 0x40, 0x04, 0x47, //mpreach with safi = 71 - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x01, //reserved - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * This test case checks update message with node NLRI. - */ - @Test - public void bgpUpdateMessageTest18() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x60, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x49, //path attribute len - 0x04, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x34, 0x40, 0x04, 0x47, //mpreach with safi = 71 - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - assertThat(message, instanceOf(BgpUpdateMsg.class)); - BgpUpdateMsg other = (BgpUpdateMsg) message; - - assertThat(other.getHeader().getMarker(), is(MARKER)); - assertThat(other.getHeader().getType(), is(UPDATE_MSG_TYPE)); - assertThat(other.getHeader().getLength(), is((short) 96)); - - BgpValueType testPathAttribute; - Origin origin; - AsPath asPath; - Med med; - MpReachNlri mpReach; - List pathAttributes = new LinkedList<>(); - BgpPathAttributes actualpathAttribute = other.bgpPathAttributes(); - pathAttributes = actualpathAttribute.pathAttributes(); - ListIterator listIterator = pathAttributes.listIterator(); - ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP; - - testPathAttribute = listIterator.next(); - origin = (Origin) testPathAttribute; - assertThat(origin.origin(), is(originValue)); - - testPathAttribute = listIterator.next(); - asPath = (AsPath) testPathAttribute; - ListIterator listIterator2 = asPath.asPathSeq().listIterator(); - assertThat(listIterator2.next(), is((short) 65001)); - - testPathAttribute = listIterator.next(); - med = (Med) testPathAttribute; - assertThat(med.med(), is(0)); - - testPathAttribute = listIterator.next(); - mpReach = (MpReachNlri) testPathAttribute; - assertThat(mpReach.mpReachNlriLen(), is((int) 52)); - assertThat(mpReach.getType(), is((short) 14)); - - List testMpReachNlri = new LinkedList<>(); - testMpReachNlri = mpReach.mpReachNlri(); - - ListIterator list1 = testMpReachNlri.listIterator(); - BgpLSNlri testnlri = list1.next(); - NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.NODE; - ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate. - BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO; - assertThat(testnlri.getIdentifier(), is((long) 0)); - assertThat(testnlri.getNlriType(), is(nlriType)); - assertThat(testnlri.getProtocolId(), is(protocolId)); - - BgpNodeLSNlriVer4 testNodenlri = (BgpNodeLSNlriVer4) testnlri; - - BgpNodeLSIdentifier testLocalNodeDescriptors = testNodenlri.getLocalNodeDescriptors(); - - List testSubTlvs = new LinkedList<>(); - NodeDescriptors localNodeDescriptors = testLocalNodeDescriptors.getNodedescriptors(); - testSubTlvs = localNodeDescriptors.getSubTlvs(); - ListIterator subtlvlist1 = testSubTlvs.listIterator(); - - AutonomousSystemTlv testAutonomousSystemTlv = (AutonomousSystemTlv) subtlvlist1.next(); - assertThat(testAutonomousSystemTlv.getAsNum(), is(2222)); - assertThat(testAutonomousSystemTlv.getType(), is((short) 512)); - - BgpLSIdentifierTlv testBGPLSIdentifierTlv = (BgpLSIdentifierTlv) subtlvlist1.next(); - assertThat(testBGPLSIdentifierTlv.getBgpLsIdentifier(), is(33686018)); - assertThat(testBGPLSIdentifierTlv.getType(), is((short) 513)); - - IsIsNonPseudonode testIsIsNonPseudonode = (IsIsNonPseudonode) subtlvlist1.next(); - byte[] expISONodeID = new byte[] {0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; - assertThat(testIsIsNonPseudonode.getISONodeID(), is(expISONodeID)); - assertThat(testIsIsNonPseudonode.getType(), is((short) 515)); - - } - - /** - * This test case checks update message with prefix NLRI. - */ - @Test - public void bgpUpdateMessageTest19() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, (byte) 0xd6, 0x02, 0x00, 0x04, - 0x18, 0x0a, 0x01, 0x01, //withdrawn routes - 0x00, (byte) 0xbb, //path attribute len - 0x04, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x90, 0x0e, 0x00, (byte) 0xa5, 0x40, 0x04, 0x47, //mpreach - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x03, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x1a, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, - (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x03, 0x00, 0x06, 0x19, 0x21, 0x68, - 0x07, 0x70, 0x01, 0x01, 0x09, 0x00, 0x05, 0x20, - (byte) 0xc0, (byte) 0xa8, 0x4d, 0x01, 0x00, 0x03, 0x00, 0x30, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, - 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, - 0x06, 0x19, 0x00, (byte) 0x95, 0x02, 0x50, 0x21, 0x01, - 0x09, 0x00, 0x05, 0x20, 0x15, 0x15, 0x15, 0x15, - 0x00, 0x03, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x1a, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, - (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x03, 0x00, 0x06, 0x02, 0x20, 0x22, - 0x02, 0x20, 0x22, 0x01, 0x09, 0x00, 0x05, 0x20, - 0x16, 0x16, 0x16, 0x16}; // prefix nlri - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - assertThat(message, instanceOf(BgpUpdateMsg.class)); - BgpUpdateMsg other = (BgpUpdateMsg) message; - - assertThat(other.getHeader().getMarker(), is(MARKER)); - assertThat(other.getHeader().getType(), is(UPDATE_MSG_TYPE)); - assertThat(other.getHeader().getLength(), is((short) 214)); - - ListIterator listIterator1 = other.withdrawnRoutes().listIterator(); - byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00}; - - IpPrefix testPrefixValue = listIterator1.next(); - assertThat(testPrefixValue.prefixLength(), is((int) 24)); - assertThat(testPrefixValue.address().toOctets(), is(prefix)); - - BgpValueType testPathAttribute; - Origin origin; - AsPath asPath; - Med med; - MpReachNlri mpReach; - List pathAttributes = new LinkedList<>(); - BgpPathAttributes actualpathAttribute = other.bgpPathAttributes(); - pathAttributes = actualpathAttribute.pathAttributes(); - ListIterator listIterator = pathAttributes.listIterator(); - ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP; - - testPathAttribute = listIterator.next(); - origin = (Origin) testPathAttribute; - assertThat(origin.origin(), is(originValue)); - - testPathAttribute = listIterator.next(); - asPath = (AsPath) testPathAttribute; - ListIterator listIterator2 = asPath.asPathSeq().listIterator(); - assertThat(listIterator2.next(), is((short) 65001)); - - testPathAttribute = listIterator.next(); - med = (Med) testPathAttribute; - assertThat(med.med(), is(0)); - - testPathAttribute = listIterator.next(); - mpReach = (MpReachNlri) testPathAttribute; - assertThat(mpReach.mpReachNlriLen(), is((int) 165)); - assertThat(mpReach.getType(), is((short) 14)); - - List testMpReachNlri = new LinkedList<>(); - testMpReachNlri = mpReach.mpReachNlri(); - - ListIterator list1 = testMpReachNlri.listIterator(); - BgpLSNlri testnlri = list1.next(); - NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.PREFIX_IPV4; - ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate. - BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO; - assertThat(testnlri.getIdentifier(), is((long) 0)); - assertThat(testnlri.getNlriType(), is(nlriType)); - assertThat(testnlri.getProtocolId(), is(protocolId)); - - BgpPrefixLSNlri testprefixnlri = (BgpPrefixLSNlri) testnlri; - - NodeDescriptors testLocalNodeDescriptors = testprefixnlri.getLocalNodeDescriptors(); - - List testSubTlvs = new LinkedList<>(); - testSubTlvs = testLocalNodeDescriptors.getSubTlvs(); - ListIterator subtlvlist1 = testSubTlvs.listIterator(); - - AutonomousSystemTlv testAutonomousSystemTlv = (AutonomousSystemTlv) subtlvlist1.next(); - assertThat(testAutonomousSystemTlv.getAsNum(), is(2222)); - assertThat(testAutonomousSystemTlv.getType(), is((short) 512)); - - BgpLSIdentifierTlv testBGPLSIdentifierTlv = (BgpLSIdentifierTlv) subtlvlist1.next(); - assertThat(testBGPLSIdentifierTlv.getBgpLsIdentifier(), is(33686018)); - assertThat(testBGPLSIdentifierTlv.getType(), is((short) 513)); - - IsIsNonPseudonode testIsIsNonPseudonode = (IsIsNonPseudonode) subtlvlist1.next(); - byte[] expISONodeID = new byte[] {0x19, 0x21, 0x68, 0x07, 0x70, 0x01}; - assertThat(testIsIsNonPseudonode.getISONodeID(), is(expISONodeID)); - assertThat(testIsIsNonPseudonode.getType(), is((short) 515)); - - List testPrefixDescriptors = new LinkedList<>(); - testPrefixDescriptors = testprefixnlri.getPrefixdescriptor(); - ListIterator subtlvlist2 = testPrefixDescriptors.listIterator(); - IPReachabilityInformationTlv testIPReachabilityInformationTlv = (IPReachabilityInformationTlv) - subtlvlist2.next(); - byte[] address = new byte[] {(byte) 0xc0, (byte) 0xa8, 0x4d, 0x01}; - IpPrefix prefix1 = IpPrefix.valueOf(IpAddress.Version.INET, address, 32); - assertThat(testIPReachabilityInformationTlv.getPrefixValue(), is(prefix1)); - assertThat(testIPReachabilityInformationTlv.getPrefixLen(), is((byte) 32)); - } - - /** - * This test case checks update message with link NLRI. - */ - @Test - public void bgpUpdateMessageTest20() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, (byte) 0x83, 0x02, 0x00, 0x04, - 0x18, 0x0a, 0x01, 0x01, //withdrawn routes - 0x00, 0x68, //path attribute len - 0x04, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00, - (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, - 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19, - 0x00, (byte) 0x95, 0x02, 0x50, 0x21//link nlri - }; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message = null; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - assertThat(message, instanceOf(BgpUpdateMsg.class)); - BgpUpdateMsg other = (BgpUpdateMsg) message; - - assertThat(other.getHeader().getMarker(), is(MARKER)); - assertThat(other.getHeader().getType(), is(UPDATE_MSG_TYPE)); - assertThat(other.getHeader().getLength(), is((short) 131)); - - ListIterator listIterator1 = other.withdrawnRoutes().listIterator(); - byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00}; - - IpPrefix testPrefixValue = listIterator1.next(); - assertThat(testPrefixValue.prefixLength(), is((int) 24)); - assertThat(testPrefixValue.address().toOctets(), is(prefix)); - - BgpValueType testPathAttribute; - Origin origin; - AsPath asPath; - Med med; - MpReachNlri mpReach; - - List pathAttributes = new LinkedList<>(); - BgpPathAttributes actualpathAttribute = other.bgpPathAttributes(); - pathAttributes = actualpathAttribute.pathAttributes(); - ListIterator listIterator = pathAttributes.listIterator(); - ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP; - - testPathAttribute = listIterator.next(); - origin = (Origin) testPathAttribute; - assertThat(origin.origin(), is(originValue)); - - testPathAttribute = listIterator.next(); - asPath = (AsPath) testPathAttribute; - ListIterator listIterator2 = asPath.asPathSeq().listIterator(); - assertThat(listIterator2.next(), is((short) 65001)); - - testPathAttribute = listIterator.next(); - med = (Med) testPathAttribute; - assertThat(med.med(), is(0)); - - testPathAttribute = listIterator.next(); - mpReach = (MpReachNlri) testPathAttribute; - assertThat(mpReach.mpReachNlriLen(), is((int) 83)); - assertThat(mpReach.getType(), is((short) 14)); - - List testMpReachNlri = new LinkedList<>(); - testMpReachNlri = mpReach.mpReachNlri(); - - ListIterator list1 = testMpReachNlri.listIterator(); - BgpLSNlri testnlri = list1.next(); - NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.LINK; - ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate. - BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO; - assertThat(testnlri.getIdentifier(), is((long) 0)); - assertThat(testnlri.getNlriType(), is(nlriType)); - assertThat(testnlri.getProtocolId(), is(protocolId)); - - BgpLinkLsNlriVer4 testlinknlri = (BgpLinkLsNlriVer4) testnlri; - - NodeDescriptors testLocalNodeDescriptors = testlinknlri.localNodeDescriptors(); - - List testSubTlvs = new LinkedList<>(); - testSubTlvs = testLocalNodeDescriptors.getSubTlvs(); - ListIterator subtlvlist1 = testSubTlvs.listIterator(); - - AutonomousSystemTlv testAutonomousSystemTlv = (AutonomousSystemTlv) subtlvlist1.next(); - - assertThat(testAutonomousSystemTlv.getAsNum(), is(2222)); - assertThat(testAutonomousSystemTlv.getType(), is((short) 512)); - - BgpLSIdentifierTlv testBGPLSIdentifierTlv = (BgpLSIdentifierTlv) subtlvlist1.next(); - assertThat(testBGPLSIdentifierTlv.getBgpLsIdentifier(), is(33686018)); - assertThat(testBGPLSIdentifierTlv.getType(), is((short) 513)); - - IsIsPseudonode testIsIsPseudonode = (IsIsPseudonode) subtlvlist1.next(); - assertThat(testIsIsPseudonode.getPSNIdentifier(), is((byte) 3)); - assertThat(testIsIsPseudonode.getType(), is((short) 515)); - - NodeDescriptors testRemoteNodeDescriptors = testlinknlri.remoteNodeDescriptors(); - testSubTlvs = testRemoteNodeDescriptors.getSubTlvs(); - ListIterator subtlvlist2 = testSubTlvs.listIterator(); - - testAutonomousSystemTlv = (AutonomousSystemTlv) subtlvlist2.next(); - - assertThat(testAutonomousSystemTlv.getAsNum(), is(2222)); - assertThat(testAutonomousSystemTlv.getType(), is((short) 512)); - - testBGPLSIdentifierTlv = (BgpLSIdentifierTlv) subtlvlist2.next(); - assertThat(testBGPLSIdentifierTlv.getBgpLsIdentifier(), is(33686018)); - assertThat(testBGPLSIdentifierTlv.getType(), is((short) 513)); - - IsIsNonPseudonode testIsIsNonPseudonode = (IsIsNonPseudonode) subtlvlist2.next(); - byte[] expISONodeID = new byte[] {0x19, 0x00, (byte) 0x95, 0x02, 0x50, 0x21}; - assertThat(testIsIsNonPseudonode.getISONodeID(), is(expISONodeID)); - assertThat(testIsIsNonPseudonode.getType(), is((short) 515)); - } - - /** - * In this test case, Invalid withdrawn route length is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest21() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x1b, 0x02, 0x00, 0x07, 0x18, 0x0a, 0x01, 0x01, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid withdrawn route length is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest22() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x25, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x0e, //path attribute len - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00}; //med - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Mandatory attributes are not given in input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest23() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x29, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x12, //path attribute len - 0x0e, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00}; //med - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid origin length is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest24() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x29, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x12, //path attribute len - 0x04, 0x01, 0x02, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00}; //med - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid origin value is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest25() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x29, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x12, //path attribute len - 0x04, 0x01, 0x01, 0x04, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00}; //med - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid descriptor type in node nlri is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest26() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x60, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x49, //path attribute len - 0x04, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x34, 0x40, 0x04, 0x47, //mpreach with safi = 71 - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, Invalid node nlri length field in is given as input and expecting - * an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest27() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x60, 0x02, 0x00, 0x00, //withdrawn len - 0x00, 0x49, //path attribute len - 0x04, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x34, 0x40, 0x04, 0x47, //mpreach with safi = 71 - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, withdrawn routes with prefix length 0 is given as input and expecting - * an exception. - */ - @Test - public void bgpUpdateMessageTest28() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, //marker - 0x00, 0x18, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * In this test case, update message without total Path Attribute Length field is given as - * input and expecting an exception. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest29() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, //marker - 0x00, 0x16, 0x02, 0x00, 0x01, 0x00}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * This test case checks update message with as4 path attribute. - */ - @Test - public void bgpUpdateMessageTest30() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, - 0x00, 0x3a, 0x02, 0x00, 0x00, 0x00, 0x21, 0x40, 0x01, 0x01, 0x00, (byte) 0xc0, - 0x11, 0x0a, 0x02, 0x02, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x28, 0x00, 0x01, 0x40, - 0x02, 0x06, 0x02, 0x02, 0x5b, (byte) 0xa0, 0x5b, (byte) 0xa0, 0x40, 0x03, 0x04, - (byte) 0xac, 0x10, 0x03, 0x01, 0x08, 0x28}; - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message = null; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - assertThat(message, instanceOf(BgpUpdateMsg.class)); - BgpUpdateMsg other = (BgpUpdateMsg) message; - - assertThat(other.getHeader().getMarker(), is(MARKER)); - assertThat(other.getHeader().getType(), is(UPDATE_MSG_TYPE)); - assertThat(other.getHeader().getLength(), is((short) 58)); - - BgpValueType testPathAttribute; - Origin origin; - As4Path as4Path; - AsPath asPath; - NextHop nextHop; - - List pathAttributes = new LinkedList<>(); - BgpPathAttributes actualpathAttribute = other.bgpPathAttributes(); - pathAttributes = actualpathAttribute.pathAttributes(); - ListIterator listIterator = pathAttributes.listIterator(); - ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP; - - testPathAttribute = listIterator.next(); - origin = (Origin) testPathAttribute; - assertThat(origin.origin(), is(originValue)); - - testPathAttribute = listIterator.next(); - as4Path = (As4Path) testPathAttribute; - ListIterator listIterator2 = as4Path.as4PathSEQ().listIterator(); - assertThat(listIterator2.next(), is(655361)); - - testPathAttribute = listIterator.next(); - asPath = (AsPath) testPathAttribute; - ListIterator listIterator3 = asPath.asPathSeq().listIterator(); - assertThat(listIterator3.next(), is((short) 23456)); - - testPathAttribute = listIterator.next(); - nextHop = (NextHop) testPathAttribute; - byte[] nextHopAddr = new byte[] {(byte) 0xac, 0x10, 0x03, 0x01}; - assertThat(nextHop.nextHop().toOctets(), is(nextHopAddr)); - - ListIterator listIterator1 = other.nlri().listIterator(); - byte[] prefix = new byte[] {0x28, 0x00, 0x00, 0x00}; - - IpPrefix testPrefixValue = listIterator1.next(); - assertThat(testPrefixValue.prefixLength(), is((int) 8)); - assertThat(testPrefixValue.address().toOctets(), is(prefix)); - } - - /** - * This test case checks update message with MPUnreach. - */ - @Test - public void bgpUpdateMessageTest31() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, 0x5e, 0x02, 0x00, 0x04, 0x18, 0x0a, 0x01, 0x01, //withdrawn routes - 0x00, 0x43, //path attribute len - 0x04, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0f, 0x2e, 0x40, 0x04, 0x47, //mpunreach with safi = 71 - 0x00, 0x01, 0x00, - 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x00, 0x06, 0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; //node nlri - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - assertThat(message, instanceOf(BgpUpdateMsg.class)); - BgpUpdateMsg other = (BgpUpdateMsg) message; - - assertThat(other.getHeader().getMarker(), is(MARKER)); - assertThat(other.getHeader().getType(), is(UPDATE_MSG_TYPE)); - assertThat(other.getHeader().getLength(), is((short) 94)); - - ListIterator listIterator1 = other.withdrawnRoutes().listIterator(); - byte[] prefix = new byte[] {0x0a, 0x01, 0x01, 0x00}; - - IpPrefix testPrefixValue = listIterator1.next(); - assertThat(testPrefixValue.prefixLength(), is((int) 24)); - assertThat(testPrefixValue.address().toOctets(), is(prefix)); - - BgpValueType testPathAttribute; - Origin origin; - AsPath asPath; - Med med; - MpUnReachNlri mpUnReach; - List pathAttributes = new LinkedList<>(); - BgpPathAttributes actualpathAttribute = other.bgpPathAttributes(); - pathAttributes = actualpathAttribute.pathAttributes(); - ListIterator listIterator = pathAttributes.listIterator(); - ORIGINTYPE originValue = org.onosproject.bgpio.types.Origin.ORIGINTYPE.IGP; - - testPathAttribute = listIterator.next(); - origin = (Origin) testPathAttribute; - assertThat(origin.origin(), is(originValue)); - - testPathAttribute = listIterator.next(); - asPath = (AsPath) testPathAttribute; - ListIterator listIterator2 = asPath.asPathSeq().listIterator(); - assertThat(listIterator2.next(), is((short) 65001)); - - testPathAttribute = listIterator.next(); - med = (Med) testPathAttribute; - assertThat(med.med(), is(0)); - - testPathAttribute = listIterator.next(); - mpUnReach = (MpUnReachNlri) testPathAttribute; - assertThat(mpUnReach.mpUnReachNlriLen(), is((int) 46)); - assertThat(mpUnReach.getType(), is((short) 15)); - - List testMpUnReachNlri = new LinkedList<>(); - testMpUnReachNlri = mpUnReach.mpUnReachNlri(); - - ListIterator list1 = testMpUnReachNlri.listIterator(); - BgpLSNlri testnlri = list1.next(); - NlriType nlriType = org.onosproject.bgpio.protocol.NlriType.NODE; - ProtocolType protocolId = org.onosproject.bgpio.protocol.linkstate. - BgpNodeLSNlriVer4.ProtocolType.ISIS_LEVEL_TWO; - assertThat(testnlri.getIdentifier(), is((long) 0)); - assertThat(testnlri.getNlriType(), is(nlriType)); - assertThat(testnlri.getProtocolId(), is(protocolId)); - - BgpNodeLSNlriVer4 testNodenlri = (BgpNodeLSNlriVer4) testnlri; - - BgpNodeLSIdentifier testLocalNodeDescriptors = testNodenlri.getLocalNodeDescriptors(); - - List testSubTlvs = new LinkedList<>(); - NodeDescriptors localNodeDescriptors = testLocalNodeDescriptors.getNodedescriptors(); - testSubTlvs = localNodeDescriptors.getSubTlvs(); - ListIterator subtlvlist1 = testSubTlvs.listIterator(); - - AutonomousSystemTlv testAutonomousSystemTlv = (AutonomousSystemTlv) subtlvlist1.next(); - - assertThat(testAutonomousSystemTlv.getAsNum(), is(2222)); - assertThat(testAutonomousSystemTlv.getType(), is((short) 512)); - - BgpLSIdentifierTlv testBGPLSIdentifierTlv = (BgpLSIdentifierTlv) subtlvlist1.next(); - assertThat(testBGPLSIdentifierTlv.getBgpLsIdentifier(), is(33686018)); - assertThat(testBGPLSIdentifierTlv.getType(), is((short) 513)); - - IsIsNonPseudonode testIsIsNonPseudonode = (IsIsNonPseudonode) subtlvlist1.next(); - byte[] expISONodeID = new byte[] {0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; - assertThat(testIsIsNonPseudonode.getISONodeID(), is(expISONodeID)); - assertThat(testIsIsNonPseudonode.getType(), is((short) 515)); - } - - /** - * This test case checks update message with invalid mpreach packet. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest32() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, (byte) 0xd6, 0x02, 0x00, 0x04, - 0x18, 0x0a, 0x01, 0x01, //withdrawn routes - 0x00, (byte) 0xbb, //path attribute len - 0x04, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x90, 0x0e, 0x00, (byte) 0xa5, 0x40, 0x04, 0x47, //mpreach - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x03, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x1a, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, - (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x03, 0x00, 0x06, 0x19, 0x21, 0x68, - 0x07, 0x70, 0x01, 0x01, 0x09, 0x00, 0x05, 0x20, - (byte) 0xc0, (byte) 0xa8, 0x4d, 0x01, 0x00, 0x03, 0x00, 0x30, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, - 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, - 0x06, 0x19, 0x00, (byte) 0x95, 0x02, 0x50, 0x21, 0x01, - 0x09, 0x00, 0x05, 0x20, 0x15, 0x15, 0x15, 0x15, - 0x00, 0x03, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x1a, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, - (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x03, 0x00, 0x06, 0x02, 0x20, 0x22, - 0x02, 0x20, 0x22, 0x01, 0x09, 0x00, 0x05, 0x20, - 0x16, 0x16, 0x16, 0x16}; // prefix nlri - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * This test case checks update message with invalid prefix nlri length in input. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest33() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, (byte) 0xd6, 0x02, 0x00, 0x04, - 0x18, 0x0a, 0x01, 0x01, //withdrawn routes - 0x00, (byte) 0xbb, //path attribute len - 0x04, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x90, 0x0e, 0x00, (byte) 0xa5, 0x40, 0x04, 0x47, //mpreach - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x03, 0x00, 0x35, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x1a, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, - (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x03, 0x00, 0x06, 0x19, 0x21, 0x68, - 0x07, 0x70, 0x01, 0x01, 0x09, 0x00, 0x05, 0x20, - (byte) 0xc0, (byte) 0xa8, 0x4d, 0x01, 0x00, 0x03, 0x00, 0x30, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, - 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, - 0x06, 0x19, 0x00, (byte) 0x95, 0x02, 0x50, 0x21, 0x01, - 0x09, 0x00, 0x05, 0x20, 0x15, 0x15, 0x15, 0x15, - 0x00, 0x03, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x1a, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, - (byte) 0xae, 0x02, 0x01, 0x00, 0x04, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x03, 0x00, 0x06, 0x02, 0x20, 0x22, - 0x02, 0x20, 0x22, 0x01, 0x09, 0x00, 0x05, 0x20, - 0x16, 0x16, 0x16, 0x16}; // prefix nlri - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } - - /** - * This test case checks update message with invalid link nlri length in input. - */ - @Test(expected = BgpParseException.class) - public void bgpUpdateMessageTest34() throws BgpParseException { - byte[] updateMsg = new byte[] {(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, 0x00, (byte) 0x83, 0x02, 0x00, 0x04, - 0x18, 0x0a, 0x01, 0x01, //withdrawn routes - 0x00, 0x68, //path attribute len - 0x04, 0x01, 0x01, 0x00, //origin - 0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, (byte) 0xe9, //as_path - (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, //med - (byte) 0x80, 0x0e, 0x53, 0x40, 0x04, 0x47, //mpreach - 0x04, 0x04, 0x00, 0x00, 0x01, //nexthop - 0x00, //reserved - 0x00, 0x02, 0x00, 0x48, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, 0x04, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x07, 0x19, 0x00, - (byte) 0x95, 0x02, 0x50, 0x21, 0x03, 0x01, 0x01, 0x00, 0x1a, 0x02, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, (byte) 0xae, 0x02, 0x01, 0x00, - 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x06, 0x19, - 0x00, (byte) 0x95, 0x02, 0x50, 0x21}; //link nlri - - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(updateMsg); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - BgpMessage message; - BgpHeader bgpHeader = new BgpHeader(); - - message = reader.readFrom(buffer, bgpHeader); - - assertThat(message, instanceOf(BgpUpdateMsg.class)); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AreaIdTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AreaIdTest.java deleted file mode 100644 index e11564ab..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AreaIdTest.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.bgpio.types; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for AreaID Tlv. - */ -public class AreaIdTest { - private final int value1 = 10; - private final int value2 = 20; - private final AreaIDTlv tlv1 = AreaIDTlv.of(value1); - private final AreaIDTlv sameAsTlv1 = AreaIDTlv.of(value1); - private final AreaIDTlv tlv2 = AreaIDTlv.of(value2); - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/As4PathTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/As4PathTest.java deleted file mode 100755 index 3ea56b64..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/As4PathTest.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.bgpio.types; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for As4Path BGP Path Attribute. - */ -public class As4PathTest { - //Two scenarios as4path set and sequence - private final List as4pathSet1 = new ArrayList<>(); - private final List as4pathSeq1 = new ArrayList<>(); - private final List as4pathSet2 = new ArrayList<>(); - private final List as4pathSeq2 = new ArrayList<>(); - private final As4Path attr1 = new As4Path(as4pathSet1, null); - private final As4Path sameAsAttr1 = new As4Path(as4pathSet1, null); - private final As4Path attr2 = new As4Path(as4pathSet2, null); - private final As4Path attr3 = new As4Path(null, as4pathSeq1); - private final As4Path sameAsAttr3 = new As4Path(null, as4pathSeq1); - private final As4Path attr4 = new As4Path(null, as4pathSeq2); - - @Test - public void basics() { - as4pathSet1.add(197358); - as4pathSet1.add(12883); - as4pathSet2.add(2008989); - as4pathSeq1.add(3009009); - as4pathSeq2.add(409900); - new EqualsTester() - .addEqualityGroup(attr1, sameAsAttr1) - .addEqualityGroup(attr2) - .addEqualityGroup(attr3, sameAsAttr3) - .addEqualityGroup(attr4) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AsPathTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AsPathTest.java deleted file mode 100644 index e56ec5a5..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AsPathTest.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.bgpio.types; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for AsPath BGP Path Attribute. - */ -public class AsPathTest { - //Two scenarios aspath set and sequence - private final List aspathSet1 = new ArrayList<>(); - private final List aspathSet2 = new ArrayList<>(); - private final List aspathSeq1 = new ArrayList<>(); - private final List aspathSeq2 = new ArrayList<>(); - private final AsPath attr1 = new AsPath(aspathSet1, null); - private final AsPath sameAsAttr1 = new AsPath(aspathSet1, null); - private final AsPath attr2 = new AsPath(aspathSet2, null); - private final AsPath attr3 = new AsPath(null, aspathSeq1); - private final AsPath sameAsAttr3 = new AsPath(null, aspathSeq1); - private final AsPath attr4 = new AsPath(null, aspathSeq2); - - @Test - public void basics() { - aspathSet1.add((short) 100); - aspathSet1.add((short) 300); - aspathSet2.add((short) 200); - aspathSeq2.add((short) 400); - aspathSeq1.add((short) 300); - new EqualsTester() - .addEqualityGroup(attr1, sameAsAttr1) - .addEqualityGroup(attr2) - .addEqualityGroup(attr3, sameAsAttr3) - .addEqualityGroup(attr4) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AutonomousSystemTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AutonomousSystemTest.java deleted file mode 100644 index 1695583b..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/AutonomousSystemTest.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.bgpio.types; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for AutonomousSystem Tlv. - */ -public class AutonomousSystemTest { - private final int value1 = 101; - private final int value2 = 201; - private final AutonomousSystemTlv tlv1 = AutonomousSystemTlv.of(value1); - private final AutonomousSystemTlv sameAsTlv1 = AutonomousSystemTlv.of(value1); - private final AutonomousSystemTlv tlv2 = AutonomousSystemTlv.of(value2); - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpLSIdentifierTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpLSIdentifierTest.java deleted file mode 100644 index 59cf96fa..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpLSIdentifierTest.java +++ /dev/null @@ -1,39 +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.bgpio.types; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGPLSIdentifier Tlv. - */ -public class BgpLSIdentifierTest { - private final int value1 = 8738; - private final int value2 = 13107; - private final BgpLSIdentifierTlv tlv1 = BgpLSIdentifierTlv.of(value1); - private final BgpLSIdentifierTlv sameAsTlv1 = new BgpLSIdentifierTlv(value1); - private final BgpLSIdentifierTlv tlv2 = new BgpLSIdentifierTlv(value2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPReachabilityInformationTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPReachabilityInformationTest.java deleted file mode 100644 index 7bea518a..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPReachabilityInformationTest.java +++ /dev/null @@ -1,40 +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.bgpio.types; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for IPReachabilityInformation Tlv. - */ -public class IPReachabilityInformationTest { - private final byte[] value1 = new byte[] {(byte) 0xc0, (byte) 0xa8, 0x4d, 0x01}; - private final byte[] value2 = new byte[] {(byte) 0xc0}; - private final IPReachabilityInformationTlv tlv1 = IPReachabilityInformationTlv.of((byte) 0x17, value1, (short) 4); - private final IPReachabilityInformationTlv sameAsTlv1 = IPReachabilityInformationTlv - .of((byte) 0x17, value1, (short) 4); - private final IPReachabilityInformationTlv tlv2 = IPReachabilityInformationTlv.of((byte) 0x05, value2, (short) 1); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPv4AddressTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPv4AddressTest.java deleted file mode 100755 index fdb71189..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPv4AddressTest.java +++ /dev/null @@ -1,40 +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.bgpio.types; - -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import com.google.common.testing.EqualsTester; - -/** - * Test for IPv4Address Tlv. - */ -public class IPv4AddressTest { - private final Ip4Address value1 = Ip4Address.valueOf("127.0.0.1"); - private final Ip4Address value2 = Ip4Address.valueOf("127.0.0.1"); - private final IPv4AddressTlv tlv1 = IPv4AddressTlv.of(value1, (short) 259); - private final IPv4AddressTlv sameAsTlv1 = IPv4AddressTlv.of(value1, (short) 259); - private final IPv4AddressTlv tlv2 = IPv4AddressTlv.of(value2, (short) 260); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPv6AddressTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPv6AddressTest.java deleted file mode 100644 index 781935b4..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IPv6AddressTest.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.bgpio.types; - -import org.junit.Test; -import org.onlab.packet.Ip6Address; - -import com.google.common.testing.EqualsTester; - -/** - * Test for IPv6Address Tlv. - */ -public class IPv6AddressTest { - private final Ip6Address value1 = Ip6Address.valueOf("2001:db8:0:0:0:0:2:1"); - private final Ip6Address value2 = Ip6Address.valueOf("2001:db8:0:0:0:0:2:1"); - private final IPv6AddressTlv tlv1 = IPv6AddressTlv.of(value1, (short) 261); - private final IPv6AddressTlv sameAsTlv1 = IPv6AddressTlv.of(value1, (short) 261); - private final IPv6AddressTlv tlv2 = IPv6AddressTlv.of(value2, (short) 262); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsNonPseudonodeTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsNonPseudonodeTest.java deleted file mode 100644 index 7ce4d5d3..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsNonPseudonodeTest.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.bgpio.types; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for IsIsNonPseudonode Tlv. - */ -public class IsIsNonPseudonodeTest { - private final byte[] value1 = new byte[] {0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x58}; - private final byte[] value2 = new byte[] {0x19, 0x00, (byte) 0x95, 0x01, (byte) 0x90, 0x59}; - private final IsIsNonPseudonode tlv1 = IsIsNonPseudonode.of(value1); - private final IsIsNonPseudonode sameAsTlv1 = IsIsNonPseudonode.of(value1); - private final IsIsNonPseudonode tlv2 = IsIsNonPseudonode.of(value2); - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.java deleted file mode 100644 index a2a7c2b5..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/IsIsPseudonodeTest.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.bgpio.types; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for IsIsPseudonode Tlv. - */ -public class IsIsPseudonodeTest { - private final byte[] value1 = new byte[] {0x01, 0x02, 0x01, 0x02, 0x01, 0x02}; - 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); - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTest.java deleted file mode 100644 index f1510b17..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTest.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.bgpio.types; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for LinkLocalRemoteIdentifiers Tlv. - */ -public class LinkLocalRemoteIdentifiersTest { - private final int value1 = 0x12101010; - private final int value2 = 0x12101012; - private final LinkLocalRemoteIdentifiersTlv tlv1 = LinkLocalRemoteIdentifiersTlv.of(value1, value2); - private final LinkLocalRemoteIdentifiersTlv sameAsTlv1 = LinkLocalRemoteIdentifiersTlv.of(value1, value2); - private final LinkLocalRemoteIdentifiersTlv tlv2 = LinkLocalRemoteIdentifiersTlv.of(value2, value1); - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/LocalPrefTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/LocalPrefTest.java deleted file mode 100644 index 1bd34385..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/LocalPrefTest.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.bgpio.types; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for LocalPref BGP Path Attribute. - */ -public class LocalPrefTest { - private final int value1 = 800; - private final int value2 = 300; - private final LocalPref attr1 = new LocalPref(value1); - private final LocalPref sameAsAttr1 = new LocalPref(value1); - private final LocalPref attr2 = new LocalPref(value2); - - @Test - public void testEquality() { - new EqualsTester().addEqualityGroup(attr1, sameAsAttr1).addEqualityGroup(attr2).testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/MedTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/MedTest.java deleted file mode 100644 index 2ee5b33f..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/MedTest.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.bgpio.types; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for MED BGP Path Attribute. - */ -public class MedTest { - private final int value1 = 800; - private final int value2 = 200; - private final Med attr1 = new Med(value1); - private final Med sameAsAttr1 = new Med(value1); - private final Med attr2 = new Med(value2); - - @Test - public void testEquality() { - new EqualsTester().addEqualityGroup(attr1, sameAsAttr1).addEqualityGroup(attr2).testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/NextHopTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/NextHopTest.java deleted file mode 100755 index 799419a1..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/NextHopTest.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.bgpio.types; - -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import com.google.common.testing.EqualsTester; - -/** - * Test for NextHop BGP Path Attribute. - */ -public class NextHopTest { - private final Ip4Address value1 = Ip4Address.valueOf("12.12.12.12"); - private final Ip4Address value2 = Ip4Address.valueOf("12.12.12.13"); - private final NextHop attr1 = new NextHop(value1); - private final NextHop sameAsAttr1 = new NextHop(value1); - private final NextHop attr2 = new NextHop(value2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(attr1, sameAsAttr1) - .addEqualityGroup(attr2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OriginTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OriginTest.java deleted file mode 100644 index da7b5570..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OriginTest.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.bgpio.types; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for Origin BGP Path Attribute. - */ -public class OriginTest { - private final byte value1 = 0x01; - private final byte value2 = 0x02; - private final Origin attr1 = new Origin(value1); - private final Origin sameAsAttr1 = new Origin(value1); - private final Origin attr2 = new Origin(value2); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(attr1, sameAsAttr1) - .addEqualityGroup(attr2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OspfPseudonodeTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OspfPseudonodeTest.java deleted file mode 100644 index a8002311..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OspfPseudonodeTest.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.bgpio.types; - -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import com.google.common.testing.EqualsTester; - -/** - * Test for OSPFPseudonode Tlv. - */ -public class OspfPseudonodeTest { - private final int value1 = 0xc3223409; - private final int value2 = 0xc3223406; - private final Ip4Address drInterface1 = Ip4Address.valueOf(0xaf91e01); - private final Ip4Address drInterface2 = Ip4Address.valueOf(0xaf91e02); - private final OSPFPseudonode tlv1 = OSPFPseudonode.of(value1, drInterface1); - private final OSPFPseudonode sameAsTlv1 = OSPFPseudonode.of(value1, drInterface1); - private final OSPFPseudonode tlv2 = OSPFPseudonode.of(value2, drInterface2); - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OspfRouteTypeTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OspfRouteTypeTest.java deleted file mode 100644 index 859bdbe5..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/OspfRouteTypeTest.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.bgpio.types; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for OSPFRouteType Tlv. - */ -public class OspfRouteTypeTest { - private final byte value1 = 5; - private final byte value2 = 4; - private final OSPFRouteTypeTlv tlv1 = OSPFRouteTypeTlv.of(value1); - private final OSPFRouteTypeTlv sameAsTlv1 = OSPFRouteTypeTlv.of(value1); - private final OSPFRouteTypeTlv tlv2 = OSPFRouteTypeTlv.of(value2); - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(tlv1, sameAsTlv1) - .addEqualityGroup(tlv2) - .testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlvTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlvTest.java deleted file mode 100644 index 4efb7f5b..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlvTest.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.bgpio.types.attr; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP attribute node flag. - */ -public class BgpAttrNodeFlagBitTlvTest { - - private final boolean bOverloadBit = true; - private final boolean bAttachedBit = true; - private final boolean bExternalBit = true; - private final boolean bABRBit = true; - - private final boolean bOverloadBit1 = false; - private final boolean bAttachedBit1 = false; - private final boolean bExternalBit1 = false; - private final boolean bABRBit1 = false; - - private final BgpAttrNodeFlagBitTlv data = BgpAttrNodeFlagBitTlv - .of(bOverloadBit, bAttachedBit, bExternalBit, bABRBit); - private final BgpAttrNodeFlagBitTlv sameAsData = BgpAttrNodeFlagBitTlv - .of(bOverloadBit, bAttachedBit, bExternalBit, bABRBit); - private final BgpAttrNodeFlagBitTlv diffData = BgpAttrNodeFlagBitTlv - .of(bOverloadBit1, bAttachedBit1, bExternalBit1, bABRBit1); - - @Test - public void basics() { - - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6Test.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6Test.java deleted file mode 100644 index 16ca58ee..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6Test.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.bgpio.types.attr; - -import org.junit.Test; -import org.onlab.packet.Ip6Address; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP attribute node router ID. - */ -public class BgpAttrRouterIdV6Test { - - private final short sType = 1; - private final Ip6Address ip6RouterId = Ip6Address - .valueOf("2001:0db8:0a0b:12f0:0000:0000:0000:0001"); - - private final short sType1 = 2; - private final Ip6Address ip6RouterId1 = Ip6Address - .valueOf("2004:0db8:0a0b:12f0:0000:0000:0000:0004"); - - private final BgpAttrRouterIdV6 data = BgpAttrRouterIdV6.of(ip6RouterId, - sType); - private final BgpAttrRouterIdV6 sameAsData = BgpAttrRouterIdV6 - .of(ip6RouterId, sType); - private final BgpAttrRouterIdV6 diffData = BgpAttrRouterIdV6 - .of(ip6RouterId1, sType1); - - @Test - public void basics() { - - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetricTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetricTest.java deleted file mode 100644 index ef1cfcea..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetricTest.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.bgpio.types.attr; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP link IGP metric attribute. - */ -public class BgpLinkAttrIgpMetricTest { - private final int val = 0x010203; - private final int valLen = 3; - private final int val1 = 0x01020304; - private final int val1Len = 4; - - private final BgpLinkAttrIgpMetric data = BgpLinkAttrIgpMetric.of(val, - valLen); - private final BgpLinkAttrIgpMetric sameAsData = BgpLinkAttrIgpMetric - .of(val, valLen); - private final BgpLinkAttrIgpMetric diffData = BgpLinkAttrIgpMetric - .of(val1, val1Len); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidthTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidthTest.java deleted file mode 100644 index 06fecc92..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidthTest.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.bgpio.types.attr; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP link max bandwidth attribute. - */ -public class BgpLinkAttrMaxLinkBandwidthTest { - private final float val = 0x010203; - private final short valLen = 3; - private final float val1 = 0x01020304; - private final short val1Len = 4; - - private final BgpLinkAttrMaxLinkBandwidth data = BgpLinkAttrMaxLinkBandwidth - .of(val, valLen); - private final BgpLinkAttrMaxLinkBandwidth sameAsData = BgpLinkAttrMaxLinkBandwidth - .of(val, valLen); - private final BgpLinkAttrMaxLinkBandwidth diffData = BgpLinkAttrMaxLinkBandwidth - .of(val1, val1Len); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMaskTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMaskTest.java deleted file mode 100644 index c0d7f986..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMaskTest.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.bgpio.types.attr; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for MPLS protocol mask attribute. - */ -public class BgpLinkAttrMplsProtocolMaskTest { - private final boolean val = true; - private final boolean val1 = false; - - private final BgpLinkAttrMplsProtocolMask data = BgpLinkAttrMplsProtocolMask - .of(val, val); - private final BgpLinkAttrMplsProtocolMask sameAsData = BgpLinkAttrMplsProtocolMask - .of(val, val); - private final BgpLinkAttrMplsProtocolMask diffData = BgpLinkAttrMplsProtocolMask - .of(val, val1); - - @Test - public void basics() { - - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrNameTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrNameTest.java deleted file mode 100644 index 45048527..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrNameTest.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.bgpio.types.attr; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for Link attribute name Tlv. - */ -public class BgpLinkAttrNameTest { - private final byte[] array = new byte[] {0x01, 0x02, 0x03, 0x04}; - private final byte[] array1 = new byte[] {0x01, 0x02, 0x03, 0x01}; - - private final BgpLinkAttrName isisData = BgpLinkAttrName.of(array); - private final BgpLinkAttrName sameAsIsisData = BgpLinkAttrName.of(array); - private final BgpLinkAttrName isisDiff = BgpLinkAttrName.of(array1); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(isisData, sameAsIsisData) - .addEqualityGroup(isisDiff).testEquals(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttribTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttribTest.java deleted file mode 100644 index 71d05f85..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttribTest.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.bgpio.types.attr; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for Opaque Link attribute Tlv. - */ -public class BgpLinkAttrOpaqLnkAttribTest { - private final byte[] array = new byte[] {0x01, 0x02, 0x03, 0x04}; - private final byte[] array1 = new byte[] {0x01, 0x02, 0x03, 0x01}; - - private final BgpLinkAttrOpaqLnkAttrib isisData = BgpLinkAttrOpaqLnkAttrib - .of(array); - private final BgpLinkAttrOpaqLnkAttrib sameAsIsisData = BgpLinkAttrOpaqLnkAttrib - .of(array); - private final BgpLinkAttrOpaqLnkAttrib isisDiff = BgpLinkAttrOpaqLnkAttrib - .of(array1); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(isisData, sameAsIsisData) - .addEqualityGroup(isisDiff).testEquals(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionTypeTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionTypeTest.java deleted file mode 100644 index 2fb76352..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionTypeTest.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.bgpio.types.attr; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for MPLS protocol mask attribute. - */ -public class BgpLinkAttrProtectionTypeTest { - boolean bExtraTraffic = true; - boolean bUnprotected = true; - boolean bShared = true; - boolean bDedOneIstoOne = true; - boolean bDedOnePlusOne = true; - boolean bEnhanced = true; - - boolean bExtraTraffic1 = false; - boolean bUnprotected1 = false; - boolean bShared1 = false; - boolean bDedOneIstoOne1 = false; - boolean bDedOnePlusOne1 = false; - boolean bEnhanced1 = false; - - private final BgpLinkAttrProtectionType data = BgpLinkAttrProtectionType - .of(bExtraTraffic, bUnprotected, bShared, bDedOneIstoOne, - bDedOnePlusOne, bEnhanced); - private final BgpLinkAttrProtectionType sameAsData = BgpLinkAttrProtectionType - .of(bExtraTraffic, bUnprotected, bShared, bDedOneIstoOne, - bDedOnePlusOne, bEnhanced); - private final BgpLinkAttrProtectionType diffData = BgpLinkAttrProtectionType - .of(bExtraTraffic1, bUnprotected1, bShared1, bDedOneIstoOne1, - bDedOnePlusOne1, bEnhanced1); - - @Test - public void basics() { - - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetricTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetricTest.java deleted file mode 100644 index 9f3a7fad..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetricTest.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.bgpio.types.attr; - -import org.junit.Test; -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP link TE default metric attribute. - */ -public class BgpLinkAttrTeDefaultMetricTest { - private final int val = 0x010203; - private final int val1 = 0x01020304; - - private final BgpLinkAttrTeDefaultMetric data = BgpLinkAttrTeDefaultMetric - .of(val); - private final BgpLinkAttrTeDefaultMetric sameAsData = BgpLinkAttrTeDefaultMetric - .of(val); - private final BgpLinkAttrTeDefaultMetric diffData = BgpLinkAttrTeDefaultMetric - .of(val1); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidthTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidthTest.java deleted file mode 100644 index f1d2a1fa..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidthTest.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.bgpio.types.attr; - -import java.util.ArrayList; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP unreserved bandwidth attribute. - */ -public class BgpLinkAttrUnRsrvdLinkBandwidthTest { - ArrayList maxUnResBandwidth = new ArrayList(); - ArrayList maxUnResBandwidth1 = new ArrayList(); - short sType = 10; - - private final BgpLinkAttrUnRsrvdLinkBandwidth isisData = BgpLinkAttrUnRsrvdLinkBandwidth - .of(maxUnResBandwidth, sType); - private final BgpLinkAttrUnRsrvdLinkBandwidth sameAsIsisData = BgpLinkAttrUnRsrvdLinkBandwidth - .of(maxUnResBandwidth, sType); - private final BgpLinkAttrUnRsrvdLinkBandwidth isisDiff = BgpLinkAttrUnRsrvdLinkBandwidth - .of(maxUnResBandwidth1, sType); - - @Test - public void basics() { - - maxUnResBandwidth.add(new Float(1)); - maxUnResBandwidth.add(new Float(2)); - maxUnResBandwidth.add(new Float(3)); - maxUnResBandwidth.add(new Float(4)); - - maxUnResBandwidth1.add(new Float(1)); - maxUnResBandwidth1.add(new Float(2)); - maxUnResBandwidth1.add(new Float(3)); - maxUnResBandwidth1.add(new Float(1)); - - new EqualsTester().addEqualityGroup(isisData, sameAsIsisData) - .addEqualityGroup(isisDiff).testEquals(); - - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlagsTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlagsTest.java deleted file mode 100644 index 535518f8..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlagsTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types.attr; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP prefix IGP Flag attribute. - */ -public class BgpPrefixAttrIgpFlagsTest { - - private final boolean bisisUpDownBit = true; - private final boolean bOspfNoUnicastBit = true; - private final boolean bOspfLclAddrBit = true; - private final boolean bOspfNSSABit = true; - - private final boolean bisisUpDownBit1 = false; - private final boolean bOspfNoUnicastBit1 = false; - private final boolean bOspfLclAddrBit1 = false; - private final boolean bOspfNSSABit1 = false; - - private final BgpPrefixAttrIgpFlags data = BgpPrefixAttrIgpFlags - .of(bisisUpDownBit, bOspfNoUnicastBit, bOspfLclAddrBit, - bOspfNSSABit); - private final BgpPrefixAttrIgpFlags sameAsData = BgpPrefixAttrIgpFlags - .of(bisisUpDownBit, bOspfNoUnicastBit, bOspfLclAddrBit, - bOspfNSSABit); - private final BgpPrefixAttrIgpFlags diffData = BgpPrefixAttrIgpFlags - .of(bisisUpDownBit1, bOspfNoUnicastBit1, bOspfLclAddrBit1, - bOspfNSSABit1); - - @Test - public void basics() { - - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetricTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetricTest.java deleted file mode 100644 index fe6079fd..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetricTest.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.bgpio.types.attr; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP prefix metric attribute. - */ -public class BgpPrefixAttrMetricTest { - private final int val = 1111; - private final int val1 = 2222; - - private final BgpPrefixAttrMetric data = BgpPrefixAttrMetric.of(val); - private final BgpPrefixAttrMetric sameAsData = BgpPrefixAttrMetric.of(val); - private final BgpPrefixAttrMetric diffData = BgpPrefixAttrMetric.of(val1); - - @Test - public void basics() { - - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueDataTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueDataTest.java deleted file mode 100644 index 17dafbb7..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueDataTest.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.bgpio.types.attr; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for prefix attribute opaque data Tlv. - */ -public class BgpPrefixAttrOpaqueDataTest { - private final byte[] array = new byte[] {0x01, 0x02, 0x03, 0x04}; - private final byte[] array1 = new byte[] {0x01, 0x02, 0x03, 0x01}; - - private final BgpPrefixAttrOpaqueData isisData = BgpPrefixAttrOpaqueData - .of(array); - private final BgpPrefixAttrOpaqueData sameAsIsisData = BgpPrefixAttrOpaqueData - .of(array); - private final BgpPrefixAttrOpaqueData isisDiff = BgpPrefixAttrOpaqueData - .of(array1); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(isisData, sameAsIsisData) - .addEqualityGroup(isisDiff).testEquals(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddrTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddrTest.java deleted file mode 100644 index f6fe39f8..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddrTest.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bgpio.types.attr; - -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.Ip6Address; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP prefix metric attribute. - */ -public class BgpPrefixAttrOspfFwdAddrTest { - - private final short lsAttrLength = 4; - private final Ip4Address ip4RouterId = Ip4Address.valueOf("192.168.1.1"); - private final Ip6Address ip6RouterId = Ip6Address - .valueOf("2001:0db8:0a0b:12f0:0000:0000:0000:0001"); - - private final short lsAttrLength1 = 16; - private final Ip4Address ip4RouterId1 = Ip4Address.valueOf("192.168.1.2"); - private final Ip6Address ip6RouterId1 = Ip6Address - .valueOf("1002:0db8:0a0b:12f0:0000:0000:0000:0002"); - - private final BgpPrefixAttrOspfFwdAddr data = BgpPrefixAttrOspfFwdAddr - .of(lsAttrLength, ip4RouterId, ip6RouterId); - private final BgpPrefixAttrOspfFwdAddr sameAsData = BgpPrefixAttrOspfFwdAddr - .of(lsAttrLength, ip4RouterId, ip6RouterId); - private final BgpPrefixAttrOspfFwdAddr diffData = BgpPrefixAttrOspfFwdAddr - .of(lsAttrLength1, ip4RouterId1, ip6RouterId1); - - @Test - public void basics() { - new EqualsTester().addEqualityGroup(data, sameAsData) - .addEqualityGroup(diffData).testEquals(); - } -} diff --git a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTagTest.java b/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTagTest.java deleted file mode 100644 index 25ced61f..00000000 --- a/framework/src/onos/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTagTest.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.bgpio.types.attr; - -import java.util.ArrayList; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Test for BGP prefix route tag attribute. - */ -public class BgpPrefixAttrRouteTagTest { - ArrayList maxUnResBandwidth = new ArrayList(); - ArrayList maxUnResBandwidth1 = new ArrayList(); - - private final BgpPrefixAttrRouteTag isisData = BgpPrefixAttrRouteTag - .of(maxUnResBandwidth); - private final BgpPrefixAttrRouteTag sameAsIsisData = BgpPrefixAttrRouteTag - .of(maxUnResBandwidth); - private final BgpPrefixAttrRouteTag isisDiff = BgpPrefixAttrRouteTag - .of(maxUnResBandwidth1); - - @Test - public void basics() { - - maxUnResBandwidth.add(new Integer(1)); - maxUnResBandwidth.add(new Integer(2)); - maxUnResBandwidth.add(new Integer(3)); - maxUnResBandwidth.add(new Integer(4)); - - maxUnResBandwidth1.add(new Integer(1)); - maxUnResBandwidth1.add(new Integer(2)); - maxUnResBandwidth1.add(new Integer(3)); - maxUnResBandwidth1.add(new Integer(1)); - - new EqualsTester().addEqualityGroup(isisData, sameAsIsisData) - .addEqualityGroup(isisDiff).testEquals(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/ctl/pom.xml b/framework/src/onos/protocols/bgp/ctl/pom.xml deleted file mode 100755 index fd5f2b54..00000000 --- a/framework/src/onos/protocols/bgp/ctl/pom.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - 4.0.0 - - - org.onosproject - onos-bgp - 1.4.0-rc1 - ../pom.xml - - - onos-bgp-ctl - bundle - - ONOS BGP controller subsystem API - - - - org.onosproject - onos-bgp-api - - - io.netty - netty - - - org.apache.felix - org.apache.felix.scr.annotations - - - org.osgi - org.osgi.compendium - - - - - - - org.apache.felix - maven-scr-plugin - - - - - diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/AdjRibIn.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/AdjRibIn.java deleted file mode 100644 index 9cbfbf65..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/AdjRibIn.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.bgp.controller.impl; - -import java.util.Map; -import java.util.TreeMap; - -import org.onosproject.bgpio.protocol.BgpLSNlri; -import org.onosproject.bgpio.protocol.linkstate.BgpLinkLSIdentifier; -import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSIdentifier; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpPrefixIPv4LSNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpPrefixLSIdentifier; -import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetails; - -import com.google.common.base.MoreObjects; - -/** - * Implementation of Adj-RIB-In for each peer. - */ -public class AdjRibIn { - private Map nodeTree = new TreeMap<>(); - private Map linkTree = new TreeMap<>(); - private Map prefixTree = new TreeMap<>(); - - /** - * Returns the adjacency node. - * - * @return node adjacency RIB node - */ - public Map nodeTree() { - return nodeTree; - } - - /** - * Returns the adjacency link. - * - * @return link adjacency RIB node - */ - public Map linkTree() { - return linkTree; - } - - /** - * Returns the adjacency prefix. - * - * @return prefix adjacency RIB node - */ - public Map prefixTree() { - return prefixTree; - } - - /** - * Update nlri identifier into the tree if nlri identifier exists in tree otherwise add this to the tree. - * - * @param nlri NLRI Info - * @param details has pathattribute , protocolID and identifier - */ - public void add(BgpLSNlri nlri, PathAttrNlriDetails details) { - if (nlri instanceof BgpNodeLSNlriVer4) { - BgpNodeLSIdentifier nodeLSIdentifier = ((BgpNodeLSNlriVer4) nlri).getLocalNodeDescriptors(); - if (nodeTree.containsKey(nodeLSIdentifier)) { - nodeTree.replace(nodeLSIdentifier, details); - } else { - nodeTree.put(nodeLSIdentifier, details); - } - } else if (nlri instanceof BgpLinkLsNlriVer4) { - BgpLinkLSIdentifier linkLSIdentifier = ((BgpLinkLsNlriVer4) nlri).getLinkIdentifier(); - if (linkTree.containsKey(linkLSIdentifier)) { - linkTree.replace(linkLSIdentifier, details); - } else { - linkTree.put(linkLSIdentifier, details); - } - } else if (nlri instanceof BgpPrefixIPv4LSNlriVer4) { - BgpPrefixLSIdentifier prefixIdentifier = ((BgpPrefixIPv4LSNlriVer4) nlri).getPrefixIdentifier(); - if (prefixTree.containsKey(prefixIdentifier)) { - prefixTree.replace(prefixIdentifier, details); - } else { - prefixTree.put(prefixIdentifier, details); - } - } - } - - /** - * Removes nlri identifier if it exists in the adjacency tree. - * - * @param nlri NLRI Info - */ - public void remove(BgpLSNlri nlri) { - if (nlri instanceof BgpNodeLSNlriVer4) { - BgpNodeLSIdentifier nodeLSIdentifier = ((BgpNodeLSNlriVer4) nlri).getLocalNodeDescriptors(); - if (nodeTree.containsKey(nodeLSIdentifier)) { - nodeTree.remove(nodeLSIdentifier); - } - } else if (nlri instanceof BgpLinkLsNlriVer4) { - BgpLinkLSIdentifier linkLSIdentifier = ((BgpLinkLsNlriVer4) nlri).getLinkIdentifier(); - if (linkTree.containsKey(linkLSIdentifier)) { - linkTree.remove(linkLSIdentifier); - } - } else if (nlri instanceof BgpPrefixIPv4LSNlriVer4) { - BgpPrefixLSIdentifier prefixIdentifier = ((BgpPrefixIPv4LSNlriVer4) nlri).getPrefixIdentifier(); - if (prefixTree.containsKey(prefixIdentifier)) { - prefixTree.remove(prefixIdentifier); - } - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("nodeTree", nodeTree) - .add("linkTree", linkTree) - .add("prefixTree", prefixTree) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpChannelHandler.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpChannelHandler.java deleted file mode 100755 index 0c55eadc..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpChannelHandler.java +++ /dev/null @@ -1,896 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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 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.Collections; -import java.util.LinkedList; -import java.util.List; -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; -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.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.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.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; - -/** - * Channel handler deals with the bgp peer connection and dispatches messages from peer to the appropriate locations. - */ -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; - private Channel channel; - private BgpKeepAliveTimer keepAliveTimer = null; - private short peerHoldTime = 0; - private short negotiatedHoldTime = 0; - 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 - private volatile ChannelState state; - - // 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 - // 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 BgpController bgpController; - protected BgpFactory factory4; - private boolean isIbgpSession; - private BgpSessionInfoImpl sessionInfo; - private BgpPeerManagerImpl peerManager; - private InetSocketAddress inetAddress; - private IpAddress ipAddress; - private SocketAddress address; - private String peerAddr; - private BgpCfg bgpconfig; - - /** - * Create a new unconnected BGPChannelHandler. - * - * @param bgpController bgp controller - */ - 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 = bgpController.getConfig(); - } - - // To disconnect peer session. - public void disconnectPeer() { - bgpPeer.disconnectPeer(); - } - - // ************************* - // Channel State Machine - // ************************* - - /** - * The state machine for handling the peer/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. - */ - IDLE(false) { - - }, - - OPENSENT(false) { - @Override - void processBgpMessage(BgpChannelHandler h, BgpMessage m) throws IOException, BgpParseException { - log.debug("message received in OPENSENT state"); - // 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(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(); - - BgpOpenMsg pOpenmsg = (BgpOpenMsg) m; - h.peerIdentifier = pOpenmsg.getBgpId(); - - // validate capabilities and open msg - if (h.openMsgValidation(h, pOpenmsg)) { - if (h.connectionCollisionDetection(BgpPeerCfg.State.OPENCONFIRM, - h.peerIdentifier, h.peerAddr)) { - h.channel.close(); - return; - } - log.debug("Sending handshake OPEN message"); - - /* - * RFC 4271, section 4.2: Upon receipt of an OPEN message, a BGP speaker MUST calculate the - * value of the Hold Timer by using the smaller of its configured Hold Time and the Hold Time - * received in the OPEN message - */ - h.peerHoldTime = pOpenmsg.getHoldTime(); - if (h.peerHoldTime < h.bgpconfig.getHoldTime()) { - h.channel.getPipeline().replace("holdTime", - "holdTime", - new ReadTimeoutHandler(BgpPipelineFactory.TIMER, - h.peerHoldTime)); - } - - log.info("Hold Time : " + h.peerHoldTime); - - // update AS number - h.peerAsNum = pOpenmsg.getAsNumber(); - } - - // Send keepalive message to peer. - h.sendKeepAliveMessage(); - h.bgpPacketStats.addOutPacket(); - h.setState(OPENCONFIRM); - h.bgpconfig.setPeerConnState(h.peerAddr, BgpPeerCfg.State.OPENCONFIRM); - } - } - }, - - OPENWAIT(false) { - @Override - void processBgpMessage(BgpChannelHandler h, BgpMessage m) throws IOException, BgpParseException { - log.debug("Message received in OPEN WAIT State"); - - // check for open message - if (m.getType() != BgpType.OPEN) { - // When the message type is not open message increment the wrong packet statistics - h.processUnknownMsg(BgpErrorType.FINITE_STATE_MACHINE_ERROR, BgpErrorType.UNSPECIFIED_ERROR, - m.getType().getType()); - log.debug("Message is not OPEN message"); - } else { - h.bgpPacketStats.addInPacket(); - - BgpOpenMsg pOpenmsg = (BgpOpenMsg) m; - h.peerIdentifier = pOpenmsg.getBgpId(); - - // Validate open message - if (h.openMsgValidation(h, pOpenmsg)) { - if (h.connectionCollisionDetection(BgpPeerCfg.State.OPENSENT, - h.peerIdentifier, h.peerAddr)) { - h.channel.close(); - return; - } - log.debug("Sending handshake OPEN message"); - - /* - * RFC 4271, section 4.2: Upon receipt of an OPEN message, a BGP speaker MUST calculate the - * value of the Hold Timer by using the smaller of its configured Hold Time and the Hold Time - * received in the OPEN message - */ - h.peerHoldTime = pOpenmsg.getHoldTime(); - if (h.peerHoldTime < h.bgpconfig.getHoldTime()) { - h.channel.getPipeline().replace("holdTime", - "holdTime", - new ReadTimeoutHandler(BgpPipelineFactory.TIMER, - h.peerHoldTime)); - } - - log.debug("Hold Time : " + h.peerHoldTime); - - // update AS number - h.peerAsNum = pOpenmsg.getAsNumber(); - - h.sendHandshakeOpenMessage(); - h.bgpPacketStats.addOutPacket(); - h.setState(OPENCONFIRM); - h.bgpconfig.setPeerConnState(h.peerAddr, BgpPeerCfg.State.OPENCONFIRM); - } - } - } - }, - - OPENCONFIRM(false) { - @Override - void processBgpMessage(BgpChannelHandler h, BgpMessage m) throws IOException, BgpParseException { - log.debug("Message received in OPENCONFIRM state"); - // 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(BgpErrorType.FINITE_STATE_MACHINE_ERROR, - BgpErrorType.RECEIVE_UNEXPECTED_MESSAGE_IN_OPENCONFIRM_STATE, - m.getType().getType()); - log.debug("Message is not KEEPALIVE message"); - } else { - - // Set the peer connected status - h.bgpPacketStats.addInPacket(); - log.debug("Sending keep alive message in OPENCONFIRM state"); - - final InetSocketAddress inetAddress = (InetSocketAddress) h.address; - h.thisbgpId = BgpId.bgpId(IpAddress.valueOf(inetAddress.getAddress())); - - // 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); - - /* - * 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. - */ - - if (h.negotiatedHoldTime != 0) { - h.keepAliveTimer = new BgpKeepAliveTimer(h, - (h.negotiatedHoldTime / BGP_MAX_KEEPALIVE_INTERVAL)); - } else { - h.sendKeepAliveMessage(); - } - - h.bgpPacketStats.addOutPacket(); - - // set the state handshake completion. - h.setHandshakeComplete(true); - - if (!h.peerManager.addConnectedPeer(h.thisbgpId, h.bgpPeer)) { - disconnectDuplicate(h); - } else { - h.setState(ESTABLISHED); - h.bgpconfig.setPeerConnState(h.peerAddr, BgpPeerCfg.State.ESTABLISHED); - } - } - } - }, - - ESTABLISHED(true) { - @Override - void processBgpMessage(BgpChannelHandler h, BgpMessage m) throws IOException, BgpParseException { - log.debug("Message received in established state " + m.getType()); - // dispatch the message - h.dispatchMessage(m); - } - }; - - private 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 this.handshakeComplete; - } - - /** - * Disconnect duplicate peer connection. - * - * @param h channel handler - */ - protected void disconnectDuplicate(BgpChannelHandler h) { - log.error("Duplicated BGP IP or incompleted cleanup - " + "" + "disconnecting channel {}", - h.getPeerInfoString()); - h.duplicateBGPIdFound = Boolean.TRUE; - h.channel.disconnect(); - } - - // set handshake completion status - public void setHandshakeComplete(boolean handshakeComplete) { - this.handshakeComplete = handshakeComplete; - } - - void processBgpMessage(BgpChannelHandler bgpChannelHandler, BgpMessage pm) - throws IOException, BgpParseException { - // TODO Auto-generated method stub - log.debug("BGP message stub"); - } - - } - - // ************************* - // Channel handler methods - // ************************* - - @Override - public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { - - channel = e.getChannel(); - log.info("BGP connected from {}", channel.getRemoteAddress()); - - address = channel.getRemoteAddress(); - if (!(address instanceof InetSocketAddress)) { - throw new IOException("Invalid peer connection."); - } - - - inetAddress = (InetSocketAddress) address; - peerAddr = IpAddress.valueOf(inetAddress.getAddress()).toString(); - - - // if connection is already established close channel - if (peerManager.isPeerConnected(BgpId.bgpId(IpAddress.valueOf(peerAddr)))) { - log.debug("Duplicate connection received, peer {}", peerAddr); - channel.close(); - return; - } - - if (null != channel.getPipeline().get("PassiveHandler")) { - log.info("BGP handle connection request from peer"); - // Wait for open message from bgp peer - setState(ChannelState.OPENWAIT); - } else if (null != channel.getPipeline().get("ActiveHandler")) { - log.info("BGP handle connection response from peer"); - - sendHandshakeOpenMessage(); - bgpPacketStats.addOutPacket(); - setState(ChannelState.OPENSENT); - bgpconfig.setPeerConnState(peerAddr, BgpPeerCfg.State.OPENSENT); - } - } - - @Override - public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { - - channel = e.getChannel(); - log.info("BGP disconnected callback for bgp:{}. Cleaning up ...", getPeerInfoString()); - - address = channel.getRemoteAddress(); - if (!(address instanceof InetSocketAddress)) { - throw new IOException("Invalid peer connection."); - } - - inetAddress = (InetSocketAddress) address; - peerAddr = IpAddress.valueOf(inetAddress.getAddress()).toString(); - - if (thisbgpId != null) { - if (!duplicateBGPIdFound) { - // if the disconnected peer (on this ChannelHandler) - // was not one with a duplicate, it is safe to remove all - // state for it at the controller. Notice that if the disconnected - // peer was a duplicate-ip, calling the method below would clear - // all state for the original peer (with the same ip), - // which we obviously don't want. - log.debug("{}:removal called", getPeerInfoString()); - if (bgpPeer != null) { - BgpPeerImpl peer = (BgpPeerImpl) bgpPeer; - peerManager.removeConnectedPeer(thisbgpId); - peer.updateLocalRIBOnPeerDisconnect(); - } - - // Retry connection if connection is lost to bgp speaker/peer - if ((channel != null) && (null != channel.getPipeline().get("ActiveHandler"))) { - BgpConnectPeerImpl connectPeer; - BgpPeerCfg.State peerCfgState; - - peerCfgState = bgpconfig.getPeerConnState(peerAddr); - // on session disconnect using configuration, do not retry - if (!peerCfgState.equals(BgpPeerCfg.State.IDLE)) { - log.debug("Connection reset by peer, retry, STATE:{}", peerCfgState); - BgpPeerConfig peerConfig = (BgpPeerConfig) bgpconfig.displayPeers(peerAddr); - - bgpconfig.setPeerConnState(peerAddr, BgpPeerCfg.State.IDLE); - connectPeer = new BgpConnectPeerImpl(bgpController, peerAddr, Controller.getBgpPortNum()); - peerConfig.setConnectPeer(connectPeer); - } - } else { - bgpconfig.setPeerConnState(peerAddr, BgpPeerCfg.State.IDLE); - } - } else { - // A duplicate was disconnected on this ChannelHandler, - // this is the same peer reconnecting, but the original state was - // not cleaned up - XXX check liveness of original ChannelHandler - log.debug("{}:duplicate found", getPeerInfoString()); - duplicateBGPIdFound = Boolean.FALSE; - } - - if (null != keepAliveTimer) { - keepAliveTimer.getKeepAliveTimer().cancel(); - } - } else { - bgpconfig.setPeerConnState(peerAddr, BgpPeerCfg.State.IDLE); - log.warn("No bgp ip in channelHandler registered for " + "disconnected peer {}", getPeerInfoString()); - } - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { - - log.info("[exceptionCaught]: " + e.toString()); - - if (e.getCause() instanceof ReadTimeoutException) { - if ((ChannelState.OPENWAIT == state) || (ChannelState.OPENSENT == state)) { - - // When ReadTimeout timer is expired in OPENWAIT/OPENSENT state, it is considered - 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. - sendNotification(BgpErrorType.HOLD_TIMER_EXPIRED, (byte) 0, null); - channel.close(); - state = ChannelState.IDLE; - return; - } - } else if (e.getCause() instanceof ClosedChannelException) { - log.debug("Channel for bgp {} already closed", getPeerInfoString()); - } else if (e.getCause() instanceof IOException) { - log.error("Disconnecting peer {} due to IO Error: {}", getPeerInfoString(), 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 BgpParseException) { - 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 { - log.error("Error while processing message from peer " + getPeerInfoString() + "state " + this.state); - channel.close(); - } - } - - @Override - public String toString() { - return getPeerInfoString(); - } - - @Override - public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { - if (e.getMessage() instanceof List) { - @SuppressWarnings("Unchecked") - List msglist = (List) e.getMessage(); - for (BgpMessage pm : msglist) { - // Do the actual packet processing - state.processBgpMessage(this, pm); - } - } else { - state.processBgpMessage(this, (BgpMessage) e.getMessage()); - } - } - - /** - * Check for connection collision. - * - * @param state connection state - * @param peerIdentifier BGP peer identifier - * @param peerAddr BGP peer address - * @return true if bgp spreakers initiated connection - * @throws BgpParseException on error while procession collision detection - * @throws IOException on error while procession collision detection - */ - public boolean connectionCollisionDetection(BgpPeerCfg.State state, int peerIdentifier, String peerAddr) - throws IOException, BgpParseException { - /* - * RFC 4271, Section 6.8, Based on the value of the BGP identifier, a convention is established for detecting - * which BGP connection is to be preserved when a collision occurs. The convention is to compare the BGP - * Identifiers of the peers involved in the collision and to retain only the connection initiated by the BGP - * speaker with the higher-valued BGP Identifier.. - */ - BgpPeerCfg.State currentState = bgpconfig.getPeerConnState(peerAddr); - if (currentState.equals(state)) { - if (((Ip4Address.valueOf(bgpconfig.getRouterId())).compareTo(Ip4Address.valueOf(peerIdentifier))) > 0) { - // send notification - sendNotification(BgpErrorType.CEASE, BgpErrorType.CONNECTION_COLLISION_RESOLUTION, null); - log.debug("Connection collision detected, local id: {}, peer id: {}, peer state:{}, in state:{}", - (Ip4Address.valueOf(bgpconfig.getRouterId())), (Ip4Address.valueOf(peerIdentifier)), - currentState, state); - return true; - } - } - - return false; - } - - // ************************* - // Channel utility methods - // ************************* - /** - * Set handshake status. - * - * @param handshakeComplete handshake complete 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 state.isHandshakeComplete(); - } - - /** - * To handle the BGP message. - * - * @param m bgp message - * @throws BgpParseException throw exception - */ - private void dispatchMessage(BgpMessage m) throws BgpParseException { - bgpPacketStats.addInPacket(); - bgpController.processBGPPacket(thisbgpId, m); - } - - /** - * Return a string describing this peer based on the already available information (ip address and/or remote - * socket). - * - * @return display string - */ - private String getPeerInfoString() { - if (bgpPeer != null) { - return bgpPeer.toString(); - } - String channelString; - if (channel == null || channel.getRemoteAddress() == null) { - channelString = "?"; - } else { - channelString = channel.getRemoteAddress().toString(); - } - String bgpIpString; - // TODO: implement functionality to get bgp id string - bgpIpString = "?"; - return String.format("[%s BGP-IP[%s]]", channelString, bgpIpString); - } - - /** - * 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; - } - - /** - * get packet statistics. - * - * @return packet statistics - */ - public BgpPacketStatsImpl getBgpPacketStats() { - return bgpPacketStats; - } - - /** - * Send handshake open message to the peer. - * - * @throws IOException, BgpParseException - */ - private void sendHandshakeOpenMessage() throws IOException, BgpParseException { - int bgpId; - - InetSocketAddress localAddress = (InetSocketAddress) channel.getLocalAddress(); - - bgpId = Ip4Address.valueOf(IpAddress.valueOf(localAddress.getAddress()).toString()).toInt(); - BgpMessage msg = factory4.openMessageBuilder().setAsNumber((short) peerAsNum) - .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 - * @throws BgpParseException while building keep alive message - */ - synchronized void sendKeepAliveMessage() throws IOException, BgpParseException { - - BgpMessage msg = factory4.keepaliveMessageBuilder().build(); - log.debug("Sending keepalive message to {}", channel.getRemoteAddress()); - channel.write(Collections.singletonList(msg)); - } - - /** - * 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 - */ - 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(); - } - - /** - * BGP open message validation. - * - * @param h channel handler - * @param openMsg open message - * @return true if valid message, otherwise false - * @throws BgpParseException throw exception - */ - 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 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 capabilityTlv = openmsg.getCapabilityTlv(); - ListIterator listIterator = capabilityTlv.listIterator(); - List unSupportedCapabilityTlv = new LinkedList<>(); - ListIterator 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 (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; - } - } - - /** - * AS Number Validation. - * - * @param h channel Handler - * @param openMsg open message - * @return true or false - */ - 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 capabilityTlv = openMsg.getCapabilityTlv(); - ListIterator 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/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConfig.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConfig.java deleted file mode 100755 index 95a07ad5..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConfig.java +++ /dev/null @@ -1,364 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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 java.util.Iterator; -import java.util.Map.Entry; -import java.util.Set; -import java.util.TreeMap; - -import org.onlab.packet.Ip4Address; -import org.onlab.packet.IpAddress; -import org.onosproject.bgp.controller.BgpCfg; -import org.onosproject.bgp.controller.BgpConnectPeer; -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.BgpPeerManagerImpl; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Provides BGP configuration of this BGP speaker. - */ -public class BgpConfig implements BgpCfg { - - protected static final Logger log = LoggerFactory.getLogger(BgpConfig.class); - - private static final short DEFAULT_HOLD_TIMER = 120; - private static final short DEFAULT_CONN_RETRY_TIME = 120; - private static final short DEFAULT_CONN_RETRY_COUNT = 5; - - private State state = State.INIT; - private int localAs; - private int maxSession; - private boolean lsCapability; - private short holdTime; - private boolean largeAs = false; - private int maxConnRetryTime; - private int maxConnRetryCount; - - private Ip4Address routerId = null; - private TreeMap bgpPeerTree = new TreeMap<>(); - private BgpConnectPeer connectPeer; - private BgpPeerManagerImpl peerManager; - private BgpController bgpController; - - /* - * Constructor to initialize the values. - */ - public BgpConfig(BgpController bgpController) { - this.bgpController = bgpController; - this.peerManager = (BgpPeerManagerImpl) bgpController.peerManager(); - this.holdTime = DEFAULT_HOLD_TIMER; - this.maxConnRetryTime = DEFAULT_CONN_RETRY_TIME; - this.maxConnRetryCount = DEFAULT_CONN_RETRY_COUNT; - this.lsCapability = true; - } - - @Override - public State getState() { - return state; - } - - @Override - public void setState(State state) { - this.state = state; - } - - @Override - public int getAsNumber() { - return this.localAs; - } - - @Override - public void setAsNumber(int localAs) { - - State localState = getState(); - this.localAs = localAs; - - /* Set configuration state */ - if (localState == State.IP_CONFIGURED) { - setState(State.IP_AS_CONFIGURED); - } else { - setState(State.AS_CONFIGURED); - } - } - - @Override - public int getMaxSession() { - return this.maxSession; - } - - @Override - public void setMaxSession(int maxSession) { - this.maxSession = maxSession; - } - - @Override - public boolean getLsCapability() { - return this.lsCapability; - } - - @Override - public void setLsCapability(boolean lsCapability) { - this.lsCapability = lsCapability; - } - - @Override - public String getRouterId() { - if (this.routerId != null) { - return this.routerId.toString(); - } else { - return null; - } - } - - @Override - public void setRouterId(String routerId) { - State localState = getState(); - this.routerId = Ip4Address.valueOf(routerId); - - /* Set configuration state */ - if (localState == State.AS_CONFIGURED) { - setState(State.IP_AS_CONFIGURED); - } else { - setState(State.IP_CONFIGURED); - } - } - - @Override - public boolean addPeer(String routerid, int remoteAs) { - return addPeer(routerid, remoteAs, DEFAULT_HOLD_TIMER); - } - - @Override - public boolean addPeer(String routerid, short holdTime) { - return addPeer(routerid, this.getAsNumber(), holdTime); - } - - @Override - public boolean addPeer(String routerid, int remoteAs, short holdTime) { - BgpPeerConfig lspeer = new BgpPeerConfig(); - if (this.bgpPeerTree.get(routerid) == null) { - - lspeer.setPeerRouterId(routerid); - lspeer.setAsNumber(remoteAs); - lspeer.setHoldtime(holdTime); - lspeer.setState(BgpPeerCfg.State.IDLE); - lspeer.setSelfInnitConnection(false); - - if (this.getAsNumber() == remoteAs) { - lspeer.setIsIBgp(true); - } else { - lspeer.setIsIBgp(false); - } - - this.bgpPeerTree.put(routerid, lspeer); - log.debug("added successfully"); - return true; - } else { - log.debug("already exists"); - return false; - } - } - - @Override - public boolean connectPeer(String routerid) { - BgpPeerCfg lspeer = this.bgpPeerTree.get(routerid); - - if (lspeer != null) { - lspeer.setSelfInnitConnection(true); - - if (lspeer.connectPeer() == null) { - connectPeer = new BgpConnectPeerImpl(bgpController, routerid, Controller.getBgpPortNum()); - lspeer.setConnectPeer(connectPeer); - connectPeer.connectPeer(); - } - return true; - } - - return false; - } - - @Override - public boolean removePeer(String routerid) { - BgpPeerCfg lspeer = this.bgpPeerTree.get(routerid); - - if (lspeer != null) { - - disconnectPeer(routerid); - lspeer.setSelfInnitConnection(false); - lspeer = this.bgpPeerTree.remove(routerid); - log.debug("Deleted : " + routerid + " successfully"); - - return true; - } else { - log.debug("Did not find : " + routerid); - return false; - } - } - - @Override - public boolean disconnectPeer(String routerid) { - BgpPeerCfg lspeer = this.bgpPeerTree.get(routerid); - - if (lspeer != null) { - - BgpPeer disconnPeer = peerManager.getPeer(BgpId.bgpId(IpAddress.valueOf(routerid))); - if (disconnPeer != null) { - // TODO: send notification peer deconfigured - disconnPeer.disconnectPeer(); - } - lspeer.connectPeer().disconnectPeer(); - lspeer.setState(BgpPeerCfg.State.IDLE); - lspeer.setSelfInnitConnection(false); - log.debug("Disconnected : " + routerid + " successfully"); - - return true; - } else { - log.debug("Did not find : " + routerid); - return false; - } - } - - @Override - public void setPeerConnState(String routerid, BgpPeerCfg.State state) { - BgpPeerCfg lspeer = this.bgpPeerTree.get(routerid); - - if (lspeer != null) { - lspeer.setState(state); - log.debug("Peer : " + routerid + " is not available"); - - return; - } else { - log.debug("Did not find : " + routerid); - return; - } - } - - @Override - public BgpPeerCfg.State getPeerConnState(String routerid) { - BgpPeerCfg lspeer = this.bgpPeerTree.get(routerid); - - if (lspeer != null) { - return lspeer.getState(); - } else { - return BgpPeerCfg.State.INVALID; //No instance - } - } - - @Override - public boolean isPeerConnectable(String routerid) { - BgpPeerCfg lspeer = this.bgpPeerTree.get(routerid); - - if ((lspeer != null) && lspeer.getState().equals(BgpPeerCfg.State.IDLE)) { - return true; - } - - return false; - } - - @Override - public TreeMap getPeerTree() { - return this.bgpPeerTree; - } - - @Override - public TreeMap displayPeers() { - if (this.bgpPeerTree.isEmpty()) { - log.debug("There are no BGP peers"); - } else { - Set> set = this.bgpPeerTree.entrySet(); - Iterator> list = set.iterator(); - BgpPeerCfg lspeer; - - while (list.hasNext()) { - Entry me = list.next(); - lspeer = me.getValue(); - log.debug("Peer neighbor IP :" + me.getKey()); - log.debug(", AS Number : " + lspeer.getAsNumber()); - log.debug(", Hold Timer : " + lspeer.getHoldtime()); - log.debug(", Is iBGP : " + lspeer.getIsIBgp()); - } - } - return null; - } - - @Override - public BgpPeerCfg displayPeers(String routerid) { - - if (this.bgpPeerTree.isEmpty()) { - log.debug("There are no Bgp peers"); - } else { - return this.bgpPeerTree.get(routerid); - } - return null; - } - - @Override - public void setHoldTime(short holdTime) { - this.holdTime = holdTime; - } - - @Override - public short getHoldTime() { - return this.holdTime; - } - - @Override - public boolean getLargeASCapability() { - return this.largeAs; - } - - @Override - public void setLargeASCapability(boolean largeAs) { - this.largeAs = largeAs; - } - - @Override - public boolean isPeerConfigured(String routerid) { - BgpPeerCfg lspeer = this.bgpPeerTree.get(routerid); - return (lspeer != null) ? true : false; - } - - @Override - public boolean isPeerConnected(String routerid) { - // TODO: is peer connected - return true; - } - - @Override - public int getMaxConnRetryCount() { - return this.maxConnRetryCount; - } - - @Override - public void setMaxConnRetryCout(int retryCount) { - this.maxConnRetryCount = retryCount; - } - - @Override - public int getMaxConnRetryTime() { - return this.maxConnRetryTime; - } - - @Override - public void setMaxConnRetryTime(int retryTime) { - this.maxConnRetryTime = retryTime; - } -} diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConnectPeerImpl.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConnectPeerImpl.java deleted file mode 100755 index 27db618d..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConnectPeerImpl.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.bgp.controller.impl; - -import java.net.InetSocketAddress; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -import org.jboss.netty.bootstrap.ClientBootstrap; -import org.jboss.netty.channel.ChannelFuture; -import org.jboss.netty.channel.ChannelFutureListener; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.onosproject.bgp.controller.BgpCfg; -import org.onosproject.bgp.controller.BgpController; -import org.onosproject.bgp.controller.BgpPeerCfg; -import org.onosproject.bgp.controller.BgpConnectPeer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Implements connection initiation to peer on peer configuration and manage channel using netty channel handler. - */ -public class BgpConnectPeerImpl implements BgpConnectPeer { - private static final Logger log = LoggerFactory.getLogger(BgpConnectPeerImpl.class); - - private ScheduledExecutorService connectExecutor = null; - private final String peerHost; - private static final int RETRY_INTERVAL = 4; - private final int peerPort; - private int connectRetryCounter = 0; - private int connectRetryTime; - private ChannelPipelineFactory pfact; - private ClientBootstrap peerBootstrap; - private BgpCfg bgpconfig; - - /** - * Initialize timer and initiate pipeline factory. - * - * @param bgpController parent BGP controller - * @param remoteHost remote host to connect - * @param remotePort remote port to connect - */ - public BgpConnectPeerImpl(BgpController bgpController, String remoteHost, int remotePort) { - - this.bgpconfig = bgpController.getConfig(); - this.pfact = new BgpPipelineFactory(bgpController, false); - this.peerBootstrap = Controller.peerBootstrap(); - this.peerBootstrap.setPipelineFactory(pfact); - this.peerHost = remoteHost; - this.peerPort = remotePort; - this.connectRetryTime = 0; - } - - @Override - public void disconnectPeer() { - if (connectExecutor != null) { - connectExecutor.shutdown(); - connectExecutor = null; - } - } - - @Override - public void connectPeer() { - scheduleConnectionRetry(this.connectRetryTime); - } - - /** - * Retry connection with exponential back-off mechanism. - * - * @param retryDelay retry delay - */ - private void scheduleConnectionRetry(long retryDelay) { - if (this.connectExecutor == null) { - this.connectExecutor = Executors.newSingleThreadScheduledExecutor(); - } - this.connectExecutor.schedule(new ConnectionRetry(), retryDelay, TimeUnit.MINUTES); - } - - /** - * Implements BGP connection and manages connection to peer with back-off mechanism in case of failure. - */ - class ConnectionRetry implements Runnable { - @Override - public void run() { - log.debug("Connect to peer {}", peerHost); - - InetSocketAddress connectToSocket = new InetSocketAddress(peerHost, peerPort); - - try { - bgpconfig.setPeerConnState(peerHost, BgpPeerCfg.State.CONNECT); - peerBootstrap.connect(connectToSocket).addListener(new ChannelFutureListener() { - @Override - public void operationComplete(ChannelFuture future) throws Exception { - if (!future.isSuccess()) { - bgpconfig.setPeerConnState(peerHost, BgpPeerCfg.State.ACTIVE); - connectRetryCounter++; - log.error("Connection failed, ConnectRetryCounter {} remote host {}", connectRetryCounter, - peerHost); - /* - * Reconnect to peer on failure is exponential till 4 mins, later on retry after every 4 - * mins. - */ - if (connectRetryTime < RETRY_INTERVAL) { - connectRetryTime = (connectRetryTime != 0) ? connectRetryTime * 2 : 1; - } - scheduleConnectionRetry(connectRetryTime); - } else { - - connectRetryCounter++; - log.info("Connected to remote host {}, Connect Counter {}", peerHost, connectRetryCounter); - disconnectPeer(); - return; - } - } - }); - } catch (Exception e) { - log.info("Connect peer exception : " + e.toString()); - disconnectPeer(); - } - } - } -} diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpControllerImpl.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpControllerImpl.java deleted file mode 100755 index 51ab68be..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpControllerImpl.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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 java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -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.onosproject.bgp.controller.BgpCfg; -import org.onosproject.bgp.controller.BgpController; -import org.onosproject.bgp.controller.BgpId; -import org.onosproject.bgp.controller.BgpLocalRib; -import org.onosproject.bgp.controller.BgpPeer; -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.BgpUpdateMsg; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.MpReachNlri; -import org.onosproject.bgpio.types.MpUnReachNlri; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@Component(immediate = true) -@Service -public class BgpControllerImpl implements BgpController { - - private static final Logger log = LoggerFactory.getLogger(BgpControllerImpl.class); - - protected ConcurrentHashMap connectedPeers = new ConcurrentHashMap(); - - protected BgpPeerManagerImpl peerManager = new BgpPeerManagerImpl(); - - private BgpLocalRib bgplocalRIB = new BgpLocalRibImpl(this); - private BgpLocalRib bgplocalRIBVpn = new BgpLocalRibImpl(this); - - protected Set bgpNodeListener = new CopyOnWriteArraySet<>(); - - final Controller ctrl = new Controller(this); - - private BgpConfig bgpconfig = new BgpConfig(this); - - @Activate - public void activate() { - this.ctrl.start(); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - // Close all connected peers - closeConnectedPeers(); - this.ctrl.stop(); - log.info("Stopped"); - } - - @Override - public Iterable getPeers() { - return this.connectedPeers.values(); - } - - @Override - public BgpPeer getPeer(BgpId bgpId) { - return this.connectedPeers.get(bgpId); - } - - @Override - public void addListener(BgpNodeListener listener) { - this.bgpNodeListener.add(listener); - } - - @Override - public void removeListener(BgpNodeListener listener) { - this.bgpNodeListener.remove(listener); - } - - @Override - public Set listener() { - return bgpNodeListener; - } - - @Override - public void writeMsg(BgpId bgpId, BgpMessage msg) { - this.getPeer(bgpId).sendMessage(msg); - } - - @Override - public void processBGPPacket(BgpId bgpId, BgpMessage msg) throws BgpParseException { - - BgpPeer peer = getPeer(bgpId); - - switch (msg.getType()) { - case OPEN: - // TODO: Process Open message - break; - case KEEP_ALIVE: - // TODO: Process keepalive message - break; - case NOTIFICATION: - // TODO: Process notificatoin message - break; - case UPDATE: - BgpUpdateMsg updateMsg = (BgpUpdateMsg) msg; - List pathAttr = updateMsg.bgpPathAttributes().pathAttributes(); - if (pathAttr == null) { - log.debug("llPathAttr is null, cannot process update message"); - break; - } - Iterator listIterator = pathAttr.iterator(); - boolean isLinkstate = false; - while (listIterator.hasNext()) { - BgpValueType attr = listIterator.next(); - if ((attr instanceof MpReachNlri) || (attr instanceof MpUnReachNlri)) { - isLinkstate = true; - } - } - if (isLinkstate) { - peer.buildAdjRibIn(pathAttr); - } - break; - default: - // TODO: Process other message - break; - } - } - - @Override - public void closeConnectedPeers() { - BgpPeer bgpPeer; - for (BgpId id : this.connectedPeers.keySet()) { - bgpPeer = getPeer(id); - bgpPeer.disconnectPeer(); - } - } - - /** - * Implementation of an BGP Peer which is responsible for keeping track of connected peers and the state in which - * they are. - */ - public class BgpPeerManagerImpl implements BgpPeerManager { - - private final Logger log = LoggerFactory.getLogger(BgpPeerManagerImpl.class); - private final Lock peerLock = new ReentrantLock(); - - @Override - public boolean addConnectedPeer(BgpId bgpId, BgpPeer bgpPeer) { - - if (connectedPeers.get(bgpId) != null) { - this.log.error("Trying to add connectedPeer but found previous " + "value for bgp ip: {}", - bgpId.toString()); - return false; - } else { - this.log.debug("Added Peer {}", bgpId.toString()); - connectedPeers.put(bgpId, bgpPeer); - return true; - } - } - - @Override - public boolean isPeerConnected(BgpId bgpId) { - if (connectedPeers.get(bgpId) == null) { - this.log.error("Is peer connected: bgpIp {}.", bgpId.toString()); - return false; - } - - return true; - } - - @Override - public void removeConnectedPeer(BgpId bgpId) { - connectedPeers.remove(bgpId); - } - - @Override - public BgpPeer getPeer(BgpId bgpId) { - return connectedPeers.get(bgpId); - } - - /** - * 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; - } - - } - - /** - * Returns controller. - * - * @return controller - */ - public Controller controller() { - return this.ctrl; - } - - @Override - public ConcurrentHashMap connectedPeers() { - return connectedPeers; - } - - @Override - public BgpPeerManagerImpl peerManager() { - return peerManager; - } - - @Override - public BgpCfg getConfig() { - return this.bgpconfig; - } - - @Override - public int connectedPeerCount() { - return connectedPeers.size(); - } - - /** - * Gets the BGP local RIB. - * - * @return bgplocalRIB BGP local RIB. - */ - @Override - public BgpLocalRib bgpLocalRib() { - return bgplocalRIB; - } - - /** - * Gets the BGP local RIB with VPN. - * - * @return bgplocalRIBVpn BGP VPN local RIB . - */ - @Override - public BgpLocalRib bgpLocalRibVpn() { - return bgplocalRIBVpn; - } -} diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpKeepAliveTimer.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpKeepAliveTimer.java deleted file mode 100755 index 524ac4c1..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpKeepAliveTimer.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.bgp.controller.impl; - -import java.util.Timer; -import java.util.TimerTask; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Implement sending keepalive message to connected peer periodically based on negotiated holdtime. - */ -public class BgpKeepAliveTimer { - - private Timer keepAliveTimer; - private BgpChannelHandler handler; - private static final Logger log = LoggerFactory.getLogger(BgpKeepAliveTimer.class); - - /** - * Gets keepalive timer object. - * - * @return keepAliveTimer keepalive timer. - */ - public Timer getKeepAliveTimer() { - return keepAliveTimer; - } - - /** - * Initialize timer to send keepalive message periodically. - * - * @param h channel handler - * @param seconds time interval. - */ - public BgpKeepAliveTimer(BgpChannelHandler h, int seconds) { - this.handler = h; - this.keepAliveTimer = new Timer(); - this.keepAliveTimer.schedule(new SendKeepAlive(), 0, seconds * 1000); - } - - /** - * Send keepalive message to connected peer on schedule. - */ - class SendKeepAlive extends TimerTask { - @Override - public void run() { - log.debug("Sending periodic KeepAlive"); - - try { - // Send keep alive message - handler.sendKeepAliveMessage(); - handler.getBgpPacketStats().addOutPacket(); - } catch (Exception e) { - log.info("Exception occured while sending keepAlive message" + e.toString()); - } - } - } -} diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpLocalRibImpl.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpLocalRibImpl.java deleted file mode 100755 index 44b19057..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpLocalRibImpl.java +++ /dev/null @@ -1,603 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 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 java.util.Map; -import java.util.Set; -import java.util.TreeMap; - -import org.onosproject.bgp.controller.BgpController; -import org.onosproject.bgp.controller.BgpId; -import org.onosproject.bgp.controller.BgpLocalRib; -import org.onosproject.bgp.controller.BgpNodeListener; -import org.onosproject.bgp.controller.BgpSessionInfo; -import org.onosproject.bgpio.protocol.BgpLSNlri; -import org.onosproject.bgpio.protocol.linkstate.BgpLinkLSIdentifier; -import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSIdentifier; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpPrefixIPv4LSNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpPrefixLSIdentifier; -import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetails; -import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetailsLocalRib; -import org.onosproject.bgpio.types.RouteDistinguisher; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static com.google.common.base.Preconditions.checkNotNull; -import com.google.common.base.MoreObjects; - -/** - * Implementation of local RIB. - */ -public class BgpLocalRibImpl implements BgpLocalRib { - - private static final Logger log = LoggerFactory.getLogger(BgpLocalRibImpl.class); - private BgpController bgpController; - - private Map nodeTree = new TreeMap<>(); - private Map linkTree = new TreeMap<>(); - private Map prefixTree = new TreeMap<>(); - - private Map> vpnNodeTree - = new TreeMap<>(); - private Map> vpnLinkTree - = new TreeMap<>(); - private Map> vpnPrefixTree - = new TreeMap<>(); - - public BgpLocalRibImpl(BgpController bgpController) { - this.bgpController = bgpController; - } - - /** - * Gets node NLRI tree. - * - * @return node tree - */ - public Map nodeTree() { - return nodeTree; - } - - /** - * Gets link NLRI tree. - * - * @return link tree - */ - public Map linkTree() { - return linkTree; - } - - /** - * Gets prefix NLRI tree. - * - * @return prefix tree - */ - public Map prefixTree() { - return prefixTree; - } - - /** - * Gets VPN node NLRI tree. - * - * @return vpn node NLRI tree - */ - public Map> vpnNodeTree() { - return vpnNodeTree; - } - - /** - * Gets VPN link NLRI tree. - * - * @return vpn link NLRI Tree - */ - public Map> vpnLinkTree() { - return vpnLinkTree; - } - - /** - * Gets VPN prefix NLRI tree. - * - * @return vpn prefix NLRI Tree - */ - public Map> vpnPrefixTree() { - return vpnPrefixTree; - } - - @Override - public void add(BgpSessionInfo sessionInfo, BgpLSNlri nlri, PathAttrNlriDetails details) { - int decisionResult; - - log.debug("Add to local RIB {}", details.toString()); - - PathAttrNlriDetailsLocalRib detailsLocRib = new PathAttrNlriDetailsLocalRib( - sessionInfo.remoteBgpId().ipAddress(), - sessionInfo.remoteBgpIdentifier(), - sessionInfo.remoteBgpASNum(), - sessionInfo.isIbgpSession(), details); - if (nlri instanceof BgpNodeLSNlriVer4) { - BgpNodeLSIdentifier nodeLsIdentifier = ((BgpNodeLSNlriVer4) nlri).getLocalNodeDescriptors(); - if (nodeTree.containsKey(nodeLsIdentifier)) { - BgpSelectionAlgo selectionAlgo = new BgpSelectionAlgo(); - // Compare local RIB entry with the current attribute - decisionResult = selectionAlgo.compare(nodeTree.get(nodeLsIdentifier), detailsLocRib); - if (decisionResult < 0) { - nodeTree.replace(nodeLsIdentifier, detailsLocRib); - log.debug("Local RIB update node: {}", detailsLocRib.toString()); - } - } else { - nodeTree.put(nodeLsIdentifier, detailsLocRib); - for (BgpNodeListener l : bgpController.listener()) { - l.addNode((BgpNodeLSNlriVer4) nlri); - } - log.debug("Local RIB ad node: {}", detailsLocRib.toString()); - } - } else if (nlri instanceof BgpLinkLsNlriVer4) { - BgpLinkLSIdentifier linkLsIdentifier = ((BgpLinkLsNlriVer4) nlri).getLinkIdentifier(); - if (linkTree.containsKey(linkLsIdentifier)) { - BgpSelectionAlgo selectionAlgo = new BgpSelectionAlgo(); - // Compare local RIB entry with the current attribute - decisionResult = selectionAlgo.compare(linkTree.get(linkLsIdentifier), detailsLocRib); - if (decisionResult < 0) { - linkTree.replace(linkLsIdentifier, detailsLocRib); - log.debug("Local RIB update link: {}", detailsLocRib.toString()); - } - } else { - linkTree.put(linkLsIdentifier, detailsLocRib); - log.debug("Local RIB add link: {}", detailsLocRib.toString()); - } - } else if (nlri instanceof BgpPrefixIPv4LSNlriVer4) { - BgpPrefixLSIdentifier prefixIdentifier = ((BgpPrefixIPv4LSNlriVer4) nlri).getPrefixIdentifier(); - if (prefixTree.containsKey(prefixIdentifier)) { - BgpSelectionAlgo selectionAlgo = new BgpSelectionAlgo(); - // Compare local RIB entry with the current attribute - decisionResult = selectionAlgo.compare(prefixTree.get(prefixIdentifier), detailsLocRib); - if (decisionResult < 0) { - prefixTree.replace(prefixIdentifier, detailsLocRib); - log.debug("Local RIB update prefix: {}", detailsLocRib.toString()); - } - } else { - prefixTree.put(prefixIdentifier, detailsLocRib); - log.debug("Local RIB add prefix: {}", detailsLocRib.toString()); - } - } - } - - @Override - public void delete(BgpLSNlri nlri) { - log.debug("Delete from local RIB."); - - // Update local RIB - decisionProcess(nlri); - } - - /** - * Update local RIB based on selection algorithm. - * - * @param nlri NLRI to update - */ - public void decisionProcess(BgpLSNlri nlri) { - checkNotNull(nlri); - if (nlri instanceof BgpNodeLSNlriVer4) { - selectionProcessNode(nlri, false); - } else if (nlri instanceof BgpLinkLsNlriVer4) { - selectionProcessLink(nlri, false); - } else if (nlri instanceof BgpPrefixIPv4LSNlriVer4) { - selectionProcessPrefix(nlri, false); - } - } - - /** - * Update VPN local RIB . - * - * @param nlri NLRI to update - * @param routeDistinguisher VPN id to update - */ - public void decisionProcess(BgpLSNlri nlri, RouteDistinguisher routeDistinguisher) { - checkNotNull(nlri); - if (nlri instanceof BgpNodeLSNlriVer4) { - if (vpnNodeTree.containsKey(routeDistinguisher)) { - selectionProcessNode(nlri, true); - if (nodeTree.size() == 0) { - vpnNodeTree.remove(routeDistinguisher); - } - } - } else if (nlri instanceof BgpLinkLsNlriVer4) { - if (vpnLinkTree.containsKey(routeDistinguisher)) { - selectionProcessLink(nlri, true); - if (linkTree.size() == 0) { - vpnLinkTree.remove(routeDistinguisher); - } - } - } else if (nlri instanceof BgpPrefixIPv4LSNlriVer4) { - if (vpnPrefixTree.containsKey(routeDistinguisher)) { - selectionProcessPrefix(nlri, true); - if (prefixTree.size() == 0) { - vpnPrefixTree.remove(routeDistinguisher); - } - } - } - } - - /** - * Selection process for local RIB node. - * - * @param nlri NLRI to update - * @param isVpnRib true if VPN local RIB, otherwise false - */ - public void selectionProcessNode(BgpLSNlri nlri, boolean isVpnRib) { - BgpPeerImpl peer; - BgpSessionInfo sessionInfo; - int decisionResult; - boolean containsKey; - - BgpNodeLSIdentifier nodeLsIdentifier = ((BgpNodeLSNlriVer4) nlri).getLocalNodeDescriptors(); - - if (nodeTree.containsKey(nodeLsIdentifier)) { - for (BgpNodeListener l : bgpController.listener()) { - l.deleteNode((BgpNodeLSNlriVer4) nlri); - } - log.debug("Local RIB delete node: {}", nodeLsIdentifier.toString()); - nodeTree.remove(nodeLsIdentifier); - } - - for (BgpId bgpId : bgpController.connectedPeers().keySet()) { - peer = (BgpPeerImpl) (bgpController.getPeer(bgpId)); - - if (nodeTree.containsKey(nodeLsIdentifier)) { - containsKey = (!isVpnRib) ? (peer.adjacencyRib().nodeTree().containsKey(nodeLsIdentifier)) : - (peer.vpnAdjacencyRib().nodeTree().containsKey(nodeLsIdentifier)); - - if (!containsKey) { - continue; - } - sessionInfo = peer.sessionInfo(); - PathAttrNlriDetailsLocalRib detailsLocRib = new PathAttrNlriDetailsLocalRib( - sessionInfo.remoteBgpId().ipAddress(), - sessionInfo.remoteBgpIdentifier(), - sessionInfo.remoteBgpASNum(), - sessionInfo.isIbgpSession(), - (!isVpnRib) ? - (peer.adjacencyRib().nodeTree() - .get(nodeLsIdentifier)) : - (peer.vpnAdjacencyRib().nodeTree() - .get(nodeLsIdentifier))); - BgpSelectionAlgo selectionAlgo = new BgpSelectionAlgo(); - decisionResult = selectionAlgo.compare(nodeTree.get(nodeLsIdentifier), detailsLocRib); - if (decisionResult < 0) { - nodeTree.replace(nodeLsIdentifier, detailsLocRib); - log.debug("Local RIB node updated: {}", detailsLocRib.toString()); - } - } else { - if (!isVpnRib) { - if (peer.adjacencyRib().nodeTree().containsKey(nodeLsIdentifier)) { - add(peer.sessionInfo(), nlri, peer.adjacencyRib().nodeTree().get(nodeLsIdentifier)); - } - } else { - if (peer.vpnAdjacencyRib().nodeTree().containsKey(nodeLsIdentifier)) { - add(peer.sessionInfo(), nlri, peer.vpnAdjacencyRib().nodeTree().get(nodeLsIdentifier)); - } - } - } - } - } - - /** - * Selection process for local RIB link. - * - * @param nlri NLRI to update - * @param isVpnRib true if VPN local RIB, otherwise false - */ - public void selectionProcessLink(BgpLSNlri nlri, boolean isVpnRib) { - BgpPeerImpl peer; - BgpSessionInfo sessionInfo; - int decisionResult; - boolean containsKey; - - BgpLinkLSIdentifier linkLsIdentifier = ((BgpLinkLsNlriVer4) nlri).getLinkIdentifier(); - - if (linkTree.containsKey(linkLsIdentifier)) { - log.debug("Local RIB remove link: {}", linkLsIdentifier.toString()); - linkTree.remove(linkLsIdentifier); - } - - for (BgpId bgpId : bgpController.connectedPeers().keySet()) { - peer = (BgpPeerImpl) (bgpController.getPeer(bgpId)); - - if (linkTree.containsKey(linkLsIdentifier)) { - - containsKey = (!isVpnRib) ? (peer.adjacencyRib().linkTree().containsKey(linkLsIdentifier)) : - (peer.vpnAdjacencyRib().linkTree().containsKey(linkLsIdentifier)); - - if (!containsKey) { - continue; - } - - sessionInfo = peer.sessionInfo(); - - PathAttrNlriDetailsLocalRib detailsLocRib = new PathAttrNlriDetailsLocalRib( - sessionInfo.remoteBgpId().ipAddress(), - sessionInfo.remoteBgpIdentifier(), - sessionInfo.remoteBgpASNum(), - sessionInfo.isIbgpSession(), - ((!isVpnRib) ? - (peer.adjacencyRib().linkTree().get(linkLsIdentifier)) : - (peer.vpnAdjacencyRib().linkTree() - .get(linkLsIdentifier)))); - - BgpSelectionAlgo selectionAlgo = new BgpSelectionAlgo(); - decisionResult = selectionAlgo.compare(linkTree.get(linkLsIdentifier), detailsLocRib); - if (decisionResult < 0) { - linkTree.replace(linkLsIdentifier, detailsLocRib); - log.debug("Local RIB link updated: {}", detailsLocRib.toString()); - } - } else { - if (!isVpnRib) { - if (peer.adjacencyRib().linkTree().containsKey(linkLsIdentifier)) { - add(peer.sessionInfo(), nlri, peer.adjacencyRib().linkTree().get(linkLsIdentifier)); - } - } else { - if (peer.vpnAdjacencyRib().linkTree().containsKey(linkLsIdentifier)) { - add(peer.sessionInfo(), nlri, peer.vpnAdjacencyRib().linkTree().get(linkLsIdentifier)); - } - } - } - } - } - - /** - * Selection process for local RIB prefix. - * - * @param nlri NLRI to update - * @param isVpnRib true if VPN local RIB, otherwise false - */ - public void selectionProcessPrefix(BgpLSNlri nlri, boolean isVpnRib) { - BgpPeerImpl peer; - BgpSessionInfo sessionInfo; - int decisionResult; - boolean containsKey; - - BgpPrefixLSIdentifier prefixIdentifier = ((BgpPrefixIPv4LSNlriVer4) nlri).getPrefixIdentifier(); - if (prefixTree.containsKey(prefixIdentifier)) { - log.debug("Local RIB remove prefix: {}", prefixIdentifier.toString()); - prefixTree.remove(prefixIdentifier); - } - - for (BgpId bgpId : bgpController.connectedPeers().keySet()) { - peer = (BgpPeerImpl) (bgpController.getPeer(bgpId)); - - if (prefixTree.containsKey(prefixIdentifier)) { - - containsKey = (!isVpnRib) ? (peer.adjacencyRib().prefixTree().containsKey(prefixIdentifier)) : - (peer.vpnAdjacencyRib().prefixTree().containsKey(prefixIdentifier)); - if (!containsKey) { - continue; - } - sessionInfo = peer.sessionInfo(); - - PathAttrNlriDetailsLocalRib detailsLocRib = new PathAttrNlriDetailsLocalRib( - sessionInfo.remoteBgpId().ipAddress(), - sessionInfo.remoteBgpIdentifier(), - sessionInfo.remoteBgpASNum(), - sessionInfo.isIbgpSession(), - ((!isVpnRib) ? - (peer.adjacencyRib().prefixTree() - .get(prefixIdentifier)) : - (peer.vpnAdjacencyRib().prefixTree() - .get(prefixIdentifier)))); - - BgpSelectionAlgo selectionAlgo = new BgpSelectionAlgo(); - decisionResult = selectionAlgo.compare(prefixTree.get(prefixIdentifier), detailsLocRib); - if (decisionResult < 0) { - prefixTree.replace(prefixIdentifier, detailsLocRib); - log.debug("local RIB prefix updated: {}", detailsLocRib.toString()); - } - } else { - if (!isVpnRib) { - if (peer.adjacencyRib().prefixTree().containsKey(prefixIdentifier)) { - add(peer.sessionInfo(), nlri, peer.adjacencyRib().prefixTree().get(prefixIdentifier)); - } else { - if (peer.vpnAdjacencyRib().prefixTree().containsKey(prefixIdentifier)) { - add(peer.sessionInfo(), nlri, peer.vpnAdjacencyRib().prefixTree().get(prefixIdentifier)); - } - } - } - } - } - } - - @Override - public void add(BgpSessionInfo sessionInfo, BgpLSNlri nlri, PathAttrNlriDetails details, - RouteDistinguisher routeDistinguisher) { - add(sessionInfo, nlri, details); - if (nlri instanceof BgpNodeLSNlriVer4) { - if (!vpnNodeTree.containsKey(routeDistinguisher)) { - vpnNodeTree.put(routeDistinguisher, nodeTree); - } - } else if (nlri instanceof BgpLinkLsNlriVer4) { - if (!vpnLinkTree.containsKey(routeDistinguisher)) { - vpnLinkTree.put(routeDistinguisher, linkTree); - } - } else if (nlri instanceof BgpPrefixIPv4LSNlriVer4) { - if (!vpnPrefixTree.containsKey(routeDistinguisher)) { - vpnPrefixTree.put(routeDistinguisher, prefixTree); - } - } - } - - @Override - public void delete(BgpLSNlri nlri, RouteDistinguisher routeDistinguisher) { - // Update local RIB - decisionProcess(nlri, routeDistinguisher); - } - - /** - * Update local RIB node based on avaliable peer adjacency RIB. - * - * @param o adjacency-in/VPN adjacency-in - */ - public void localRIBUpdateNode(Object o) { - - if (o instanceof AdjRibIn) { - AdjRibIn adjRib = (AdjRibIn) o; - log.debug("Update local RIB node."); - - Set nodeKeys = adjRib.nodeTree().keySet(); - for (BgpNodeLSIdentifier key : nodeKeys) { - PathAttrNlriDetails pathAttrNlri = adjRib.nodeTree().get(key); - - BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(pathAttrNlri.identifier(), pathAttrNlri - .protocolID().getType(), key, false, null); - decisionProcess(nodeNlri); - } - } - - if (o instanceof VpnAdjRibIn) { - VpnAdjRibIn vpnAdjRib = (VpnAdjRibIn) o; - log.debug("Update local RIB VPN node."); - Set nodeKeysVpn = vpnAdjRib.vpnNodeTree().keySet(); - Map node; - for (RouteDistinguisher keyVpnNode : nodeKeysVpn) { - node = vpnAdjRib.vpnNodeTree().get(keyVpnNode); - - Set vpnNodeKeys = node.keySet(); - for (BgpNodeLSIdentifier key : vpnNodeKeys) { - PathAttrNlriDetails pathAttrNlri = vpnAdjRib.nodeTree().get(key); - BgpNodeLSNlriVer4 nodeNlri = new BgpNodeLSNlriVer4(pathAttrNlri.identifier(), - pathAttrNlri.protocolID().getType(), - key, true, keyVpnNode); - decisionProcess(nodeNlri, keyVpnNode); - } - } - } - } - - /** - * Update localRIB link based on avaliable peer adjacency RIB. - * - * @param o adjacency-in/VPN adjacency-in - */ - public void localRIBUpdateLink(Object o) { - - if (o instanceof AdjRibIn) { - AdjRibIn adjRib = (AdjRibIn) o; - log.debug("Update local RIB link."); - - Set linkKeys = adjRib.linkTree().keySet(); - for (BgpLinkLSIdentifier key : linkKeys) { - PathAttrNlriDetails pathAttrNlri = adjRib.linkTree().get(key); - BgpLinkLsNlriVer4 linkNlri = new BgpLinkLsNlriVer4(pathAttrNlri.protocolID().getType(), - pathAttrNlri.identifier(), key, null, false); - decisionProcess(linkNlri); - } - } - - if (o instanceof VpnAdjRibIn) { - VpnAdjRibIn vpnAdjRib = (VpnAdjRibIn) o; - log.debug("Update local RIB VPN link"); - - Set linkKeysVpn = vpnAdjRib.vpnLinkTree().keySet(); - Map link; - for (RouteDistinguisher keyVpnLink : linkKeysVpn) { - link = vpnAdjRib.vpnLinkTree().get(keyVpnLink); - - Set vpnLinkKeys = link.keySet(); - for (BgpLinkLSIdentifier key : vpnLinkKeys) { - PathAttrNlriDetails pathAttrNlri = vpnAdjRib.linkTree().get(key); - BgpLinkLsNlriVer4 linkNlri = new BgpLinkLsNlriVer4(pathAttrNlri.protocolID().getType(), - pathAttrNlri.identifier(), key, keyVpnLink, - true); - decisionProcess(linkNlri, keyVpnLink); - } - } - } - } - - /** - * Update localRIB prefix based on avaliable peer adjacency RIB. - * - * @param o instance of adjacency-in/VPN adjacency-in - */ - public void localRIBUpdatePrefix(Object o) { - - if (o instanceof AdjRibIn) { - AdjRibIn adjRib = (AdjRibIn) o; - log.debug("Update local RIB prefix."); - - Set prefixKeys = adjRib.prefixTree().keySet(); - for (BgpPrefixLSIdentifier key : prefixKeys) { - PathAttrNlriDetails pathAttrNlri = adjRib.prefixTree().get(key); - BgpPrefixIPv4LSNlriVer4 prefixNlri = new BgpPrefixIPv4LSNlriVer4( - pathAttrNlri.identifier(), - pathAttrNlri.protocolID().getType(), - key, null, false); - decisionProcess(prefixNlri); - } - } - - if (o instanceof VpnAdjRibIn) { - VpnAdjRibIn vpnAdjRib = (VpnAdjRibIn) o; - log.debug("Update local RIB VPN prefix."); - - Set prefixKeysVpn = vpnAdjRib.vpnPrefixTree().keySet(); - Map prefix; - for (RouteDistinguisher keyVpnPrefix : prefixKeysVpn) { - prefix = vpnAdjRib.vpnPrefixTree().get(keyVpnPrefix); - - Set vpnPrefixKeys = prefix.keySet(); - for (BgpPrefixLSIdentifier key : vpnPrefixKeys) { - PathAttrNlriDetails pathAttrNlri = vpnAdjRib.prefixTree().get(key); - BgpPrefixIPv4LSNlriVer4 prefixNlri = new BgpPrefixIPv4LSNlriVer4(pathAttrNlri.identifier(), - pathAttrNlri.protocolID() - .getType(), key, - keyVpnPrefix, true); - decisionProcess(prefixNlri, keyVpnPrefix); - } - } - } - } - - /** - * Update localRIB. - * - * @param adjRibIn adjacency RIB-in - */ - public void localRIBUpdate(AdjRibIn adjRibIn) { - log.debug("Update local RIB."); - - localRIBUpdateNode(adjRibIn); - localRIBUpdateLink(adjRibIn); - localRIBUpdatePrefix(adjRibIn); - } - - /** - * Update localRIB. - * - * @param vpnAdjRibIn VPN adjacency RIB-in - */ - public void localRIBUpdate(VpnAdjRibIn vpnAdjRibIn) { - log.debug("Update VPN local RIB."); - - localRIBUpdateNode(vpnAdjRibIn); - localRIBUpdateLink(vpnAdjRibIn); - localRIBUpdatePrefix(vpnAdjRibIn); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues().add("nodeTree", nodeTree) - .add("linkTree", linkTree).add("prefixTree", prefixTree).add("vpnNodeTree", vpnNodeTree) - .add("vpnLinkTree", vpnLinkTree).add("vpnPrefixTree", vpnPrefixTree).toString(); - } -} diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpMessageDecoder.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpMessageDecoder.java deleted file mode 100755 index 431c6210..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpMessageDecoder.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.bgp.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.bgpio.protocol.BgpMessage; -import org.onlab.util.HexDump; -import org.onosproject.bgpio.protocol.BgpFactories; -import org.onosproject.bgpio.protocol.BgpMessageReader; -import org.onosproject.bgpio.types.BgpHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Decode an bgp message from a Channel, for use in a netty pipeline. - */ -public class BgpMessageDecoder extends FrameDecoder { - - protected static final Logger log = LoggerFactory.getLogger(BgpMessageDecoder.class); - - @Override - protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception { - log.debug("MESSAGE IS RECEIVED."); - if (!channel.isConnected()) { - log.info("Channel is not connected."); - return null; - } - - HexDump.dump(buffer); - - BgpMessageReader reader = BgpFactories.getGenericReader(); - List msgList = new LinkedList(); - - while (buffer.readableBytes() > 0) { - BgpHeader bgpHeader = new BgpHeader(); - BgpMessage message = reader.readFrom(buffer, bgpHeader); - msgList.add(message); - } - return msgList; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpMessageEncoder.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpMessageEncoder.java deleted file mode 100755 index 3e56d6ff..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpMessageEncoder.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.bgp.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.bgpio.protocol.BgpMessage; -import org.onlab.util.HexDump; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Encode an bgp message for output into a ChannelBuffer, for use in a - * netty pipeline. - */ -public class BgpMessageEncoder extends OneToOneEncoder { - protected static final Logger log = LoggerFactory.getLogger(BgpMessageEncoder.class); - - @Override - protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { - log.debug("BGPMessageEncoder::encode"); - if (!(msg instanceof List)) { - log.debug("Invalid msg."); - return msg; - } - - @SuppressWarnings("unchecked") - List msglist = (List) msg; - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - log.debug("SENDING MESSAGE"); - for (BgpMessage pm : msglist) { - pm.writeTo(buf); - } - - HexDump.dump(buf); - - return buf; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPacketStatsImpl.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPacketStatsImpl.java deleted file mode 100755 index 7494c814..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPacketStatsImpl.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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.BgpPacketStats; - -/** - * 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 class BgpPacketStatsImpl implements BgpPacketStats { - - private int inPacketCount; - private int outPacketCount; - private int wrongPacketCount; - private long time; - - /** - * Resets parameter. - */ - public BgpPacketStatsImpl() { - this.inPacketCount = 0; - this.outPacketCount = 0; - this.wrongPacketCount = 0; - this.time = 0; - } - - /** - * Get the outgoing packet count number. - * - * @return packet count - */ - public int outPacketCount() { - return outPacketCount; - } - - /** - * Get the incoming packet count number. - * - * @return packet count - */ - public int inPacketCount() { - return inPacketCount; - } - - /** - * Get the wrong packet count number. - * - * @return packet count - */ - 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; - } - - /** - * Get the time. - * - * @return time - */ - public long getTime() { - return this.time; - } - - /** - * Sets the time. - * - * @param time value to set - */ - public void setTime(long time) { - this.time = time; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerConfig.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerConfig.java deleted file mode 100755 index a8eaee3c..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerConfig.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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.onlab.packet.Ip4Address; -import org.onosproject.bgp.controller.BgpConnectPeer; -import org.onosproject.bgp.controller.BgpPeerCfg; - -/** - * BGP Peer configuration information. - */ -public class BgpPeerConfig implements BgpPeerCfg { - private int asNumber; - private short holdTime; - private boolean isIBgp; - private Ip4Address peerId = null; - private State state; - private boolean selfInitiated; - private BgpConnectPeer connectPeer; - - /** - * Constructor to initialize the values. - */ - BgpPeerConfig() { - state = State.IDLE; - selfInitiated = false; - } - - @Override - public int getAsNumber() { - return this.asNumber; - } - - @Override - public void setAsNumber(int asNumber) { - this.asNumber = asNumber; - } - - @Override - public short getHoldtime() { - return this.holdTime; - } - - @Override - public void setHoldtime(short holdTime) { - this.holdTime = holdTime; - } - - @Override - public boolean getIsIBgp() { - return this.isIBgp; - } - - @Override - public void setIsIBgp(boolean isIBgp) { - this.isIBgp = isIBgp; - } - - @Override - public String getPeerRouterId() { - if (this.peerId != null) { - return this.peerId.toString(); - } else { - return null; - } - } - - @Override - public void setPeerRouterId(String peerId) { - this.peerId = Ip4Address.valueOf(peerId); - } - - @Override - public void setPeerRouterId(String peerId, int asNumber) { - this.peerId = Ip4Address.valueOf(peerId); - this.asNumber = asNumber; - } - - @Override - public State getState() { - return this.state; - } - - @Override - public void setState(State state) { - this.state = state; - } - - @Override - public boolean getSelfInnitConnection() { - return this.selfInitiated; - } - - @Override - 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/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java deleted file mode 100644 index e3f09f30..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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 java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.util.Collections; -import java.util.List; -import java.util.ListIterator; -import java.util.concurrent.RejectedExecutionException; - -import org.jboss.netty.channel.Channel; -import org.onlab.packet.IpAddress; -import org.onosproject.bgp.controller.BgpController; -import org.onosproject.bgp.controller.BgpPeer; -import org.onosproject.bgp.controller.BgpSessionInfo; -import org.onosproject.bgp.controller.BgpLocalRib; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.BgpFactories; -import org.onosproject.bgpio.protocol.BgpFactory; -import org.onosproject.bgpio.protocol.BgpLSNlri; -import org.onosproject.bgpio.protocol.BgpMessage; -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.protocol.linkstate.PathAttrNlriDetails; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.MpReachNlri; -import org.onosproject.bgpio.types.MpUnReachNlri; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * BGPPeerImpl implements BGPPeer, maintains peer information and store updates in RIB . - */ -public class BgpPeerImpl implements BgpPeer { - - protected final Logger log = LoggerFactory.getLogger(BgpPeerImpl.class); - - 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; - private BgpSessionInfo sessionInfo; - private BgpPacketStatsImpl pktStats; - private BgpLocalRib bgplocalRIB; - private BgpLocalRib bgplocalRIBVpn; - private AdjRibIn adjRib; - private VpnAdjRibIn vpnAdjRib; - - /** - * Return the adjacency RIB-IN. - * - * @return adjRib the adjacency RIB-IN - */ - public AdjRibIn adjacencyRib() { - return adjRib; - } - - /** - * Return the adjacency RIB-IN with VPN. - * - * @return vpnAdjRib the adjacency RIB-IN with VPN - */ - public VpnAdjRibIn vpnAdjacencyRib() { - return vpnAdjRib; - } - - @Override - 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; - this.bgplocalRIB = bgpController.bgpLocalRib(); - this.bgplocalRIBVpn = bgpController.bgpLocalRibVpn(); - this.adjRib = new AdjRibIn(); - this.vpnAdjRib = new VpnAdjRibIn(); - } - - - @Override - public void buildAdjRibIn(List pathAttr) throws BgpParseException { - ListIterator iterator = pathAttr.listIterator(); - while (iterator.hasNext()) { - BgpValueType attr = iterator.next(); - if (attr instanceof MpReachNlri) { - List nlri = ((MpReachNlri) attr).mpReachNlri(); - callAdd(this, nlri, pathAttr); - } - if (attr instanceof MpUnReachNlri) { - List nlri = ((MpUnReachNlri) attr).mpUnReachNlri(); - callRemove(this, nlri); - } - } - } - - /** - * Updates NLRI identifier node in a tree separately based on afi and safi. - * - * @param peerImpl BGP peer instance - * @param nlri MpReachNlri path attribute - * @param pathAttr list of BGP path attributes - * @throws BgpParseException throws exception - */ - public void callAdd(BgpPeerImpl peerImpl, List nlri, List pathAttr) - throws BgpParseException { - ListIterator listIterator = nlri.listIterator(); - while (listIterator.hasNext()) { - BgpLSNlri nlriInfo = listIterator.next(); - if (nlriInfo instanceof BgpNodeLSNlriVer4) { - PathAttrNlriDetails details = setPathAttrDetails(nlriInfo, pathAttr); - if (!((BgpNodeLSNlriVer4) nlriInfo).isVpnPresent()) { - adjRib.add(nlriInfo, details); - bgplocalRIB.add(sessionInfo(), nlriInfo, details); - } else { - vpnAdjRib.addVpn(nlriInfo, details, ((BgpNodeLSNlriVer4) nlriInfo).getRouteDistinguisher()); - bgplocalRIBVpn.add(sessionInfo(), nlriInfo, details, - ((BgpNodeLSNlriVer4) nlriInfo).getRouteDistinguisher()); - } - } else if (nlriInfo instanceof BgpLinkLsNlriVer4) { - PathAttrNlriDetails details = setPathAttrDetails(nlriInfo, pathAttr); - if (!((BgpLinkLsNlriVer4) nlriInfo).isVpnPresent()) { - adjRib.add(nlriInfo, details); - bgplocalRIB.add(sessionInfo(), nlriInfo, details); - } else { - vpnAdjRib.addVpn(nlriInfo, details, ((BgpLinkLsNlriVer4) nlriInfo).getRouteDistinguisher()); - bgplocalRIBVpn.add(sessionInfo(), nlriInfo, details, - ((BgpLinkLsNlriVer4) nlriInfo).getRouteDistinguisher()); - } - } else if (nlriInfo instanceof BgpPrefixIPv4LSNlriVer4) { - PathAttrNlriDetails details = setPathAttrDetails(nlriInfo, pathAttr); - if (!((BgpPrefixIPv4LSNlriVer4) nlriInfo).isVpnPresent()) { - adjRib.add(nlriInfo, details); - bgplocalRIB.add(sessionInfo(), nlriInfo, details); - } else { - vpnAdjRib.addVpn(nlriInfo, details, ((BgpPrefixIPv4LSNlriVer4) nlriInfo).getRouteDistinguisher()); - bgplocalRIBVpn.add(sessionInfo(), nlriInfo, details, - ((BgpPrefixIPv4LSNlriVer4) nlriInfo).getRouteDistinguisher()); - } - } - } - } - - /** - * Sets BGP path attribute and NLRI details. - * - * @param nlriInfo MpReachNlri path attribute - * @param pathAttr list of BGP path attributes - * @return details object of PathAttrNlriDetails - * @throws BgpParseException throw exception - */ - public PathAttrNlriDetails setPathAttrDetails(BgpLSNlri nlriInfo, List pathAttr) - throws BgpParseException { - PathAttrNlriDetails details = new PathAttrNlriDetails(); - details.setProtocolID(nlriInfo.getProtocolId()); - details.setIdentifier(nlriInfo.getIdentifier()); - details.setPathAttribute(pathAttr); - return details; - } - - /** - * Removes NLRI identifier node in a tree separately based on afi and safi. - * - * @param peerImpl BGP peer instance - * @param nlri NLRI information - */ - public void callRemove(BgpPeerImpl peerImpl, List nlri) { - ListIterator listIterator = nlri.listIterator(); - while (listIterator.hasNext()) { - BgpLSNlri nlriInfo = listIterator.next(); - if (nlriInfo instanceof BgpNodeLSNlriVer4) { - if (!((BgpNodeLSNlriVer4) nlriInfo).isVpnPresent()) { - adjRib.remove(nlriInfo); - bgplocalRIB.delete(nlriInfo); - } else { - vpnAdjRib.removeVpn(nlriInfo, ((BgpNodeLSNlriVer4) nlriInfo).getRouteDistinguisher()); - bgplocalRIBVpn.delete(nlriInfo, ((BgpNodeLSNlriVer4) nlriInfo).getRouteDistinguisher()); - } - } else if (nlriInfo instanceof BgpLinkLsNlriVer4) { - if (!((BgpLinkLsNlriVer4) nlriInfo).isVpnPresent()) { - adjRib.remove(nlriInfo); - bgplocalRIB.delete(nlriInfo); - } else { - vpnAdjRib.removeVpn(nlriInfo, ((BgpLinkLsNlriVer4) nlriInfo).getRouteDistinguisher()); - bgplocalRIBVpn.delete(nlriInfo, ((BgpLinkLsNlriVer4) nlriInfo).getRouteDistinguisher()); - } - } else if (nlriInfo instanceof BgpPrefixIPv4LSNlriVer4) { - if (!((BgpPrefixIPv4LSNlriVer4) nlriInfo).isVpnPresent()) { - adjRib.remove(nlriInfo); - bgplocalRIB.delete(nlriInfo); - } else { - vpnAdjRib.removeVpn(nlriInfo, ((BgpPrefixIPv4LSNlriVer4) nlriInfo).getRouteDistinguisher()); - bgplocalRIBVpn.delete(nlriInfo, ((BgpPrefixIPv4LSNlriVer4) nlriInfo).getRouteDistinguisher()); - } - } - } - } - - /** - * Return the adjacency RIB-IN. - * - * @return adjRib the adjacency RIB-IN - */ - public AdjRibIn adjRib() { - return adjRib; - } - - /** - * Return the adjacency RIB-IN with VPN. - * - * @return vpnAdjRib the adjacency RIB-IN with VPN - */ - public VpnAdjRibIn vpnAdjRib() { - return vpnAdjRib; - } - - /** - * Update localRIB on peer disconnect. - * - */ - public void updateLocalRIBOnPeerDisconnect() { - BgpLocalRibImpl localRib = (BgpLocalRibImpl) bgplocalRIB; - BgpLocalRibImpl localRibVpn = (BgpLocalRibImpl) bgplocalRIBVpn; - - localRib.localRIBUpdate(adjacencyRib()); - localRibVpn.localRIBUpdate(vpnAdjacencyRib()); - } - - // ************************ - // Channel related - // ************************ - - @Override - public final void disconnectPeer() { - this.channel.close(); - } - - @Override - public final void sendMessage(BgpMessage 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 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 final Channel getChannel() { - return this.channel; - }; - - @Override - public String channelId() { - return channelId; - } - - @Override - public BgpFactory factory() { - return BgpFactories.getFactory(sessionInfo.remoteBgpVersion()); - } - - @Override - public boolean isHandshakeComplete() { - return isHandShakeComplete; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("channel", channelId()) - .add("BgpId", sessionInfo().remoteBgpId()).toString(); - } -} diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPipelineFactory.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPipelineFactory.java deleted file mode 100755 index 28e1041c..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPipelineFactory.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.bgp.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.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. - */ -public class BgpPipelineFactory - implements ChannelPipelineFactory, ExternalResourceReleasable { - - static final Timer TIMER = new HashedWheelTimer(); - protected ReadTimeoutHandler readTimeoutHandler; - private boolean isBgpServ; - private BgpController bgpController; - - /** - * Constructor to initialize the values. - * - * @param bgpController parent controller - * @param isBgpServ if it is a server or remote peer - */ - public BgpPipelineFactory(BgpController bgpController, boolean isBgpServ) { - super(); - 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(bgpController); - - ChannelPipeline pipeline = Channels.pipeline(); - pipeline.addLast("bgpmessagedecoder", new BgpMessageDecoder()); - pipeline.addLast("bgpmessageencoder", new BgpMessageEncoder()); - pipeline.addLast("holdTime", readTimeoutHandler); - if (isBgpServ) { - pipeline.addLast("PassiveHandler", handler); - } else { - pipeline.addLast("ActiveHandler", handler); - } - - return pipeline; - } - - @Override - public void releaseExternalResources() { - TIMER.stop(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpSelectionAlgo.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpSelectionAlgo.java deleted file mode 100644 index d3065f43..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpSelectionAlgo.java +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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 java.util.Comparator; -import java.util.List; -import java.util.ListIterator; - -import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetailsLocalRib; -import org.onosproject.bgpio.types.AsPath; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.LocalPref; -import org.onosproject.bgpio.types.Med; -import org.onosproject.bgpio.types.Origin; -import org.onosproject.bgpio.types.Origin.ORIGINTYPE; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Implementation of BGP best path Selection process. - */ -public final class BgpSelectionAlgo implements Comparator { - private static final Logger log = LoggerFactory.getLogger(BgpSelectionAlgo.class); - LocalPref obj1LocPref = null; - AsPath obj1Aspath = null; - Origin obj1Origin = null; - Med obj1Med = null; - LocalPref obj2LocPref = null; - AsPath obj2Aspath = null; - Origin obj2Origin = null; - Med obj2Med = null; - - @Override - public int compare(PathAttrNlriDetailsLocalRib pathNlriDetails1, PathAttrNlriDetailsLocalRib pathNlriDetails2) { - if (pathNlriDetails1 == null) { - return -1; - } - if (pathNlriDetails2 == null) { - return 1; - } - if (pathNlriDetails1.equals(pathNlriDetails2)) { - return 0; - } - - List o1 = pathNlriDetails1.localRibNlridetails().pathAttributes(); - List o2 = pathNlriDetails2.localRibNlridetails().pathAttributes(); - ListIterator listIteratorObj1 = o1.listIterator(); - ListIterator listIteratorObj2 = o2.listIterator(); - storeAttr(listIteratorObj1, listIteratorObj2); - - // prefer attribute with higher local preference - if (obj1LocPref != null || obj2LocPref != null && (obj1LocPref != null && !obj1LocPref.equals(obj2LocPref))) { - return compareLocalPref(obj1LocPref, obj2LocPref); - } - - // prefer attribute with shortest Aspath - if (!obj1Aspath.equals(obj2Aspath)) { - Integer obj1Size = countASSize(obj1Aspath); - Integer obj2Size = countASSize(obj2Aspath); - if (obj1Size != obj2Size) { - return compareAsPath(obj1Size, obj2Size); - } - } - - // prefer attribute with lowest origin type - if (!obj1Origin.equals(obj2Origin)) { - return compareOrigin(obj1Origin, obj2Origin); - } - - // prefer attribute with lowest MED - if (obj1Med != null || obj2Med != null && (obj1Med != null && !obj1Med.equals(obj2Med))) { - return compareMed(obj1Med, obj2Med); - } - - if ((pathNlriDetails1 != null || pathNlriDetails2 != null) && (pathNlriDetails1 != null && !pathNlriDetails1 - .equals(pathNlriDetails2))) { - return comparePeerDetails(pathNlriDetails1, pathNlriDetails2); - } - return 0; - } - - /** - * Compares local preference of two objects and returns object with higher preference. - * - * @param obj1LocPref local preference object1 - * @param obj2LocPref local preference object2 - * @return object with higher preference - */ - int compareLocalPref(LocalPref obj1LocPref, LocalPref obj2LocPref) { - return ((Integer) (obj1LocPref.localPref())).compareTo((Integer) (obj2LocPref.localPref())); - } - - /** - * Compares AsPath of two objects and returns object with shortest AsPath. - * - * @param obj1Size object1 AS count - * @param obj2Size object2 AS count - * @return - */ - int compareAsPath(Integer obj1Size, Integer obj2Size) { - return obj1Size.compareTo(obj2Size); - } - - /** - * Compare Origin of two objects and returns object with lowest origin value. - * - * @param obj1Origin Origin object1 - * @param obj2Origin Origin object1 - * @return object with lowest origin value - */ - int compareOrigin(Origin obj1Origin, Origin obj2Origin) { - if (obj1Origin.origin() == ORIGINTYPE.IGP) { - return 1; - } - if (obj2Origin.origin() == ORIGINTYPE.IGP) { - return -1; - } - if (obj1Origin.origin() == ORIGINTYPE.EGP) { - return 1; - } else { - return -1; - } - } - - /** - * Compare Med of two objects and returns object with lowestMed value. - * - * @param obj1Med Med object1 - * @param obj2Med Med object2 - * @return returns object with lowestMed value - */ - int compareMed(Med obj1Med, Med obj2Med) { - return ((Integer) (obj2Med.med())).compareTo((Integer) (obj1Med.med())); - } - - /** - * Compares EBGP over IBGP, BGP identifier value and peer address. - * - * @param pathNlriDetails1 PathAttrNlriDetailsLocalRib object1 - * @param pathNlriDetails2 PathAttrNlriDetailsLocalRib object2 - * @return object which as EBGP over IBGP, lowest BGP identifier value and lowest peer address - */ - int comparePeerDetails(PathAttrNlriDetailsLocalRib pathNlriDetails1, PathAttrNlriDetailsLocalRib pathNlriDetails2) { - // consider EBGP over IBGP - if (pathNlriDetails1.isLocalRibIbgpSession() != pathNlriDetails2.isLocalRibIbgpSession()) { - if (pathNlriDetails1 == null || pathNlriDetails1.isLocalRibIbgpSession()) { - return -1; - } - if (pathNlriDetails2 == null || pathNlriDetails2.isLocalRibIbgpSession()) { - return 1; - } - } - // prefer lowest BGP identifier value. - if (pathNlriDetails1.localRibIdentifier() != pathNlriDetails2.localRibIdentifier()) { - return ((Integer) pathNlriDetails2.localRibIdentifier()) - .compareTo(pathNlriDetails1.localRibIdentifier()); - } - //prefer lowest peer address - if (pathNlriDetails1.localRibIpAddress() != pathNlriDetails2.localRibIpAddress()) { - return pathNlriDetails2.localRibIpAddress().compareTo(pathNlriDetails1.localRibIpAddress()); - } - return 0; - } - - /** - * Returns ASes count of AsPath attribute , if AS_SET is present then count as 1. - * - * @param aspath object of AsPath - * @return count of ASes - */ - Integer countASSize(AsPath aspath) { - boolean isASSet = false; - int count = 0; - if (!aspath.asPathSet().isEmpty()) { - isASSet = true; - } - if (!aspath.asPathSeq().isEmpty()) { - count = aspath.asPathSeq().size(); - } - return isASSet ? ++count : count; - } - - /** - * Stores BGP basic attributes of two objects. - * - * @param listIteratorObj1 list iterator of object1 - * @param listIteratorObj2 list iterator of object2 - */ - void storeAttr(ListIterator listIteratorObj1, ListIterator listIteratorObj2) { - while (listIteratorObj1.hasNext()) { - BgpValueType pathAttributeObj1 = listIteratorObj1.next(); - switch (pathAttributeObj1.getType()) { - case LocalPref.LOCAL_PREF_TYPE: - obj1LocPref = (LocalPref) pathAttributeObj1; - break; - case AsPath.ASPATH_TYPE: - obj1Aspath = (AsPath) pathAttributeObj1; - break; - case Origin.ORIGIN_TYPE: - obj1Origin = (Origin) pathAttributeObj1; - break; - case Med.MED_TYPE: - obj1Med = (Med) pathAttributeObj1; - break; - default: - log.debug("Got other type, Not required: " + pathAttributeObj1.getType()); - } - } - while (listIteratorObj2.hasNext()) { - BgpValueType pathAttributeObj2 = listIteratorObj2.next(); - switch (pathAttributeObj2.getType()) { - case LocalPref.LOCAL_PREF_TYPE: - obj2LocPref = (LocalPref) pathAttributeObj2; - break; - case AsPath.ASPATH_TYPE: - obj2Aspath = (AsPath) pathAttributeObj2; - break; - case Origin.ORIGIN_TYPE: - obj2Origin = (Origin) pathAttributeObj2; - break; - case Med.MED_TYPE: - obj2Med = (Med) pathAttributeObj2; - break; - default: - log.debug("Got other type, Not required: " + pathAttributeObj2.getType()); - } - } - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpSessionInfoImpl.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpSessionInfoImpl.java deleted file mode 100755 index 33623dc2..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpSessionInfoImpl.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.bgp.controller.impl; - -import org.onosproject.bgp.controller.BgpId; -import org.onosproject.bgp.controller.BgpSessionInfo; -import org.onosproject.bgpio.protocol.BgpVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Class maintains BGP peer session info. - */ -public class BgpSessionInfoImpl implements BgpSessionInfo { - - protected final Logger log = LoggerFactory.getLogger(BgpSessionInfoImpl.class); - private BgpId remoteBgpId; - private BgpVersion remoteBgpVersion; - private long remoteBgpASNum; - private short remoteBgpholdTime; - private int remoteBgpIdentifier; - private short negotiatedholdTime; - private boolean isIbgpSession; - - /** - * Initialize session info. - * - *@param remoteBgpId remote peer id - *@param remoteBgpVersion remote peer version - *@param remoteBgpASNum remote peer AS number - *@param remoteBgpholdTime remote peer hold time - *@param remoteBgpIdentifier remote peer identifier - *@param negotiatedholdTime negotiated hold time - *@param isIbgpSession session type ibgp/ebgp - */ - public BgpSessionInfoImpl(BgpId remoteBgpId, BgpVersion remoteBgpVersion, long remoteBgpASNum, - short remoteBgpholdTime, int remoteBgpIdentifier, short negotiatedholdTime, - boolean isIbgpSession) { - this.remoteBgpId = remoteBgpId; - this.remoteBgpVersion = remoteBgpVersion; - this.remoteBgpASNum = remoteBgpASNum; - this.remoteBgpholdTime = remoteBgpholdTime; - this.remoteBgpIdentifier = remoteBgpIdentifier; - this.negotiatedholdTime = negotiatedholdTime; - this.isIbgpSession = isIbgpSession; - } - - @Override - public boolean isIbgpSession() { - return isIbgpSession; - } - - @Override - public short negotiatedholdTime() { - return negotiatedholdTime; - } - - @Override - public BgpId remoteBgpId() { - return remoteBgpId; - } - - @Override - public BgpVersion remoteBgpVersion() { - return remoteBgpVersion; - } - - @Override - public long remoteBgpASNum() { - return remoteBgpASNum; - } - - @Override - public short remoteBgpHoldTime() { - return remoteBgpholdTime; - } - - @Override - public int remoteBgpIdentifier() { - return remoteBgpIdentifier; - } -} diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java deleted file mode 100755 index f02cee8a..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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 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.ClientBootstrap; -import org.jboss.netty.bootstrap.ServerBootstrap; -import org.jboss.netty.channel.Channel; -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; - -/** - * The main controller class. Handles all setup and network listeners - Distributed ownership control of bgp peer - * through IControllerRegistryService - */ -public class Controller { - - private static final Logger log = LoggerFactory.getLogger(Controller.class); - - private static final BgpFactory FACTORY4 = BgpFactories.getFactory(BgpVersion.BGP_4); - - private ChannelGroup cg; - public Channel serverChannel; - - // Configuration options - private static final short BGP_PORT_NUM = 179; - private static final short PORT_NUM_ZERO = 0; - private static boolean isPortNumSet = false; - private final int workerThreads = 16; - private final int peerWorkerThreads = 16; - - // Start time of the controller - private long systemStartTime; - - private NioServerSocketChannelFactory serverExecFactory; - private NioClientSocketChannelFactory peerExecFactory; - private static ClientBootstrap peerBootstrap; - private BgpController bgpController; - - // Perf. related configuration - private static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024; - - /** - * Constructor to initialize the values. - * - * @param bgpController bgp controller instance - */ - public Controller(BgpController bgpController) { - this.bgpController = bgpController; - } - - /** - * Returns factory version for processing BGP messages. - * - * @return instance of factory version - */ - static BgpFactory getBgpMessageFactory4() { - return FACTORY4; - } - - /** - * 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 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); - bootstrap.setOption("child.keepAlive", true); - bootstrap.setOption("child.tcpNoDelay", true); - bootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE); - - ChannelPipelineFactory pfact = new BgpPipelineFactory(bgpController, true); - - bootstrap.setPipelineFactory(pfact); - InetSocketAddress sa = new InetSocketAddress(getBgpPortNum()); - cg = new DefaultChannelGroup(); - serverChannel = bootstrap.bind(sa); - cg.add(serverChannel); - log.info("Listening for Peer connection on {}", sa); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Creates server boot strap. - * - * @return ServerBootStrap - */ - private ServerBootstrap createServerBootStrap() { - - if (workerThreads == 0) { - serverExecFactory = new NioServerSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/bgp", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/bgp", "worker-%d"))); - return new ServerBootstrap(serverExecFactory); - } else { - serverExecFactory = new NioServerSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/bgp", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/bgp", "worker-%d")), - workerThreads); - return new ServerBootstrap(serverExecFactory); - } - } - - /** - * 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() { - // These data structures are initialized here because other - // module's startUp() might be called before ours - this.systemStartTime = System.currentTimeMillis(); - } - - /** - * Gets run time memory. - * - * @return m run time memory - */ - public Map getMemory() { - Map m = new HashMap<>(); - Runtime runtime = Runtime.getRuntime(); - m.put("total", runtime.totalMemory()); - m.put("free", runtime.freeMemory()); - return m; - } - - /** - * Gets UP time. - * - * @return UP time - */ - public Long getUptime() { - RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean(); - return rb.getUptime(); - } - - /** - * Starts the BGP controller. - */ - public void start() { - log.info("Started"); - this.init(); - this.run(); - } - - /** - * Stops the BGP controller. - */ - public void stop() { - log.info("Stopped"); - serverExecFactory.shutdown(); - peerExecFactory.shutdown(); - cg.close(); - } - - /** - * Returns port number. - * - * @return port number - */ - public static short getBgpPortNum() { - if (isPortNumSet) { - return PORT_NUM_ZERO; - } - return BGP_PORT_NUM; - } - - /** - * sets the isPortNumSet as true. - */ - public void setBgpPortNum() { - isPortNumSet = true; - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/VpnAdjRibIn.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/VpnAdjRibIn.java deleted file mode 100644 index 8a9ea91c..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/VpnAdjRibIn.java +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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 java.util.Map; -import java.util.TreeMap; - -import org.onosproject.bgpio.protocol.BgpLSNlri; -import org.onosproject.bgpio.protocol.linkstate.BgpLinkLSIdentifier; -import org.onosproject.bgpio.protocol.linkstate.BgpLinkLsNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSIdentifier; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpPrefixIPv4LSNlriVer4; -import org.onosproject.bgpio.protocol.linkstate.BgpPrefixLSIdentifier; -import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetails; -import org.onosproject.bgpio.types.RouteDistinguisher; - -import com.google.common.base.MoreObjects; - -/** - * Implementation of Adj-RIB-In with VPN for each peer. - */ -public class VpnAdjRibIn { - private Map nodeTree = new TreeMap<>(); - private Map linkTree = new TreeMap<>(); - private Map prefixTree = new TreeMap<>(); - - private Map> vpnNodeTree - = new TreeMap<>(); - private Map> vpnLinkTree - = new TreeMap<>(); - private Map> vpnPrefixTree - = new TreeMap<>(); - /** - * Returns the adjacency node. - * - * @return node adjacency RIB node - */ - public Map nodeTree() { - return nodeTree; - } - - /** - * Returns the adjacency link. - * - * @return link adjacency RIB node - */ - public Map linkTree() { - return linkTree; - } - - /** - * Returns the adjacency prefix. - * - * @return prefix adjacency RIB node - */ - public Map prefixTree() { - return prefixTree; - } - - /** - * Returns the adjacency vpnNode. - * - * @return vpnNode adjacency RIB node - */ - public Map> vpnNodeTree() { - return vpnNodeTree; - } - - /** - * Returns the adjacency vpnLink. - * - * @return vpnLink adjacency RIB node - */ - public Map> vpnLinkTree() { - return vpnLinkTree; - } - - /** - * Returns the adjacency vpnPrefix. - * - * @return vpnPrefix adjacency RIB node - */ - public Map> vpnPrefixTree() { - return vpnPrefixTree; - } - - /** - * Update vpn nlri identifier into the tree if nlri identifier exists in tree otherwise add this to the tree. - * - * @param nlri NLRI info - * @param details has pathattribute , protocolID and identifier - */ - public void add(BgpLSNlri nlri, PathAttrNlriDetails details) { - if (nlri instanceof BgpNodeLSNlriVer4) { - BgpNodeLSIdentifier nodeLSIdentifier = ((BgpNodeLSNlriVer4) nlri).getLocalNodeDescriptors(); - if (nodeTree.containsKey(nodeLSIdentifier)) { - nodeTree.replace(nodeLSIdentifier, details); - } else { - nodeTree.put(nodeLSIdentifier, details); - } - } else if (nlri instanceof BgpLinkLsNlriVer4) { - BgpLinkLSIdentifier linkLSIdentifier = ((BgpLinkLsNlriVer4) nlri).getLinkIdentifier(); - if (linkTree.containsKey(linkLSIdentifier)) { - linkTree.replace(linkLSIdentifier, details); - } else { - linkTree.put(linkLSIdentifier, details); - } - } else if (nlri instanceof BgpPrefixIPv4LSNlriVer4) { - BgpPrefixLSIdentifier prefixIdentifier = ((BgpPrefixIPv4LSNlriVer4) nlri).getPrefixIdentifier(); - if (prefixTree.containsKey(prefixIdentifier)) { - prefixTree.replace(prefixIdentifier, details); - } else { - prefixTree.put(prefixIdentifier, details); - } - } - } - - /** - * Update nlri identifier mapped with route distinguisher if it exists in tree otherwise add nlri infomation mapped - * to respective route distinguisher in tree. - * - * @param nlri NLRI info - * @param details has pathattribute , protocolID and identifier - * @param routeDistinguisher unique for for each vpn - */ - public void addVpn(BgpLSNlri nlri, PathAttrNlriDetails details, RouteDistinguisher routeDistinguisher) { - add(nlri, details); - if (nlri instanceof BgpNodeLSNlriVer4) { - if (!vpnNodeTree.containsKey(routeDistinguisher)) { - vpnNodeTree.put(routeDistinguisher, nodeTree); - } - } else if (nlri instanceof BgpLinkLsNlriVer4) { - if (!vpnLinkTree.containsKey(routeDistinguisher)) { - vpnLinkTree.put(routeDistinguisher, linkTree); - } - } else if (nlri instanceof BgpPrefixIPv4LSNlriVer4) { - if (!vpnPrefixTree.containsKey(routeDistinguisher)) { - vpnPrefixTree.put(routeDistinguisher, prefixTree); - } - } - } - - /** - * Removes vpn nlri identifier mapped to route distinguisher if it exists in tree. - * - * @param nlri NLRI Info - * @param routeDistinguisher unique for for each vpn - */ - public void removeVpn(BgpLSNlri nlri, RouteDistinguisher routeDistinguisher) { - if (nlri instanceof BgpNodeLSNlriVer4) { - if (vpnNodeTree.containsKey(routeDistinguisher)) { - BgpNodeLSIdentifier nodeLSIdentifier = ((BgpNodeLSNlriVer4) nlri).getLocalNodeDescriptors(); - if (nodeTree.containsKey(nodeLSIdentifier)) { - nodeTree.remove(nodeLSIdentifier); - } - if ((vpnNodeTree.get(routeDistinguisher)).isEmpty()) { - vpnNodeTree.remove(routeDistinguisher); - } - } - } else if (nlri instanceof BgpLinkLsNlriVer4) { - if (vpnLinkTree.containsKey(routeDistinguisher)) { - BgpLinkLSIdentifier linkLSIdentifier = ((BgpLinkLsNlriVer4) nlri).getLinkIdentifier(); - if (linkTree.containsKey(linkLSIdentifier)) { - linkTree.remove(linkLSIdentifier); - } - if ((vpnLinkTree.get(routeDistinguisher)).isEmpty()) { - vpnLinkTree.remove(routeDistinguisher); - } - } - } else if (nlri instanceof BgpPrefixIPv4LSNlriVer4) { - if (vpnPrefixTree.containsKey(routeDistinguisher)) { - BgpPrefixLSIdentifier prefixIdentifier = ((BgpPrefixIPv4LSNlriVer4) nlri).getPrefixIdentifier(); - if (prefixTree.containsKey(prefixIdentifier)) { - prefixTree.remove(prefixIdentifier); - } - if ((vpnPrefixTree.get(routeDistinguisher)).isEmpty()) { - vpnPrefixTree.remove(routeDistinguisher); - } - } - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues().add("nodeTree", nodeTree) - .add("linkTree", linkTree) - .add("prefixTree", prefixTree) - .add("vpnNodeTree", vpnNodeTree) - .add("vpnLinkTree", vpnLinkTree) - .add("vpnPrefixTree", vpnPrefixTree) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/package-info.java b/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/package-info.java deleted file mode 100755 index fd4e9506..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/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 BGP controller IO subsystem. - */ -package org.onosproject.bgp.controller.impl; diff --git a/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpControllerImplTest.java b/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpControllerImplTest.java deleted file mode 100755 index 7549b922..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpControllerImplTest.java +++ /dev/null @@ -1,322 +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.bgp; - -import com.google.common.net.InetAddresses; -import org.jboss.netty.bootstrap.ClientBootstrap; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelFactory; -import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.Channels; -import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; - -import org.onlab.junit.TestUtils; - -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.util.LinkedList; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.onosproject.bgp.controller.BgpCfg; -import org.onosproject.bgp.controller.impl.BgpControllerImpl; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.FourOctetAsNumCapabilityTlv; -import org.onosproject.bgpio.types.MultiProtocolExtnCapabilityTlv; - -/** - * Test case for BGPControllerImpl. - */ -public class BgpControllerImplTest { - - protected static final Logger log = LoggerFactory - .getLogger(BgpControllerImplTest.class); - - private static final String IP_LOOPBACK_ID1 = "127.0.0.1"; - - private static final int MESSAGE_TIMEOUT_MS = 3000; - public byte version; - public short asNumber; - public short holdTime; - public int bgpId = InetAddresses.coerceToInteger(InetAddresses.forString(IP_LOOPBACK_ID1)); - public boolean isLargeAsCapabilitySet = false; - public LinkedList capabilityTlv = new LinkedList<>(); - - @Before - public void setUp() throws Exception { - peer1 = new BgpPeerTest(version, asNumber, - holdTime, bgpId, isLargeAsCapabilitySet, - capabilityTlv); - - bgpControllerImpl = new BgpControllerImpl(); - - // NOTE: We use port 0 to bind on any available port - bgpControllerImpl.controller().setBgpPortNum(); - bgpControllerImpl.activate(); - - Channel serverChannel = TestUtils.getField(bgpControllerImpl.controller(), - "serverChannel"); - SocketAddress socketAddress = serverChannel.getLocalAddress(); - InetSocketAddress inetSocketAddress = - (InetSocketAddress) socketAddress; - InetAddress connectToAddress = InetAddresses.forString("127.0.0.1"); - connectToSocket = new InetSocketAddress(connectToAddress, - inetSocketAddress.getPort()); - - bgpControllerImpl.getConfig().setRouterId("1.1.1.1"); - bgpControllerImpl.getConfig().setAsNumber(200); - bgpControllerImpl.getConfig().setHoldTime((short) 120); - bgpControllerImpl.getConfig().setState(BgpCfg.State.IP_AS_CONFIGURED); - - bgpControllerImpl.getConfig().addPeer("127.0.0.1", 200); - } - - @After - public void tearDown() throws Exception { - bgpControllerImpl.deactivate(); - bgpControllerImpl = null; - } - - private BgpControllerImpl bgpControllerImpl; - - BgpPeerTest peer1; - - // The socket that the remote peers should connect to - private InetSocketAddress connectToSocket; - - @Test - public void bgpOpenMessageTest1() throws InterruptedException { - short afi = 16388; - byte res = 0; - byte safi = 71; - peer1.peerChannelHandler.asNumber = 200; - peer1.peerChannelHandler.version = 4; - peer1.peerChannelHandler.holdTime = 120; - bgpControllerImpl.getConfig().setLsCapability(true); - BgpValueType tempTlv1 = new MultiProtocolExtnCapabilityTlv(afi, res, safi); - peer1.peerChannelHandler.capabilityTlv.add(tempTlv1); - peer1.connect(connectToSocket); - boolean result; - result = peer1.peerFrameDecoder.receivedOpenMessageLatch.await( - MESSAGE_TIMEOUT_MS, - TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - result = peer1.peerFrameDecoder.receivedKeepaliveMessageLatch.await( - MESSAGE_TIMEOUT_MS, - TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - } - - @Test - public void bgpOpenMessageTest2() throws InterruptedException { - // Open message with as number which is not configured at peer - short afi = 16388; - byte res = 0; - byte safi = 71; - peer1.peerChannelHandler.asNumber = 500; - peer1.peerChannelHandler.version = 4; - peer1.peerChannelHandler.holdTime = 120; - bgpControllerImpl.getConfig().setLsCapability(true); - BgpValueType tempTlv1 = new MultiProtocolExtnCapabilityTlv(afi, res, safi); - peer1.peerChannelHandler.capabilityTlv.add(tempTlv1); - peer1.connect(connectToSocket); - - boolean result; - result = peer1.peerFrameDecoder.receivedOpenMessageLatch.await(MESSAGE_TIMEOUT_MS, TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - result = peer1.peerFrameDecoder.receivedKeepaliveMessageLatch.await(MESSAGE_TIMEOUT_MS, TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - result = peer1.peerFrameDecoder.receivedNotificationMessageLatch.await( - MESSAGE_TIMEOUT_MS, - TimeUnit.MILLISECONDS); - assertThat(result, is(false)); - } - - @Test - public void bgpOpenMessageTest3() throws InterruptedException { - // Open message with invalid hold time value - peer1.peerChannelHandler.asNumber = 200; - peer1.peerChannelHandler.version = 4; - peer1.peerChannelHandler.holdTime = 1; - peer1.connect(connectToSocket); - - boolean result; - result = peer1.peerFrameDecoder.receivedNotificationMessageLatch.await( - MESSAGE_TIMEOUT_MS, - TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - } - - @Test - public void bgpOpenMessageTest4() throws InterruptedException { - // Open message with invalid as number - peer1.peerChannelHandler.asNumber = 200; - peer1.peerChannelHandler.version = 4; - peer1.peerChannelHandler.holdTime = 120; - peer1.peerChannelHandler.isLargeAsCapabilitySet = true; - BgpValueType tempTlv = new FourOctetAsNumCapabilityTlv(766545); - peer1.peerChannelHandler.capabilityTlv.add(tempTlv); - peer1.connect(connectToSocket); - - boolean result; - result = peer1.peerFrameDecoder.receivedNotificationMessageLatch.await( - MESSAGE_TIMEOUT_MS, - TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - } - - @Test - public void bgpOpenMessageTest5() throws InterruptedException { - // Open message with LS capability - short afi = 16388; - byte res = 0; - byte safi = 71; - peer1.peerChannelHandler.asNumber = 200; - peer1.peerChannelHandler.version = 4; - peer1.peerChannelHandler.holdTime = 120; - bgpControllerImpl.getConfig().setLsCapability(true); - BgpValueType tempTlv1 = new MultiProtocolExtnCapabilityTlv(afi, res, safi); - peer1.peerChannelHandler.capabilityTlv.add(tempTlv1); - peer1.connect(connectToSocket); - - boolean result; - result = peer1.peerFrameDecoder.receivedOpenMessageLatch.await( - MESSAGE_TIMEOUT_MS, - TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - result = peer1.peerFrameDecoder.receivedKeepaliveMessageLatch.await( - MESSAGE_TIMEOUT_MS, - TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - } - - @Test - public void bgpOpenMessageTest6() throws InterruptedException { - // Open message with as4 capability - short afi = 16388; - byte res = 0; - byte safi = 71; - peer1.peerChannelHandler.asNumber = 200; - peer1.peerChannelHandler.version = 4; - peer1.peerChannelHandler.holdTime = 120; - peer1.peerChannelHandler.isLargeAsCapabilitySet = true; - bgpControllerImpl.getConfig().setLargeASCapability(true); - BgpValueType tempTlv = new FourOctetAsNumCapabilityTlv(200); - peer1.peerChannelHandler.capabilityTlv.add(tempTlv); - bgpControllerImpl.getConfig().setLsCapability(true); - BgpValueType tempTlv1 = new MultiProtocolExtnCapabilityTlv(afi, res, safi); - peer1.peerChannelHandler.capabilityTlv.add(tempTlv1); - peer1.connect(connectToSocket); - - boolean result; - result = peer1.peerFrameDecoder.receivedOpenMessageLatch.await( - MESSAGE_TIMEOUT_MS, - TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - result = peer1.peerFrameDecoder.receivedKeepaliveMessageLatch.await( - MESSAGE_TIMEOUT_MS, - TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - - result = peer1.peerFrameDecoder.receivedKeepaliveMessageLatch.await( - MESSAGE_TIMEOUT_MS, - TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - } - - @Test - public void bgpOpenMessageTest7() throws InterruptedException { - // Open message with both LS capability and as4 capability - short afi = 16388; - byte res = 0; - byte safi = 71; - peer1.peerChannelHandler.asNumber = 200; - peer1.peerChannelHandler.version = 4; - peer1.peerChannelHandler.holdTime = 120; - - peer1.peerChannelHandler.isLargeAsCapabilitySet = true; - bgpControllerImpl.getConfig().setLargeASCapability(true); - BgpValueType tempTlv = new FourOctetAsNumCapabilityTlv(200); - peer1.peerChannelHandler.capabilityTlv.add(tempTlv); - - bgpControllerImpl.getConfig().setLsCapability(true); - BgpValueType tempTlv1 = new MultiProtocolExtnCapabilityTlv(afi, res, safi); - peer1.peerChannelHandler.capabilityTlv.add(tempTlv1); - peer1.connect(connectToSocket); - - boolean result; - result = peer1.peerFrameDecoder.receivedOpenMessageLatch.await( - MESSAGE_TIMEOUT_MS, - TimeUnit.MILLISECONDS); - assertThat(result, is(true)); - } - - /** - * A class to capture the state for a BGP peer. - */ - private final class BgpPeerTest { - private ClientBootstrap peerBootstrap; - private BgpPeerFrameDecoderTest peerFrameDecoder = - new BgpPeerFrameDecoderTest(); - private BgpPeerChannelHandlerTest peerChannelHandler; - - private BgpPeerTest(byte version, short asNumber, - short holdTime, int bgpId, boolean isLargeAsCapabilitySet, - LinkedList capabilityTlv) { - peerChannelHandler = new BgpPeerChannelHandlerTest(version, - asNumber, holdTime, bgpId, isLargeAsCapabilitySet, capabilityTlv); - } - - /** - * Starts the BGP peer. - * - * @param connectToSocket the socket to connect to - */ - private void connect(InetSocketAddress connectToSocket) - throws InterruptedException { - - ChannelFactory channelFactory = - new NioClientSocketChannelFactory( - Executors.newCachedThreadPool(), - Executors.newCachedThreadPool()); - ChannelPipelineFactory pipelineFactory = () -> { - ChannelPipeline pipeline = Channels.pipeline(); - pipeline.addLast("BgpPeerFrameDecoderTest", - peerFrameDecoder); - pipeline.addLast("BgpPeerChannelHandlerTest", - peerChannelHandler); - return pipeline; - }; - - peerBootstrap = new ClientBootstrap(channelFactory); - peerBootstrap.setOption("child.keepAlive", true); - peerBootstrap.setOption("child.tcpNoDelay", true); - peerBootstrap.setPipelineFactory(pipelineFactory); - peerBootstrap.connect(connectToSocket); - } - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpPeerChannelHandlerTest.java b/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpPeerChannelHandlerTest.java deleted file mode 100755 index 26ed36d8..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpPeerChannelHandlerTest.java +++ /dev/null @@ -1,107 +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.bgp; - -import java.util.LinkedList; -import java.util.concurrent.TimeUnit; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.jboss.netty.channel.SimpleChannelHandler; -import org.onosproject.bgpio.protocol.ver4.BgpKeepaliveMsgVer4; -import org.onosproject.bgpio.protocol.ver4.BgpOpenMsgVer4; -import org.onosproject.bgpio.types.BgpHeader; -import org.onosproject.bgpio.types.BgpValueType; - -public class BgpPeerChannelHandlerTest extends SimpleChannelHandler { - public static final int OPEN_MSG_MINIMUM_LENGTH = 29; - public static final byte[] MARKER = new byte[] {(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 BgpHeader DEFAULT_OPEN_HEADER = new BgpHeader(MARKER, - (short) OPEN_MSG_MINIMUM_LENGTH, (byte) 0X01); - LinkedList capabilityTlv = new LinkedList<>(); - public byte version; - public short asNumber; - public short holdTime; - public int bgpId; - public boolean isLargeAsCapabilitySet; - - final BgpOpenMsgVer4 openMessage = new BgpOpenMsgVer4(); - ChannelHandlerContext savedCtx; - - /** - * Constructor to initialize all variables of BGP Open message. - * - * @param version BGP version in open message - * @param asNumber AS number in open message - * @param holdTime hold time in open message - * @param bgpId BGP identifier in open message - * @param capabilityTlv capabilities in open message - */ - public BgpPeerChannelHandlerTest(byte version, - short asNumber, - short holdTime, - int bgpId, - boolean isLargeAsCapabilitySet, - LinkedList capabilityTlv) { - this.version = version; - this.asNumber = asNumber; - this.holdTime = holdTime; - this.bgpId = bgpId; - this.isLargeAsCapabilitySet = isLargeAsCapabilitySet; - this.capabilityTlv = capabilityTlv; - } - - /** - * closes the channel. - */ - void closeChannel() { - savedCtx.getChannel().close(); - } - - @Override - public void channelConnected(ChannelHandlerContext ctx, - ChannelStateEvent channelEvent) throws InterruptedException { - this.savedCtx = ctx; - - BgpOpenMsgVer4 openMsg = new BgpOpenMsgVer4(DEFAULT_OPEN_HEADER, - this.version, - this.asNumber, - this.holdTime, - this.bgpId, - this.capabilityTlv); - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - openMsg.writeTo(buffer); - ctx.getChannel().write(buffer); - - TimeUnit.MILLISECONDS.sleep(100); - - BgpKeepaliveMsgVer4 keepaliveMsg = new BgpKeepaliveMsgVer4(); - ChannelBuffer buffer1 = ChannelBuffers.dynamicBuffer(); - keepaliveMsg.writeTo(buffer1); - ctx.getChannel().write(buffer1); - } - - @Override - public void channelDisconnected(ChannelHandlerContext ctx, - ChannelStateEvent channelEvent) { - //Do Nothing - } -} diff --git a/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpPeerFrameDecoderTest.java b/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpPeerFrameDecoderTest.java deleted file mode 100755 index 7767053f..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/bgp/BgpPeerFrameDecoderTest.java +++ /dev/null @@ -1,168 +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.bgp; - -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.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.util.concurrent.CountDownLatch; - -/** - * Class to decode the message received. - */ -public class BgpPeerFrameDecoderTest extends FrameDecoder { - static final byte OPEN_MSG_TYPE = 0x1; - static final byte KEEPALIVE_MSG_TYPE = 0x4; - static final byte UPDATE_MSG_TYPE = 0x2; - static final byte NOTIFICATION_MSG_TYPE = 0x3; - static final int MINIMUM_COMMON_HEADER_LENGTH = 19; - static final int MINIMUM_OPEN_MSG_LENGTH = 29; - static final int MINIMUM_HEADER_MARKER_LENGTH = 16; - static final int HEADER_AND_MSG_LEN = 18; - - protected static final Logger log = LoggerFactory - .getLogger(BgpPeerFrameDecoderTest.class); - final CountDownLatch receivedOpenMessageLatch = new CountDownLatch(1); - final CountDownLatch receivedKeepaliveMessageLatch = new CountDownLatch(1); - final CountDownLatch receivedNotificationMessageLatch = new CountDownLatch(1); - - @Override - protected Object decode(ChannelHandlerContext ctx, - Channel channel, - ChannelBuffer cb) throws Exception { - - if (cb.readableBytes() < MINIMUM_COMMON_HEADER_LENGTH) { - log.debug("Error: Packet length is less then minimum length"); - return null; - } - - byte[] marker = new byte[MINIMUM_HEADER_MARKER_LENGTH]; - cb.readBytes(marker); - for (int i = 0; i < marker.length; i++) { - if (marker[i] != (byte) 0xff) { - log.debug("Error: Marker must be set all ones"); - ctx.getChannel().close(); - return null; - } - } - - short length = cb.readShort(); - if (length < MINIMUM_COMMON_HEADER_LENGTH) { - log.debug("Error: Bad message length"); - ctx.getChannel().close(); - return null; - } - - if (length != (cb.readableBytes() + HEADER_AND_MSG_LEN)) { - log.debug("Error: Bad message length"); - ctx.getChannel().close(); - return null; - } - - byte type = cb.readByte(); - int len = length - MINIMUM_COMMON_HEADER_LENGTH; - - ChannelBuffer message = cb.readBytes(len); - - switch (type) { - case OPEN_MSG_TYPE: - processBgpOpen(ctx, message); - break; - case UPDATE_MSG_TYPE: - break; - case NOTIFICATION_MSG_TYPE: - processBgpNotification(ctx, message); - break; - case KEEPALIVE_MSG_TYPE: - processBgpKeepalive(ctx, message); - break; - default: - ctx.getChannel().close(); - return null; - } - - return null; - } - - /** - * Processes BGP open message. - * - * @param ctx Channel handler context - * @param message open message - */ - private void processBgpOpen(ChannelHandlerContext ctx, - ChannelBuffer message) { - int minLength = - MINIMUM_OPEN_MSG_LENGTH - MINIMUM_COMMON_HEADER_LENGTH; - if (message.readableBytes() < minLength) { - log.debug("Error: Bad message length"); - ctx.getChannel().close(); - return; - } - - message.readByte(); // read version - message.readShort(); // read AS number - message.readShort(); // read Hold timer - message.readInt(); // read BGP Identifier - // Optional Parameters - int optParamLen = message.readUnsignedByte(); - if (message.readableBytes() < optParamLen) { - log.debug("Error: Bad message length"); - ctx.getChannel().close(); - return; - } - message.readBytes(optParamLen); - - // Open message received - receivedOpenMessageLatch.countDown(); - } - - /** - * Processes BGP keepalive message. - * - * @param ctx Channel handler context - * @param message keepalive message - */ - private void processBgpKeepalive(ChannelHandlerContext ctx, - ChannelBuffer message) { - - // Keepalive message received - receivedKeepaliveMessageLatch.countDown(); - } - - /** - * Processes BGP notification message. - * - * @param ctx Channel handler context - * @param message notification message - */ - private void processBgpNotification(ChannelHandlerContext ctx, - ChannelBuffer message) { - byte[] data; - message.readByte(); //read error code - message.readByte(); // read error sub code - if (message.readableBytes() > 0) { - data = new byte[message.readableBytes()]; - message.readBytes(data, 0, message.readableBytes()); - } - - // Notification message received - receivedNotificationMessageLatch.countDown(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/controller/impl/BgpSelectionAlgoTest.java b/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/controller/impl/BgpSelectionAlgoTest.java deleted file mode 100644 index 7c0fa417..00000000 --- a/framework/src/onos/protocols/bgp/ctl/src/test/java/org/onosproject/controller/impl/BgpSelectionAlgoTest.java +++ /dev/null @@ -1,595 +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.controller.impl; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpAddress.Version; -import org.onosproject.bgpio.exceptions.BgpParseException; -import org.onosproject.bgpio.protocol.linkstate.BgpNodeLSNlriVer4.ProtocolType; -import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetails; -import org.onosproject.bgpio.protocol.linkstate.PathAttrNlriDetailsLocalRib; -import org.onosproject.bgpio.types.AsPath; -import org.onosproject.bgpio.types.BgpValueType; -import org.onosproject.bgpio.types.LocalPref; -import org.onosproject.bgpio.types.Med; -import org.onosproject.bgpio.types.Origin; -import org.onosproject.bgp.controller.impl.BgpSelectionAlgo; - -/** - * Test cases for BGP Selection Algorithm. - */ -public class BgpSelectionAlgoTest { - - /** - * firstPathAttribute and secondPathAttribute has same AS count and firstPathAttribute - * has shortest Origin value than secondPathAttribute. - */ - @Test - public void selectionAlgoTest1() throws BgpParseException { - byte[] peerIp = new byte[] {0x0a, 0x0a, 0x0a, 0x0a }; - LinkedList pathAttributes1 = new LinkedList<>(); - BgpValueType pathAttribute1; - //origin with IGP - byte[] origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute1 = Origin.read(buffer); - pathAttributes1.add(pathAttribute1); - //AsPath with AS_SEQ with one AS - byte[] asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xea }; - buffer.writeBytes(asPath); - pathAttribute1 = AsPath.read(buffer); - pathAttributes1.add(pathAttribute1); - - IpAddress ipAddress = IpAddress.valueOf(Version.INET, peerIp); - int bgpId = 168427777; - short locRIBASNum = 100; - boolean isIbgp = false; - PathAttrNlriDetails attrList1 = new PathAttrNlriDetails(); - attrList1.setIdentifier(0); - attrList1.setPathAttribute(pathAttributes1); - attrList1.setProtocolID(ProtocolType.ISIS_LEVEL_ONE); - PathAttrNlriDetailsLocalRib list1 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList1); - - peerIp = new byte[] {0x0b, 0x0b, 0x0b, 0x0b }; - LinkedList pathAttributes2 = new LinkedList<>(); - BgpValueType pathAttribute2; - //origin with INCOMPLETE - origin = new byte[] {0x40, 0x01, 0x01, 0x02 }; - buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute2 = Origin.read(buffer); - pathAttributes2.add(pathAttribute2); - //AsPath with AS_SEQ with one AS - asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute2 = AsPath.read(buffer); - pathAttributes2.add(pathAttribute2); - - ipAddress = IpAddress.valueOf(Version.INET, peerIp); - bgpId = 536936448; - locRIBASNum = 200; - isIbgp = true; - PathAttrNlriDetails attrList2 = new PathAttrNlriDetails(); - attrList2.setIdentifier(0); - attrList2.setPathAttribute(pathAttributes2); - attrList2.setProtocolID(ProtocolType.OSPF_V2); - PathAttrNlriDetailsLocalRib list2 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList2); - BgpSelectionAlgo algo = new BgpSelectionAlgo(); - int result = algo.compare(list1, list2); - assertThat(result, is(1)); - } - - /** - * firstPathAttribute has 1 AS count and secondPathAttribute has 2 AS count - * and firstPathAttribute has shortest Origin value than secondPathAttribute. - */ - @Test - public void selectionAlgoTest2() throws BgpParseException { - - byte[] peerIp = new byte[] {0x0a, 0x0a, 0x0a, 0x0a }; - LinkedList pathAttributes1 = new LinkedList<>(); - BgpValueType pathAttribute1; - byte[] origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute1 = Origin.read(buffer); - pathAttributes1.add(pathAttribute1); - byte[] asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute1 = AsPath.read(buffer); - pathAttributes1.add(pathAttribute1); - - IpAddress ipAddress = IpAddress.valueOf(Version.INET, peerIp); - int bgpId = 168427777; - short locRIBASNum = 100; - boolean isIbgp = false; - PathAttrNlriDetails attrList1 = new PathAttrNlriDetails(); - attrList1.setIdentifier(0); - attrList1.setPathAttribute(pathAttributes1); - attrList1.setProtocolID(ProtocolType.ISIS_LEVEL_ONE); - PathAttrNlriDetailsLocalRib list1 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList1); - - peerIp = new byte[] {0x0b, 0x0b, 0x0b, 0x0b }; - LinkedList pathAttributes2 = new LinkedList<>(); - BgpValueType pathAttribute2; - origin = new byte[] {0x40, 0x01, 0x01, 0x02 }; - buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute2 = Origin.read(buffer); - pathAttributes2.add(pathAttribute2); - asPath = new byte[] {0x40, 0x02, 0x08, 0x02, 0x01, (byte) 0xfd, - (byte) 0xea, 0x02, 0x01, (byte) 0xfd, (byte) 0xea }; - buffer.writeBytes(asPath); - pathAttribute2 = AsPath.read(buffer); - pathAttributes2.add(pathAttribute2); - - ipAddress = IpAddress.valueOf(Version.INET, peerIp); - bgpId = 536936448; - locRIBASNum = 200; - isIbgp = true; - PathAttrNlriDetails attrList2 = new PathAttrNlriDetails(); - attrList2.setIdentifier(0); - attrList2.setPathAttribute(pathAttributes2); - attrList2.setProtocolID(ProtocolType.OSPF_V2); - PathAttrNlriDetailsLocalRib list2 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList2); - BgpSelectionAlgo algo = new BgpSelectionAlgo(); - int result = algo.compare(list1, list2); - assertThat(result, is(-1)); - } - - /** - * firstPathAttribute and secondPathAttribute has same AS value - * and firstPathAttribute has shortest Origin value than secondPathAttribute. - */ - @Test - public void selectionAlgoTest3() throws BgpParseException { - - byte[] peerIp = new byte[] {0x0a, 0x0a, 0x0a, 0x0a }; - LinkedList pathAttributes1 = new LinkedList<>(); - BgpValueType pathAttribute1; - byte[] origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute1 = Origin.read(buffer); - pathAttributes1.add(pathAttribute1); - byte[] asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute1 = AsPath.read(buffer); - pathAttributes1.add(pathAttribute1); - - IpAddress ipAddress = IpAddress.valueOf(Version.INET, peerIp); - int bgpId = 168427777; - short locRIBASNum = 100; - boolean isIbgp = false; - PathAttrNlriDetails attrList1 = new PathAttrNlriDetails(); - attrList1.setIdentifier(0); - attrList1.setPathAttribute(pathAttributes1); - attrList1.setProtocolID(ProtocolType.ISIS_LEVEL_ONE); - PathAttrNlriDetailsLocalRib list1 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList1); - - peerIp = new byte[] {0x0b, 0x0b, 0x0b, 0x0b }; - LinkedList pathAttributes2 = new LinkedList<>(); - BgpValueType pathAttribute2; - origin = new byte[] {0x40, 0x01, 0x01, 0x02 }; - buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute2 = Origin.read(buffer); - pathAttributes2.add(pathAttribute2); - asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute2 = AsPath.read(buffer); - pathAttributes2.add(pathAttribute2); - - ipAddress = IpAddress.valueOf(Version.INET, peerIp); - bgpId = 536936448; - locRIBASNum = 200; - isIbgp = true; - PathAttrNlriDetails attrList2 = new PathAttrNlriDetails(); - attrList2.setIdentifier(0); - attrList2.setPathAttribute(pathAttributes2); - attrList2.setProtocolID(ProtocolType.OSPF_V2); - PathAttrNlriDetailsLocalRib list2 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList2); - BgpSelectionAlgo algo = new BgpSelectionAlgo(); - int result = algo.compare(list1, list2); - assertThat(result, is(1)); - } - - /** - * firstPathAttribute has lowest med than secondPathAttribute. - */ - @Test - public void selectionAlgoTest4() throws BgpParseException { - - byte[] peerIp = new byte[] {0x0a, 0x0a, 0x0a, 0x0a }; - LinkedList pathAttributes1 = new LinkedList<>(); - BgpValueType pathAttribute1; - byte[] origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute1 = Origin.read(buffer); - pathAttributes1.add(pathAttribute1); - byte[] med = new byte[] {(byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, - 0x00 }; - buffer.writeBytes(med); - pathAttribute1 = Med.read(buffer); - pathAttributes1.add(pathAttribute1); - byte[] asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute1 = AsPath.read(buffer); - pathAttributes1.add(pathAttribute1); - - IpAddress ipAddress = IpAddress.valueOf(Version.INET, peerIp); - int bgpId = 168427777; - short locRIBASNum = 100; - boolean isIbgp = false; - PathAttrNlriDetails attrList1 = new PathAttrNlriDetails(); - attrList1.setIdentifier(0); - attrList1.setPathAttribute(pathAttributes1); - attrList1.setProtocolID(ProtocolType.ISIS_LEVEL_ONE); - PathAttrNlriDetailsLocalRib list1 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList1); - - peerIp = new byte[] {0x0b, 0x0b, 0x0b, 0x0b }; - LinkedList pathAttributes2 = new LinkedList<>(); - BgpValueType pathAttribute2; - origin = new byte[] {0x40, 0x01, 0x01, 0x02 }; - buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute2 = Origin.read(buffer); - pathAttributes2.add(pathAttribute2); - med = new byte[] {(byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x01 }; - buffer.writeBytes(med); - pathAttribute2 = Med.read(buffer); - pathAttributes2.add(pathAttribute2); - asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute2 = AsPath.read(buffer); - pathAttributes2.add(pathAttribute2); - - ipAddress = IpAddress.valueOf(Version.INET, peerIp); - bgpId = 536936448; - locRIBASNum = 200; - isIbgp = true; - PathAttrNlriDetails attrList2 = new PathAttrNlriDetails(); - attrList2.setIdentifier(0); - attrList2.setPathAttribute(pathAttributes2); - attrList2.setProtocolID(ProtocolType.OSPF_V2); - PathAttrNlriDetailsLocalRib list2 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList2); - BgpSelectionAlgo algo = new BgpSelectionAlgo(); - int result = algo.compare(list1, list2); - assertThat(result, is(1)); - } - - /** - * secondPathAttribute has higher local preference than firstPathAttribute. - */ - @Test - public void selectionAlgoTest5() throws BgpParseException { - - byte[] peerIp = new byte[] {0x0a, 0x0a, 0x0a, 0x0a }; - LinkedList pathAttributes1 = new LinkedList<>(); - BgpValueType pathAttribute1; - byte[] locPref = new byte[] {(byte) 0x00, 0x05, 0x04, 0x00, 0x00, - 0x00, 0x01 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(locPref); - pathAttribute1 = LocalPref.read(buffer); - pathAttributes1.add(pathAttribute1); - - IpAddress ipAddress = IpAddress.valueOf(Version.INET, peerIp); - int bgpId = 168427777; - short locRIBASNum = 100; - boolean isIbgp = false; - PathAttrNlriDetails attrList1 = new PathAttrNlriDetails(); - attrList1.setIdentifier(0); - attrList1.setPathAttribute(pathAttributes1); - attrList1.setProtocolID(ProtocolType.ISIS_LEVEL_ONE); - PathAttrNlriDetailsLocalRib list1 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList1); - - peerIp = new byte[] {0x0b, 0x0b, 0x0b, 0x0b }; - LinkedList pathAttributes2 = new LinkedList<>(); - BgpValueType pathAttribute2; - locPref = new byte[] {(byte) 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x0a }; - buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(locPref); - pathAttribute2 = LocalPref.read(buffer); - pathAttributes2.add(pathAttribute2); - - ipAddress = IpAddress.valueOf(Version.INET, peerIp); - bgpId = 536936448; - locRIBASNum = 200; - isIbgp = true; - PathAttrNlriDetails attrList2 = new PathAttrNlriDetails(); - attrList2.setIdentifier(0); - attrList2.setPathAttribute(pathAttributes2); - attrList2.setProtocolID(ProtocolType.OSPF_V2); - PathAttrNlriDetailsLocalRib list2 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList2); - BgpSelectionAlgo algo = new BgpSelectionAlgo(); - int result = algo.compare(list1, list2); - assertThat(result, is(-1)); - } - - /** - * secondPathAttribute is EBGP than firstPathAttribute is IBGP. - */ - @Test - public void selectionAlgoTest6() throws BgpParseException { - - byte[] peerIp = new byte[] {0x0a, 0x0a, 0x0a, 0x0a }; - LinkedList pathAttributes1 = new LinkedList<>(); - BgpValueType pathAttribute1; - byte[] origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute1 = Origin.read(buffer); - pathAttributes1.add(pathAttribute1); - byte[] asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute1 = AsPath.read(buffer); - pathAttributes1.add(pathAttribute1); - - IpAddress ipAddress = IpAddress.valueOf(Version.INET, peerIp); - int bgpId = 168427777; - short locRIBASNum = 100; - boolean isIbgp = true; - PathAttrNlriDetails attrList1 = new PathAttrNlriDetails(); - attrList1.setIdentifier(0); - attrList1.setPathAttribute(pathAttributes1); - attrList1.setProtocolID(ProtocolType.ISIS_LEVEL_ONE); - PathAttrNlriDetailsLocalRib list1 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList1); - - peerIp = new byte[] {0x0b, 0x0b, 0x0b, 0x0b }; - LinkedList pathAttributes2 = new LinkedList<>(); - BgpValueType pathAttribute2; - origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute2 = Origin.read(buffer); - pathAttributes2.add(pathAttribute2); - asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute2 = AsPath.read(buffer); - pathAttributes2.add(pathAttribute2); - - ipAddress = IpAddress.valueOf(Version.INET, peerIp); - bgpId = 536936448; - locRIBASNum = 200; - isIbgp = false; - PathAttrNlriDetails attrList2 = new PathAttrNlriDetails(); - attrList2.setIdentifier(0); - attrList2.setPathAttribute(pathAttributes2); - attrList2.setProtocolID(ProtocolType.OSPF_V2); - PathAttrNlriDetailsLocalRib list2 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, false, attrList2); - BgpSelectionAlgo algo = new BgpSelectionAlgo(); - int result = algo.compare(list1, list2); - assertThat(result, is(-1)); - } - - /** - * firstPathAttribute has lower BGPID than secondPathAttribute. - */ - @Test - public void selectionAlgoTest7() throws BgpParseException { - - byte[] peerIp = new byte[] {0x0a, 0x0a, 0x0a, 0x0a }; - LinkedList pathAttributes1 = new LinkedList<>(); - BgpValueType pathAttribute1; - byte[] origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute1 = Origin.read(buffer); - pathAttributes1.add(pathAttribute1); - byte[] asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute1 = AsPath.read(buffer); - pathAttributes1.add(pathAttribute1); - - IpAddress ipAddress = IpAddress.valueOf(Version.INET, peerIp); - //A0A0A00 - Integer bgpId = 168430080; - short locRIBASNum = 100; - boolean isIbgp = false; - PathAttrNlriDetails attrList1 = new PathAttrNlriDetails(); - attrList1.setIdentifier(0); - attrList1.setPathAttribute(pathAttributes1); - attrList1.setProtocolID(ProtocolType.ISIS_LEVEL_ONE); - PathAttrNlriDetailsLocalRib list1 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList1); - - peerIp = new byte[] {0x0b, 0x0b, 0x0b, 0x0b }; - LinkedList pathAttributes2 = new LinkedList<>(); - BgpValueType pathAttribute2; - origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute2 = Origin.read(buffer); - pathAttributes2.add(pathAttribute2); - asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute2 = AsPath.read(buffer); - pathAttributes2.add(pathAttribute2); - - ipAddress = IpAddress.valueOf(Version.INET, peerIp); - //B0A0A00 - bgpId = 185207296; - locRIBASNum = 200; - isIbgp = false; - PathAttrNlriDetails attrList2 = new PathAttrNlriDetails(); - attrList2.setIdentifier(0); - attrList2.setPathAttribute(pathAttributes2); - attrList2.setProtocolID(ProtocolType.OSPF_V2); - PathAttrNlriDetailsLocalRib list2 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList2); - BgpSelectionAlgo algo = new BgpSelectionAlgo(); - int result = algo.compare(list1, list2); - assertThat(result, is(1)); - } - - /** - * secondPathAttribute has lowest peer address than firstPathAttribute. - */ - @Test - public void selectionAlgoTest8() throws BgpParseException { - - byte[] peerIp = new byte[] {0x0b, 0x0b, 0x0b, 0x0b }; - LinkedList pathAttributes1 = new LinkedList<>(); - BgpValueType pathAttribute1; - byte[] origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute1 = Origin.read(buffer); - pathAttributes1.add(pathAttribute1); - byte[] asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute1 = AsPath.read(buffer); - pathAttributes1.add(pathAttribute1); - - IpAddress ipAddress = IpAddress.valueOf(Version.INET, peerIp); - //A0A0A00 - Integer bgpId = 168430080; - short locRIBASNum = 100; - boolean isIbgp = false; - PathAttrNlriDetails attrList1 = new PathAttrNlriDetails(); - attrList1.setIdentifier(0); - attrList1.setPathAttribute(pathAttributes1); - attrList1.setProtocolID(ProtocolType.ISIS_LEVEL_ONE); - PathAttrNlriDetailsLocalRib list1 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList1); - - peerIp = new byte[] {0x0a, 0x0a, 0x0a, 0x0a }; - LinkedList pathAttributes2 = new LinkedList<>(); - BgpValueType pathAttribute2; - origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute2 = Origin.read(buffer); - pathAttributes2.add(pathAttribute2); - asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute2 = AsPath.read(buffer); - pathAttributes2.add(pathAttribute2); - - ipAddress = IpAddress.valueOf(Version.INET, peerIp); - //A0A0A00 - bgpId = 168430080; - locRIBASNum = 200; - isIbgp = false; - PathAttrNlriDetails attrList2 = new PathAttrNlriDetails(); - attrList2.setIdentifier(0); - attrList2.setPathAttribute(pathAttributes2); - attrList2.setProtocolID(ProtocolType.OSPF_V2); - PathAttrNlriDetailsLocalRib list2 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList2); - BgpSelectionAlgo algo = new BgpSelectionAlgo(); - int result = algo.compare(list1, list2); - assertThat(result, is(-1)); - } - - /** - * firstPathAttribute and secondPathAttribute are same. - */ - @Test - public void selectionAlgoTest9() throws BgpParseException { - - byte[] peerIp = new byte[] {0x0a, 0x0a, 0x0a, 0x0a }; - LinkedList pathAttributes1 = new LinkedList<>(); - BgpValueType pathAttribute1; - byte[] origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute1 = Origin.read(buffer); - pathAttributes1.add(pathAttribute1); - byte[] asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute1 = AsPath.read(buffer); - pathAttributes1.add(pathAttribute1); - - IpAddress ipAddress = IpAddress.valueOf(Version.INET, peerIp); - //A0A0A00 - Integer bgpId = 168430080; - short locRIBASNum = 100; - boolean isIbgp = false; - PathAttrNlriDetails attrList1 = new PathAttrNlriDetails(); - attrList1.setIdentifier(0); - attrList1.setPathAttribute(pathAttributes1); - attrList1.setProtocolID(ProtocolType.ISIS_LEVEL_ONE); - PathAttrNlriDetailsLocalRib list1 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList1); - - peerIp = new byte[] {0x0a, 0x0a, 0x0a, 0x0a }; - LinkedList pathAttributes2 = new LinkedList<>(); - BgpValueType pathAttribute2; - origin = new byte[] {0x40, 0x01, 0x01, 0x00 }; - buffer = ChannelBuffers.dynamicBuffer(); - buffer.writeBytes(origin); - pathAttribute2 = Origin.read(buffer); - pathAttributes2.add(pathAttribute2); - asPath = new byte[] {0x40, 0x02, 0x04, 0x02, 0x01, (byte) 0xfd, - (byte) 0xe9 }; - buffer.writeBytes(asPath); - pathAttribute2 = AsPath.read(buffer); - pathAttributes2.add(pathAttribute2); - - ipAddress = IpAddress.valueOf(Version.INET, peerIp); - //A0A0A00 - bgpId = 168430080; - locRIBASNum = 200; - isIbgp = false; - PathAttrNlriDetails attrList2 = new PathAttrNlriDetails(); - attrList2.setIdentifier(0); - attrList2.setPathAttribute(pathAttributes2); - attrList2.setProtocolID(ProtocolType.OSPF_V2); - PathAttrNlriDetailsLocalRib list2 = new PathAttrNlriDetailsLocalRib( - ipAddress, bgpId, locRIBASNum, isIbgp, attrList2); - BgpSelectionAlgo algo = new BgpSelectionAlgo(); - int result = algo.compare(list1, list2); - assertThat(result, is(0)); - } -} diff --git a/framework/src/onos/protocols/bgp/pom.xml b/framework/src/onos/protocols/bgp/pom.xml deleted file mode 100755 index 64062a66..00000000 --- a/framework/src/onos/protocols/bgp/pom.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - 4.0.0 - - - org.onosproject - onos-protocols - 1.4.0-rc1 - ../pom.xml - - - onos-bgp - pom - - ONOS BGP Protocol subsystem - - - api - ctl - bgpio - - - diff --git a/framework/src/onos/protocols/netconf/api/pom.xml b/framework/src/onos/protocols/netconf/api/pom.xml deleted file mode 100644 index 74a37838..00000000 --- a/framework/src/onos/protocols/netconf/api/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - 4.0.0 - - org.onosproject - onos-netconf - 1.4.0-rc1 - ../pom.xml - - - onos-netconf-api - bundle - - ONOS NETCONF plugin API - - - - commons-pool - commons-pool - - - io.netty - netty-transport - - - io.netty - netty-transport-native-epoll - ${netty4.version} - - - - diff --git a/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.java b/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.java deleted file mode 100644 index 6411c011..00000000 --- a/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.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.netconf; - -import org.onlab.packet.IpAddress; -import org.onosproject.net.DeviceId; - -import java.util.Map; - -/** - * Abstraction of an NETCONF controller. Serves as a one stop shop for obtaining - * NetconfDevice and (un)register listeners on NETCONF device events. - */ -public interface NetconfController { - - /** - * Adds Device Event Listener. - * - * @param listener node listener - */ - void addDeviceListener(NetconfDeviceListener listener); - - /** - * Removes Device Listener. - * - * @param listener node listener - */ - void removeDeviceListener(NetconfDeviceListener listener); - - /** - * Tries to connect to a specific NETCONF device, if the connection is succesful - * it creates and adds the device to the ONOS core as a NetconfDevice. - * - * @param deviceInfo info about the device to add - * @return NetconfDevice Netconf device - */ - NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo); - - /** - * Removes a Netconf device. - * - * @param deviceInfo info about the device to remove - */ - void removeDevice(NetconfDeviceInfo deviceInfo); - - /** - * Gets all the nodes information. - * - * @return map of devices - */ - Map getDevicesMap(); - - /** - * Gets a Netconf Device by node identifier. - * - * @param deviceInfo node identifier - * @return NetconfDevice Netconf device - */ - NetconfDevice getNetconfDevice(DeviceId deviceInfo); - - /** - * Gets a Netconf Device by node identifier. - * - * @param ip device ip - * @param port device port - * @return NetconfDevice Netconf device - */ - NetconfDevice getNetconfDevice(IpAddress ip, int port); - -} diff --git a/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDevice.java b/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDevice.java deleted file mode 100644 index 1974782b..00000000 --- a/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDevice.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.netconf; - -/** - * Interface representing a NETCONF device. - */ -public interface NetconfDevice { - - - /** - * Returns whether a device is a NETCONF device with a capabilities list - * and is accessible. - * - * @return true if device is accessible, false otherwise - */ - boolean isActive(); - - /** - * Returns a NETCONF session context for this device. - * - * @return netconf session - */ - NetconfSession getSession(); - - /** - * Ensures that all sessions are closed. - * A device cannot be used after disconnect is called. - */ - void disconnect(); - - /** - * return all the info associated with this device. - * @return NetconfDeviceInfo - */ - NetconfDeviceInfo getDeviceInfo(); -} \ No newline at end of file diff --git a/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java b/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java deleted file mode 100644 index cb0e240a..00000000 --- a/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.netconf; - -import com.google.common.base.Preconditions; -import org.onlab.packet.IpAddress; -import org.onosproject.net.DeviceId; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Objects; - -/** - * Represents a Netconf device information. - */ -public class NetconfDeviceInfo { - - public static final Logger log = LoggerFactory - .getLogger(NetconfDeviceInfo.class); - - private String name; - private String password; - private IpAddress ipAddress; - private int port; - private File keyFile; - - - /** - * Information for contacting the controller. - * - * @param name the connection type - * @param password the password for the device - * @param ipAddress the ip address - * @param port the tcp port - */ - public NetconfDeviceInfo(String name, String password, IpAddress ipAddress, - int port) { - Preconditions.checkArgument(!name.equals(""), "Empty device name"); - Preconditions.checkNotNull(port > 0, "Negative port"); - Preconditions.checkNotNull(ipAddress, "Null ip address"); - this.name = name; - this.password = password; - this.ipAddress = ipAddress; - this.port = port; - } - - /** - * Information for contacting the controller. - * - * @param name the connection type - * @param password the password for the device - * @param ipAddress the ip address - * @param port the tcp port - * @param keyString the string cointaing the key. - */ - public NetconfDeviceInfo(String name, String password, IpAddress ipAddress, - int port, String keyString) { - Preconditions.checkArgument(!name.equals(""), "Empty device name"); - Preconditions.checkNotNull(port > 0, "Negative port"); - Preconditions.checkNotNull(ipAddress, "Null ip address"); - this.name = name; - this.password = password; - this.ipAddress = ipAddress; - this.port = port; - this.keyFile = new File(keyString); - } - - /** - * Exposes the name of the controller. - * - * @return String name - */ - public String name() { - return name; - } - - /** - * Exposes the password of the controller. - * - * @return String password - */ - public String password() { - return password; - } - - /** - * Exposes the ip address of the controller. - * - * @return IpAddress ip address - */ - public IpAddress ip() { - return ipAddress; - } - - /** - * Exposes the port of the controller. - * - * @return int port address - */ - public int port() { - return port; - } - - /** - * Exposes the keyFile of the controller. - * - * @return int port address - */ - public File getKeyFile() { - return keyFile; - } - - /** - * Return the info about the device in a string. - * String format: "netconf:name@ip:port" - * - * @return String device info - */ - public String toString() { - return "netconf:" + name + "@" + ipAddress + ":" + port; - } - - /** - * Return the DeviceId about the device containing the URI. - * - * @return DeviceId - */ - public DeviceId getDeviceId() { - - try { - return DeviceId.deviceId(new URI(this.toString())); - } catch (URISyntaxException e) { - log.debug("Unable to build deviceID for device {} ", this, e); - } - return null; - } - - @Override - public int hashCode() { - return Objects.hash(ipAddress, port, name); - } - - @Override - public boolean equals(Object toBeCompared) { - if (toBeCompared instanceof NetconfDeviceInfo) { - NetconfDeviceInfo netconfDeviceInfo = (NetconfDeviceInfo) toBeCompared; - if (netconfDeviceInfo.name().equals(name) - && netconfDeviceInfo.ip().equals(ipAddress) - && netconfDeviceInfo.port() == port - && netconfDeviceInfo.password().equals(password)) { - return true; - } - } - return false; - } -} diff --git a/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceListener.java b/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceListener.java deleted file mode 100644 index 9c46d4f6..00000000 --- a/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceListener.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.netconf; - -/** - * Allows for providers interested in node events to be notified. - */ -public interface NetconfDeviceListener { - - /** - * Notifies that the node was added. - * - * @param nodeId the node where the event occurred - */ - void deviceAdded(NetconfDeviceInfo nodeId); - - /** - * Notifies that the node was removed. - * - * @param nodeId the node where the event occurred - */ - void deviceRemoved(NetconfDeviceInfo nodeId); -} diff --git a/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfSession.java b/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfSession.java deleted file mode 100644 index 73c435f6..00000000 --- a/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfSession.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.netconf; - -import java.util.List; - -/** - * NETCONF session object that allows NETCONF operations on top with the physical - * device on top of an SSH connection. - */ -// TODO change return type of methdos to -public interface NetconfSession { - - /** - * Retrives the requested configuration, different from get-config. - * @param request the XML containing the request to the server. - * @return device running configuration - */ - String get(String request); - - /** - * Executes an RPC to the server. - * @param request the XML containing the RPC for the server. - * @return Server response or ERROR - */ - String doRPC(String request); - - /** - * Retrives the specified configuration. - * - * @param targetConfiguration the type of configuration to retrieve. - * @return specified configuration. - */ - String getConfig(String targetConfiguration); - - /** - * Retrives part of the specivied configuration based on the filterSchema. - * - * @param targetConfiguration the type of configuration to retrieve. - * @param configurationFilterSchema XML schema to filter the configuration - * elements we are interested in - * @return device running configuration. - */ - String getConfig(String targetConfiguration, String configurationFilterSchema); - - /** - * Retrives part of the specified configuration based on the filterSchema. - * - * @param newConfiguration configuration to set - * @return true if the configuration was edited correctly - */ - - boolean editConfig(String newConfiguration); - - /** - * Copies the new configuration, an Url or a complete configuration xml tree - * to the target configuration. - * The target configuration can't be the running one - * - * @param targetConfiguration the type of configuration to retrieve. - * @param newConfiguration configuration to set - * @return true if the configuration was copied correctly - */ - boolean copyConfig(String targetConfiguration, String newConfiguration); - - /** - * Deletes part of the specified configuration based on the filterSchema. - * - * @param targetConfiguration the name of the configuration to delete - * @return true if the configuration was copied correctly - */ - boolean deleteConfig(String targetConfiguration); - - /** - * Locks the candidate configuration. - * - * @return true if successful. - */ - boolean lock(); - - /** - * Unlocks the candidate configuration. - * - * @return true if successful. - */ - boolean unlock(); - - /** - * Closes the Netconf session with the device. - * the first time it tries gracefully, then kills it forcefully - * @return true if closed - */ - boolean close(); - - /** - * Gets the session ID of the Netconf session. - * - * @return Session ID as a string. - */ - String getSessionId(); - - /** - * Gets the capabilities of the Netconf server associated to this session. - * - * @return Network capabilities as a string. - */ - String getServerCapabilities(); - - /** - * Sets the device capabilities. - * @param capabilities list of capabilities the device has. - */ - void setDeviceCapabilities(List capabilities); - -} diff --git a/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/package-info.java b/framework/src/onos/protocols/netconf/api/src/main/java/org/onosproject/netconf/package-info.java deleted file mode 100644 index 5562bd33..00000000 --- a/framework/src/onos/protocols/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/protocols/netconf/ctl/pom.xml b/framework/src/onos/protocols/netconf/ctl/pom.xml deleted file mode 100644 index ce6f9f73..00000000 --- a/framework/src/onos/protocols/netconf/ctl/pom.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - 4.0.0 - - org.onosproject - onos-netconf - 1.4.0-rc1 - ../pom.xml - - - onos-netconf-ctl - bundle - - ONOS NETCONF plugin controller - - - - org.osgi - org.osgi.compendium - - - org.onosproject - onos-netconf-api - ${project.version} - - - ch.ethz.ganymed - ganymed-ssh2 - 262 - - - - - - - - org.apache.felix - maven-bundle-plugin - - - ch.ethz.ssh2.* - ganymed-ssh2 - - - - - org.apache.felix - maven-scr-plugin - - - - diff --git a/framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.java b/framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.java deleted file mode 100644 index a572a2bc..00000000 --- a/framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.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.netconf.ctl; - -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.net.DeviceId; -import org.onosproject.netconf.NetconfController; -import org.onosproject.netconf.NetconfDevice; -import org.onosproject.netconf.NetconfDeviceInfo; -import org.onosproject.netconf.NetconfDeviceListener; -import org.osgi.service.component.ComponentContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * The implementation of NetconfController. - */ -@Component(immediate = true) -@Service -public class NetconfControllerImpl implements NetconfController { - - public static final Logger log = LoggerFactory - .getLogger(NetconfControllerImpl.class); - - public Map netconfDeviceMap = new ConcurrentHashMap<>(); - - protected Set netconfDeviceListeners = new CopyOnWriteArraySet<>(); - - @Activate - public void activate(ComponentContext context) { - log.info("Started"); - } - - @Deactivate - public void deactivate() { - netconfDeviceMap.clear(); - log.info("Stopped"); - } - - @Override - public void addDeviceListener(NetconfDeviceListener listener) { - if (!netconfDeviceListeners.contains(listener)) { - netconfDeviceListeners.add(listener); - } - } - - @Override - public void removeDeviceListener(NetconfDeviceListener listener) { - netconfDeviceListeners.remove(listener); - } - - @Override - public NetconfDevice getNetconfDevice(DeviceId deviceInfo) { - return netconfDeviceMap.get(deviceInfo); - } - - @Override - public NetconfDevice getNetconfDevice(IpAddress ip, int port) { - NetconfDevice device = null; - for (DeviceId info : netconfDeviceMap.keySet()) { - if (IpAddress.valueOf(info.uri().getHost()).equals(ip) && - info.uri().getPort() == port) { - return netconfDeviceMap.get(info); - } - } - return device; - } - - @Override - public NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo) { - if (netconfDeviceMap.containsKey(deviceInfo.getDeviceId())) { - log.warn("Device {} is already present"); - return netconfDeviceMap.get(deviceInfo.getDeviceId()); - } else { - log.info("Creating NETCONF device {}", deviceInfo); - return createDevice(deviceInfo); - } - } - - @Override - public void removeDevice(NetconfDeviceInfo deviceInfo) { - if (netconfDeviceMap.containsKey(deviceInfo.getDeviceId())) { - log.warn("Device {} is not present"); - } else { - stopDevice(deviceInfo); - } - } - - private NetconfDevice createDevice(NetconfDeviceInfo deviceInfo) { - NetconfDevice netconfDevice = null; - try { - netconfDevice = new NetconfDeviceImpl(deviceInfo); - for (NetconfDeviceListener l : netconfDeviceListeners) { - l.deviceAdded(deviceInfo); - } - netconfDeviceMap.put(deviceInfo.getDeviceId(), netconfDevice); - } catch (IOException e) { - throw new IllegalStateException("Cannot create NETCONF device " + - "with device Info: " + - deviceInfo + " \n" + e); - } - return netconfDevice; - } - - private void stopDevice(NetconfDeviceInfo deviceInfo) { - netconfDeviceMap.get(deviceInfo.getDeviceId()).disconnect(); - netconfDeviceMap.remove(deviceInfo.getDeviceId()); - for (NetconfDeviceListener l : netconfDeviceListeners) { - l.deviceRemoved(deviceInfo); - } - } - - @Override - public Map getDevicesMap() { - return netconfDeviceMap; - } - - -} diff --git a/framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfDeviceImpl.java b/framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfDeviceImpl.java deleted file mode 100644 index 3141aafc..00000000 --- a/framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfDeviceImpl.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.netconf.ctl; - -import org.onosproject.netconf.NetconfDevice; -import org.onosproject.netconf.NetconfDeviceInfo; -import org.onosproject.netconf.NetconfSession; - -import java.io.IOException; - -/** - * Implementation of a NETCONF device. - */ -public class NetconfDeviceImpl implements NetconfDevice { - - private NetconfDeviceInfo netconfDeviceInfo; - private boolean deviceState = false; - private NetconfSession netconfSession; - //private String config; - - public NetconfDeviceImpl(NetconfDeviceInfo deviceInfo) throws IOException { - netconfDeviceInfo = deviceInfo; - try { - netconfSession = new NetconfSessionImpl(netconfDeviceInfo); - } catch (IOException e) { - throw new IOException("Cannot create connection and session", e); - } - deviceState = true; - //config = netconfSession.getConfig("running"); - } - - @Override - public boolean isActive() { - return deviceState; - } - - @Override - public NetconfSession getSession() { - return netconfSession; - } - - @Override - public void disconnect() { - deviceState = false; - netconfSession.close(); - } - - @Override - public NetconfDeviceInfo getDeviceInfo() { - return netconfDeviceInfo; - } -} diff --git a/framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfSessionImpl.java b/framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfSessionImpl.java deleted file mode 100644 index 8619abc0..00000000 --- a/framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfSessionImpl.java +++ /dev/null @@ -1,396 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.netconf.ctl; - -import ch.ethz.ssh2.Connection; -import ch.ethz.ssh2.Session; -import com.google.common.base.Preconditions; -import org.onosproject.netconf.NetconfDeviceInfo; -import org.onosproject.netconf.NetconfSession; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Implementation of a NETCONF session to talk to a device. - */ -public class NetconfSessionImpl implements NetconfSession { - - public static final Logger log = LoggerFactory - .getLogger(NetconfSessionImpl.class); - private static final int CONNECTION_TIMEOUT = 0; - - - private Connection netconfConnection; - private NetconfDeviceInfo deviceInfo; - private Session sshSession; - private boolean connectionActive; - private BufferedReader bufferReader = null; - private PrintWriter out = null; - private int messageID = 0; - - private List deviceCapabilities = - new ArrayList<>( - Arrays.asList("urn:ietf:params:netconf:base:1.0")); - - private String serverCapabilities; - private String endpattern = "]]>]]>"; - - - public NetconfSessionImpl(NetconfDeviceInfo deviceInfo) throws IOException { - this.deviceInfo = deviceInfo; - connectionActive = false; - startConnection(); - } - - - private void startConnection() throws IOException { - if (!connectionActive) { - netconfConnection = new Connection(deviceInfo.ip().toString(), deviceInfo.port()); - netconfConnection.connect(null, CONNECTION_TIMEOUT, 0); - boolean isAuthenticated; - try { - if (deviceInfo.getKeyFile() != null) { - isAuthenticated = netconfConnection.authenticateWithPublicKey( - deviceInfo.name(), deviceInfo.getKeyFile(), - deviceInfo.password()); - } else { - log.info("authenticate with username {} and password {}", - deviceInfo.name(), deviceInfo.password()); - isAuthenticated = netconfConnection.authenticateWithPassword( - deviceInfo.name(), deviceInfo.password()); - } - } catch (IOException e) { - throw new IOException("Authentication connection failed:" + - e.getMessage()); - } - - connectionActive = true; - Preconditions.checkArgument(isAuthenticated, - "Authentication password and username failed"); - startSshSession(); - } - } - - private void startSshSession() throws IOException { - try { - sshSession = netconfConnection.openSession(); - sshSession.startSubSystem("netconf"); - bufferReader = new BufferedReader(new InputStreamReader( - sshSession.getStdout())); - out = new PrintWriter(sshSession.getStdin()); - sendHello(); - } catch (IOException e) { - throw new IOException("Failed to create ch.ethz.ssh2.Session session:" + - e.getMessage()); - } - } - - private void sendHello() throws IOException { - serverCapabilities = doRequest(createHelloString()); - } - - private String createHelloString() { - StringBuilder hellobuffer = new StringBuilder(); - hellobuffer.append("\n"); - hellobuffer.append("\n"); - hellobuffer.append(" \n"); - deviceCapabilities.forEach( - cap -> hellobuffer.append(" " + cap + "\n")); - hellobuffer.append(" \n"); - hellobuffer.append("\n"); - hellobuffer.append(endpattern); - return hellobuffer.toString(); - - } - - @Override - public String doRPC(String request) { - String reply = "ERROR"; - try { - reply = doRequest(request); - if (checkReply(reply)) { - return reply; - } else { - return "ERROR " + reply; - } - } catch (IOException e) { - log.error("Problem in the reading from the SSH connection " + e); - } - return reply; - } - - private String doRequest(String request) throws IOException { - log.info("sshState " + sshSession.getState() + "request" + request); - if (sshSession.getState() != 2) { - try { - startSshSession(); - } catch (IOException e) { - log.info("the connection had to be reopened"); - startConnection(); - } - sendHello(); - } - log.info("sshState after" + sshSession.getState()); - out.print(request); - out.flush(); - messageID++; - return readOne(); - } - - @Override - public String get(String request) { - return doRPC(request); - } - - @Override - public String getConfig(String targetConfiguration) { - return getConfig(targetConfiguration, null); - } - - @Override - public String getConfig(String targetConfiguration, String configurationSchema) { - StringBuilder rpc = new StringBuilder(""); - rpc.append("\n"); - rpc.append("\n"); - rpc.append("\n"); - rpc.append("<" + targetConfiguration + "/>"); - rpc.append(""); - if (configurationSchema != null) { - rpc.append("\n"); - rpc.append(configurationSchema + "\n"); - rpc.append("\n"); - } - rpc.append("\n"); - rpc.append("\n"); - rpc.append(endpattern); - String reply = null; - try { - reply = doRequest(rpc.toString()); - } catch (IOException e) { - e.printStackTrace(); - } - - return checkReply(reply) ? reply : null; - } - - @Override - public boolean editConfig(String newConfiguration) { - newConfiguration = newConfiguration + endpattern; - String reply = null; - try { - reply = doRequest(newConfiguration); - } catch (IOException e) { - e.printStackTrace(); - } - return checkReply(reply); - } - - @Override - public boolean copyConfig(String targetConfiguration, String newConfiguration) { - newConfiguration = newConfiguration.trim(); - if (!newConfiguration.startsWith("")) { - newConfiguration = "" + newConfiguration - + ""; - } - StringBuilder rpc = new StringBuilder(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append("<" + targetConfiguration + "/>"); - rpc.append(""); - rpc.append(""); - rpc.append("<" + newConfiguration + "/>"); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(endpattern); - String reply = null; - try { - reply = doRequest(rpc.toString()); - } catch (IOException e) { - e.printStackTrace(); - } - - return checkReply(reply); - } - - @Override - public boolean deleteConfig(String targetConfiguration) { - if (targetConfiguration.equals("running")) { - log.warn("Target configuration for delete operation can't be \"running\"", - targetConfiguration); - return false; - } - StringBuilder rpc = new StringBuilder(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append("<" + targetConfiguration + "/>"); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(endpattern); - String reply = null; - try { - reply = doRequest(rpc.toString()); - } catch (IOException e) { - e.printStackTrace(); - } - - return checkReply(reply); - } - - @Override - public boolean lock() { - StringBuilder rpc = new StringBuilder(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(endpattern); - String reply = null; - try { - reply = doRequest(rpc.toString()); - } catch (IOException e) { - e.printStackTrace(); - } - return checkReply(reply); - } - - @Override - public boolean unlock() { - StringBuilder rpc = new StringBuilder(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(""); - rpc.append(endpattern); - String reply = null; - try { - reply = doRequest(rpc.toString()); - } catch (IOException e) { - e.printStackTrace(); - } - return checkReply(reply); - } - - @Override - public boolean close() { - return close(false); - } - - private boolean close(boolean force) { - StringBuilder rpc = new StringBuilder(); - rpc.append(""); - if (force) { - rpc.append(""); - } else { - rpc.append(""); - } - rpc.append(""); - rpc.append(""); - rpc.append(endpattern); - return checkReply(rpc.toString()) ? true : close(true); - } - - @Override - public String getSessionId() { - if (serverCapabilities.contains("")) { - String[] outer = serverCapabilities.split(""); - Preconditions.checkArgument(outer.length != 1, - "Error in retrieving the session id"); - String[] value = outer[1].split(""); - Preconditions.checkArgument(value.length != 1, - "Error in retrieving the session id"); - return value[0]; - } else { - return String.valueOf(-1); - } - } - - @Override - public String getServerCapabilities() { - return serverCapabilities; - } - - @Override - public void setDeviceCapabilities(List capabilities) { - deviceCapabilities = capabilities; - } - - private boolean checkReply(String reply) { - if (reply != null) { - if (!reply.contains("")) { - return true; - } else if (reply.contains("") - || (reply.contains("") - && reply.contains("warning"))) { - return true; - } - } - return false; - } - - private String readOne() throws IOException { - //TODO try a simple string - final StringWriter reply = new StringWriter(); - while (true) { - int charRead = bufferReader.read(); - if (charRead == -1) { - throw new IOException("Session closed"); - } - - for (int i = 0; i < endpattern.length(); i++) { - if (charRead == endpattern.charAt(i)) { - if (i < endpattern.length() - 1) { - charRead = bufferReader.read(); - } else { - return reply.getBuffer().toString(); - } - } else { - String s = endpattern.substring(0, i); - for (int j = 0; i < s.length(); j++) { - reply.write(s.charAt(j)); - } - reply.write(charRead); - break; - } - } - } - } - -} diff --git a/framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/package-info.java b/framework/src/onos/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/package-info.java deleted file mode 100644 index 84992bf2..00000000 --- a/framework/src/onos/protocols/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/protocols/netconf/pom.xml b/framework/src/onos/protocols/netconf/pom.xml deleted file mode 100644 index 37b78e78..00000000 --- a/framework/src/onos/protocols/netconf/pom.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - 4.0.0 - - org.onosproject - onos-protocols - 1.4.0-rc1 - ../pom.xml - - - onos-netconf - pom - - - api - rfc - ctl - - - ONOS NETCONF southbound plugin - - - - io.netty - netty-buffer - - - io.netty - netty-handler - - - org.apache.felix - org.apache.felix.scr.annotations - - - org.onosproject - onos-api - ${project.version} - - - - diff --git a/framework/src/onos/protocols/netconf/rfc/pom.xml b/framework/src/onos/protocols/netconf/rfc/pom.xml deleted file mode 100644 index c9a24f17..00000000 --- a/framework/src/onos/protocols/netconf/rfc/pom.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - 4.0.0 - - org.onosproject - onos-netconf - 1.4.0-rc1 - ../pom.xml - - - onos-netconf-rfc - bundle - - diff --git a/framework/src/onos/protocols/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/Foo.java b/framework/src/onos/protocols/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/Foo.java deleted file mode 100644 index 06963b0c..00000000 --- a/framework/src/onos/protocols/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/protocols/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/package-info.java b/framework/src/onos/protocols/netconf/rfc/src/main/java/org/onosproject/netconf/rfc/package-info.java deleted file mode 100644 index 616a7ce5..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/pom.xml b/framework/src/onos/protocols/openflow/api/pom.xml deleted file mode 100644 index 6a47e2ee..00000000 --- a/framework/src/onos/protocols/openflow/api/pom.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - 4.0.0 - - - org.onosproject - onos-of - 1.4.0-rc1 - ../pom.xml - - - onos-of-api - bundle - - ONOS OpenFlow controller subsystem API - - - - - org.onosproject - openflowj - ${openflowj.version} - - - io.netty - netty - - - org.onosproject - onos-api - - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 2.3 - - - - io.netty:netty - com.google.guava:guava - org.slf4j:slfj-api - ch.qos.logback:logback-core - ch.qos.logback:logback-classic - com.google.code.findbugs:annotations - - - - - - package - - shade - - - - - - org.apache.felix - maven-bundle-plugin - - - - org.onosproject.openflow.*,org.projectfloodlight.openflow.* - - - - - - - - diff --git a/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java deleted file mode 100644 index af92a1d0..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/Dpid.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/Dpid.java deleted file mode 100644 index 6e0f65be..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionSelectorInterpreter.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionSelectorInterpreter.java deleted file mode 100644 index 7336c3c6..00000000 --- a/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionSelectorInterpreter.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.openflow.controller; - -import com.google.common.annotations.Beta; -import org.onosproject.net.driver.HandlerBehaviour; -import org.onosproject.net.flow.criteria.ExtensionSelector; -import org.onosproject.net.flow.criteria.ExtensionSelectorType; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.oxm.OFOxm; - -/** - * Interprets extension selectors and converts them to/from OpenFlow objects. - */ -@Beta -public interface ExtensionSelectorInterpreter extends HandlerBehaviour { - - /** - * Returns true if the given extension selector is supported by this - * driver. - * - * @param extensionSelectorType extension selector type - * @return true if the instruction is supported, otherwise false - */ - boolean supported(ExtensionSelectorType extensionSelectorType); - - /** - * Maps an extension selector to an OpenFlow OXM. - * - * @param factory OpenFlow factory - * @param extensionSelector extension selector - * @return OpenFlow action - */ - OFOxm mapSelector(OFFactory factory, ExtensionSelector extensionSelector); - - /** - * Maps an OpenFlow OXM to an extension selector. - * - * @param oxm OpenFlow OXM - * @return extension selector - */ - ExtensionSelector mapOxm(OFOxm oxm); -} diff --git a/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java deleted file mode 100644 index 88a5353d..00000000 --- a/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.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.ExtensionTreatment; -import org.onosproject.net.flow.instructions.ExtensionTreatmentType; -import org.projectfloodlight.openflow.protocol.OFFactory; -import org.projectfloodlight.openflow.protocol.action.OFAction; - -/** - * Interprets extension treatments and converts them to/from OpenFlow objects. - */ -@Beta -public interface ExtensionTreatmentInterpreter extends HandlerBehaviour { - - /** - * Returns true if the given extension treatment is supported by this - * driver. - * - * @param extensionTreatmentType extension treatment type - * @return true if the extension is supported, otherwise false - */ - boolean supported(ExtensionTreatmentType extensionTreatmentType); - - /** - * Maps an extension treatment to an OpenFlow action. - * - * @param factory OpenFlow factory - * @param extensionTreatment extension treatment - * @return OpenFlow action - */ - OFAction mapInstruction(OFFactory factory, ExtensionTreatment extensionTreatment); - - /** - * Maps an OpenFlow action to an extension treatment. - * - * @param action OpenFlow action - * @return extension treatment - */ - ExtensionTreatment mapAction(OFAction action); - -} diff --git a/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java deleted file mode 100644 index 2c68fa0b..00000000 --- a/framework/src/onos/protocols/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 getSwitches(); - - /** - * Returns all master switches known to this OF controller. - * @return Iterable of dpid elements - */ - Iterable getMasterSwitches(); - - /** - * Returns all equal switches known to this OF controller. - * @return Iterable of dpid elements - */ - Iterable 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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java deleted file mode 100644 index 5deccf5e..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowOpticalSwitch.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowOpticalSwitch.java deleted file mode 100644 index af678d63..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java deleted file mode 100644 index 740d89d0..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java deleted file mode 100644 index b6ec5744..00000000 --- a/framework/src/onos/protocols/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: Messages may be silently dropped/lost due to IOExceptions or - * role. If this is a concern, then a caller should use barriers. - *

- * - * @param msg the message to write - */ - void sendMsg(OFMessage msg); - - /** - * Writes the OFMessage list to the driver. - *

- * Note: Messages may be silently dropped/lost due to IOExceptions or - * role. If this is a concern, then a caller should use barriers. - *

- * - * @param msgs the messages to be written - */ - void sendMsg(List 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 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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java deleted file mode 100644 index 2da41335..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java deleted file mode 100644 index 817a6cdf..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/PortDescPropertyType.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/PortDescPropertyType.java deleted file mode 100644 index 3a0f1a0d..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/RoleState.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/RoleState.java deleted file mode 100644 index b8304f39..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ThirdPartyMessage.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ThirdPartyMessage.java deleted file mode 100644 index 59ef33cf..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/WithTypedPorts.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/WithTypedPorts.java deleted file mode 100644 index 8b82b4a7..00000000 --- a/framework/src/onos/protocols/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 getPortsOf(PortDescPropertyType type); - - /** - * Returns the port property types supported by the driver implementing this - * interface. - * - * @return A set of port property types - */ - Set getPortTypes(); -} diff --git a/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java deleted file mode 100644 index 08444b17..00000000 --- a/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java +++ /dev/null @@ -1,494 +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 com.google.common.collect.Lists; -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.concurrent.atomic.AtomicReference; -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 ports = new ArrayList<>(); - - protected boolean tableFull; - - private RoleHandler roleMan; - - // TODO this is accessed from multiple threads, but volatile may have performance implications - protected volatile RoleState role; - - protected OFFeaturesReply features; - protected OFDescStatsReply desc; - - private final AtomicReference> messagesPendingMastership - = new AtomicReference<>(); - - @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() { - setConnected(false); - this.channel.close(); - } - - @Override - public void sendMsg(OFMessage msg) { - this.sendMsg(Collections.singletonList(msg)); - } - - @Override - public final void sendMsg(List msgs) { - /* - It is possible that in this block, we transition to SLAVE/EQUAL. - If this is the case, the supplied messages will race with the - RoleRequest message, and they could be rejected by the switch. - In the interest of performance, we will not protect this block with - a synchronization primitive, because the message would have just been - dropped anyway. - */ - if (role == RoleState.MASTER) { - // fast path send when we are master - - sendMsgsOnChannel(msgs); - return; - } - // check to see if mastership transition is in progress - synchronized (messagesPendingMastership) { - /* - messagesPendingMastership is used as synchronization variable for - all mastership related changes. In this block, mastership (including - role update) will have either occurred or not. - */ - if (role == RoleState.MASTER) { - // transition to MASTER complete, send messages - sendMsgsOnChannel(msgs); - return; - } - - List messages = messagesPendingMastership.get(); - if (messages != null) { - // we are transitioning to MASTER, so add messages to queue - messages.addAll(msgs); - log.debug("Enqueue message for switch {}. queue size after is {}", - dpid, messages.size()); - } else { - // not transitioning to MASTER - log.warn("Dropping message for switch {} (role: {}, connected: {}): {}", - dpid, role, channel.isConnected(), msgs); - } - } - } - - private void sendMsgsOnChannel(List msgs) { - if (channel.isConnected()) { - channel.write(msgs); - } else { - log.warn("Dropping messages for switch {} because channel is not connected: {}", - dpid, msgs); - } - } - - @Override - public final void sendRoleRequest(OFMessage msg) { - if (msg instanceof OFRoleRequest || - msg instanceof OFNiciraControllerRoleRequest) { - sendMsgsOnChannel(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()) { - sendMsgsOnChannel(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); - synchronized (messagesPendingMastership) { - List messages = messagesPendingMastership.get(); - if (messages != null) { - this.sendMsg(messages); - log.debug("Sending {} pending messages to switch {}", - messages.size(), dpid); - messagesPendingMastership.set(null); - } - // perform role transition after clearing messages queue - this.role = RoleState.MASTER; - } - } - - @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 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 (role == RoleState.SLAVE || role == RoleState.EQUAL) { - // perform role transition to SLAVE/EQUAL before sending role request - this.role = role; - } - if (this.roleMan.sendRoleRequest(role, RoleRecvStatus.MATCHED_SET_ROLE)) { - log.debug("Sending role {} to switch {}", role, getStringId()); - if (role == RoleState.MASTER) { - synchronized (messagesPendingMastership) { - if (messagesPendingMastership.get() == null) { - log.debug("Initializing new message queue for switch {}", dpid); - /* - The presence of messagesPendingMastership indicates that - a switch is currently transitioning to MASTER, but - is still awaiting role reply from switch. - */ - messagesPendingMastership.set(Lists.newArrayList()); - } - } - } - } else if (role == RoleState.MASTER) { - // role request not support; transition switch to MASTER - this.role = role; - } - } catch (IOException e) { - log.error("Unable to write to switch {}.", this.dpid); - } - } - - @Override - public void reassertRole() { - // TODO should messages be sent directly or queue during reassertion? - 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.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.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 getPorts() { - return this.ports.stream() - .flatMap(portReply -> portReply.getEntries().stream()) - .collect(Collectors.toList()); - } - - @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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowAgent.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowAgent.java deleted file mode 100644 index ad6dede1..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriver.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriver.java deleted file mode 100644 index b259388c..00000000 --- a/framework/src/onos/protocols/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 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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriverFactory.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/OpenFlowSwitchDriverFactory.java deleted file mode 100644 index a0d8f18f..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleHandler.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleHandler.java deleted file mode 100644 index b4068886..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleRecvStatus.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleRecvStatus.java deleted file mode 100644 index 88c4cc70..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleReplyInfo.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/RoleReplyInfo.java deleted file mode 100644 index dc9b6bad..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeAlreadyStarted.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeAlreadyStarted.java deleted file mode 100644 index 96b4bd73..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeCompleted.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeCompleted.java deleted file mode 100644 index b0f59fe5..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeException.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeException.java deleted file mode 100644 index 1bc750ab..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeNotStarted.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeNotStarted.java deleted file mode 100644 index a073683c..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeStateException.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchDriverSubHandshakeStateException.java deleted file mode 100644 index 3f4be813..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchStateException.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/SwitchStateException.java deleted file mode 100644 index 30c4e917..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/package-info.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/package-info.java deleted file mode 100644 index c03a5840..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/package-info.java b/framework/src/onos/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/package-info.java deleted file mode 100644 index 54778426..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/api/src/test/java/org/onosproject/openflow/controller/OpenflowControllerAdapter.java b/framework/src/onos/protocols/openflow/api/src/test/java/org/onosproject/openflow/controller/OpenflowControllerAdapter.java deleted file mode 100644 index f4fe490f..00000000 --- a/framework/src/onos/protocols/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 getSwitches() { - return null; - } - - @Override - public Iterable getMasterSwitches() { - return null; - } - - @Override - public Iterable 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/protocols/openflow/ctl/pom.xml b/framework/src/onos/protocols/openflow/ctl/pom.xml deleted file mode 100644 index 947e12f8..00000000 --- a/framework/src/onos/protocols/openflow/ctl/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - 4.0.0 - - - org.onosproject - onos-of - 1.4.0-rc1 - ../pom.xml - - - onos-of-ctl - bundle - - ONOS OpenFlow controller subsystem API - - - - org.onosproject - onos-of-api - - - io.netty - netty - - - org.apache.felix - org.apache.felix.scr.annotations - - - org.osgi - org.osgi.compendium - - - - - - - org.apache.felix - maven-scr-plugin - - - org.onosproject - onos-maven-plugin - - - - - diff --git a/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java b/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java deleted file mode 100644 index 56b3a99c..00000000 --- a/framework/src/onos/protocols/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 controllerNodeIPsCache; - - private ChannelGroup cg; - - // Configuration options - protected List 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 getMemory() { - Map 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/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutException.java b/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutException.java deleted file mode 100644 index bbe307be..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutHandler.java b/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/HandshakeTimeoutHandler.java deleted file mode 100644 index fbbe3428..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java b/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java deleted file mode 100644 index ff92b77e..00000000 --- a/framework/src/onos/protocols/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 portDescReplies; - //private OFPortDescStatsReply portDescReply; - // a concurrent ArrayList to temporarily store port status messages - // before we are ready to deal with them - private final CopyOnWriteArrayList 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(); - this.portDescReplies = new ArrayList(); - 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 temp = new ArrayList(); - 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 msglist = (List) 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 msglist = new ArrayList(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/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageDecoder.java b/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageDecoder.java deleted file mode 100644 index f52d27e5..00000000 --- a/framework/src/onos/protocols/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 reader = OFFactories.getGenericReader(); - OFMessage message = reader.readFrom(buffer); - - return message; - } - -} diff --git a/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageEncoder.java b/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFMessageEncoder.java deleted file mode 100644 index 4c1b16fe..00000000 --- a/framework/src/onos/protocols/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 msglist = (List) 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/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java b/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java deleted file mode 100644 index b410158e..00000000 --- a/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java +++ /dev/null @@ -1,647 +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.core.CoreService; -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 APP_ID = "org.onosproject.openflow-base"; - 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 CoreService coreService; - - @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; - - protected 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 connectedSwitches = - new ConcurrentHashMap<>(); - protected ConcurrentHashMap activeMasterSwitches = - new ConcurrentHashMap<>(); - protected ConcurrentHashMap activeEqualSwitches = - new ConcurrentHashMap<>(); - - protected OpenFlowSwitchAgent agent = new OpenFlowSwitchAgent(); - protected Set ofSwitchListener = new CopyOnWriteArraySet<>(); - - protected Multimap ofPacketListener = - ArrayListMultimap.create(); - - protected Set ofEventListener = new CopyOnWriteArraySet<>(); - - protected Multimap fullFlowStats = - ArrayListMultimap.create(); - - protected Multimap fullTableStats = - ArrayListMultimap.create(); - - protected Multimap fullGroupStats = - ArrayListMultimap.create(); - - protected Multimap fullGroupDescStats = - ArrayListMultimap.create(); - - protected Multimap fullPortStats = - ArrayListMultimap.create(); - - private final Controller ctrl = new Controller(); - - @Activate - public void activate(ComponentContext context) { - coreService.registerApplication(APP_ID, this::preDeactivate); - cfgService.registerProperties(getClass()); - ctrl.setConfigParams(context.getProperties()); - ctrl.start(agent, driverService); - } - - private void preDeactivate() { - // Close listening channel and all OF channels before deactivating - ctrl.stop(); - connectedSwitches.values().forEach(OpenFlowSwitch::disconnectSwitch); - } - - @Deactivate - public void deactivate() { - cfgService.unregisterProperties(getClass(), false); - connectedSwitches.clear(); - activeMasterSwitches.clear(); - activeEqualSwitches.clear(); - } - - @Modified - public void modified(ComponentContext context) { - ctrl.stop(); - ctrl.setConfigParams(context.getProperties()); - ctrl.start(agent, driverService); - } - - @Override - public Iterable getSwitches() { - return connectedSwitches.values(); - } - - @Override - public Iterable getMasterSwitches() { - return activeMasterSwitches.values(); - } - - @Override - public Iterable 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 flowStats; - Collection tableStats; - Collection groupStats; - Collection groupDescStats; - Collection 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 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 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 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 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 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 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); - } - } - } - - protected final class OFMessageHandler implements Runnable { - - protected final OFMessage msg; - protected 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/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenflowPipelineFactory.java b/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenflowPipelineFactory.java deleted file mode 100644 index 1467520d..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java b/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java deleted file mode 100644 index bd4875cf..00000000 --- a/framework/src/onos/protocols/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 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/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/package-info.java b/framework/src/onos/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/package-info.java deleted file mode 100644 index a5d9f274..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelAdapter.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelAdapter.java deleted file mode 100644 index 75260a1d..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelHandlerContextAdapter.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/ChannelHandlerContextAdapter.java deleted file mode 100644 index 5b6c2a36..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/DriverAdapter.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/DriverAdapter.java deleted file mode 100644 index 57becf94..00000000 --- a/framework/src/onos/protocols/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> behaviours() { - return null; - } - - @Override - public Class implementation(Class behaviour) { - return null; - } - - @Override - public boolean hasBehaviour(Class behaviourClass) { - return true; - } - - @Override - public T createBehaviour(DriverData data, Class behaviourClass) { - return null; - } - - @SuppressWarnings("unchecked") - @Override - public T createBehaviour(DriverHandler handler, Class behaviourClass) { - if (behaviourClass == OpenFlowSwitchDriver.class) { - return (T) new OpenflowSwitchDriverAdapter(); - } - return null; - } - - @Override - public Map properties() { - return null; - } - - @Override - public Driver merge(Driver other) { - return null; - } - - @Override - public Set keys() { - return null; - } - - @Override - public String value(String key) { - return null; - } -} diff --git a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/DriverServiceAdapter.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/DriverServiceAdapter.java deleted file mode 100644 index 25596ada..00000000 --- a/framework/src/onos/protocols/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 getDrivers() { - return null; - } - - @Override - public Set getDrivers(Class 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/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/ExecutorServiceAdapter.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/ExecutorServiceAdapter.java deleted file mode 100644 index 54c9c94b..00000000 --- a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/ExecutorServiceAdapter.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.openflow; - -import java.util.Collection; -import java.util.List; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -/** - * Test harness adapter for the ExecutorService. - */ -public class ExecutorServiceAdapter implements ExecutorService { - @Override - public void shutdown() { - - } - - @Override - public List shutdownNow() { - return null; - } - - @Override - public boolean isShutdown() { - return false; - } - - @Override - public boolean isTerminated() { - return false; - } - - @Override - public boolean awaitTermination(long timeout, TimeUnit unit) - throws InterruptedException { - return false; - } - - @Override - public Future submit(Callable task) { - return null; - } - - @Override - public Future submit(Runnable task, T result) { - return null; - } - - @Override - public Future submit(Runnable task) { - return null; - } - - @Override - public List> invokeAll(Collection> tasks) - throws InterruptedException { - return null; - } - - @Override - public List> invokeAll(Collection> tasks, long timeout, TimeUnit unit) - throws InterruptedException { - return null; - } - - @Override - public T invokeAny(Collection> tasks) throws InterruptedException, ExecutionException { - return null; - } - - @Override - public T invokeAny(Collection> tasks, long timeout, TimeUnit unit) - throws InterruptedException, ExecutionException, TimeoutException { - return null; - } - - @Override - public void execute(Runnable command) { - - } -} diff --git a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfFeaturesReply.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfFeaturesReply.java deleted file mode 100644 index e280d56e..00000000 --- a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfFeaturesReply.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.openflow; - -import java.util.List; -import java.util.Set; - -import org.projectfloodlight.openflow.protocol.OFActionType; -import org.projectfloodlight.openflow.protocol.OFCapabilities; -import org.projectfloodlight.openflow.protocol.OFFeaturesReply; -import org.projectfloodlight.openflow.protocol.OFPortDesc; -import org.projectfloodlight.openflow.protocol.OFType; -import org.projectfloodlight.openflow.types.DatapathId; -import org.projectfloodlight.openflow.types.OFAuxId; - -/** - * Mock of the Open FLow features reply message. - */ -public class MockOfFeaturesReply extends OfMessageAdapter implements OFFeaturesReply { - public MockOfFeaturesReply() { - super(OFType.FEATURES_REPLY); - } - - @Override - public DatapathId getDatapathId() { - return null; - } - - @Override - public long getNBuffers() { - return 0; - } - - @Override - public short getNTables() { - return 0; - } - - @Override - public Set getCapabilities() { - return null; - } - - @Override - public long getReserved() { - return 0; - } - - @Override - public List getPorts() { - return null; - } - - @Override - public Set getActions() { - return null; - } - - @Override - public OFAuxId getAuxiliaryId() { - return null; - } - - @Override - public OFFeaturesReply.Builder createBuilder() { - return null; - } -} diff --git a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfPacketIn.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfPacketIn.java deleted file mode 100644 index 8e2069b0..00000000 --- a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfPacketIn.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; - -import org.projectfloodlight.openflow.protocol.OFPacketIn; -import org.projectfloodlight.openflow.protocol.OFPacketInReason; -import org.projectfloodlight.openflow.protocol.OFType; -import org.projectfloodlight.openflow.protocol.match.Match; -import org.projectfloodlight.openflow.types.OFBufferId; -import org.projectfloodlight.openflow.types.OFPort; -import org.projectfloodlight.openflow.types.TableId; -import org.projectfloodlight.openflow.types.U64; - -/** - * Mock of the Open Flow packet in message. - */ -public class MockOfPacketIn extends OfMessageAdapter implements OFPacketIn { - public MockOfPacketIn() { - super(OFType.PACKET_IN); - } - - @Override - public OFBufferId getBufferId() { - return null; - } - - @Override - public int getTotalLen() { - return 0; - } - - @Override - public OFPacketInReason getReason() { - return null; - } - - @Override - public TableId getTableId() { - return null; - } - - @Override - public Match getMatch() { - return null; - } - - @Override - public byte[] getData() { - return new byte[0]; - } - - @Override - public OFPort getInPort() { - return null; - } - - @Override - public OFPort getInPhyPort() { - return null; - } - - @Override - public U64 getCookie() { - return null; - } - - @Override - public OFPacketIn.Builder createBuilder() { - return null; - } -} diff --git a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfPortStatus.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfPortStatus.java deleted file mode 100644 index 2e26542f..00000000 --- a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfPortStatus.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; - -import org.projectfloodlight.openflow.protocol.OFPortDesc; -import org.projectfloodlight.openflow.protocol.OFPortReason; -import org.projectfloodlight.openflow.protocol.OFPortStatus; -import org.projectfloodlight.openflow.protocol.OFType; - -/** - * Mocked open flow port status message. - */ -public class MockOfPortStatus extends OfMessageAdapter implements OFPortStatus { - public MockOfPortStatus() { - super(OFType.PORT_STATUS); - } - - @Override - public OFPortReason getReason() { - return null; - } - - @Override - public OFPortDesc getDesc() { - return null; - } - - @Override - public OFPortStatus.Builder createBuilder() { - return null; - } -} diff --git a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OFDescStatsReplyAdapter.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OFDescStatsReplyAdapter.java deleted file mode 100644 index 1e866413..00000000 --- a/framework/src/onos/protocols/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 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/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OfMessageAdapter.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OfMessageAdapter.java deleted file mode 100644 index b7446eb9..00000000 --- a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OfMessageAdapter.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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 { - OFType type; - - private OfMessageAdapter() {} - - public OfMessageAdapter(OFType type) { - this.type = type; - } - - @Override - public OFType getType() { - return type; - } - - @Override - public OFVersion getVersion() { - 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/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OpenFlowSwitchListenerAdapter.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OpenFlowSwitchListenerAdapter.java deleted file mode 100644 index b018f42a..00000000 --- a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OpenFlowSwitchListenerAdapter.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 java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.OpenFlowSwitchListener; -import org.onosproject.openflow.controller.RoleState; -import org.projectfloodlight.openflow.protocol.OFPortStatus; - -/** - * Test harness for a switch listener. - */ -public class OpenFlowSwitchListenerAdapter implements OpenFlowSwitchListener { - final List removedDpids = new ArrayList<>(); - final List addedDpids = new ArrayList<>(); - final List changedDpids = new ArrayList<>(); - final Map portChangedDpids = new HashMap<>(); - - @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) { - portChangedDpids.put(dpid, status); - } - - @Override - public void receivedRoleReply(Dpid dpid, RoleState requested, RoleState response) { - // Stub - } - - public List removedDpids() { - return removedDpids; - } - - public List addedDpids() { - return addedDpids; - } - - public List changedDpids() { - return changedDpids; - } - - public Map portChangedDpids() { - return portChangedDpids; - } -} diff --git a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java deleted file mode 100644 index 9b899a67..00000000 --- a/framework/src/onos/protocols/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 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 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 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/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/ControllerTest.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/ControllerTest.java deleted file mode 100644 index dddea328..00000000 --- a/framework/src/onos/protocols/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 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 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 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 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/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageDecoderTest.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageDecoderTest.java deleted file mode 100644 index ed1db238..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageEncoderTest.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageEncoderTest.java deleted file mode 100644 index d09e5661..00000000 --- a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OFMessageEncoderTest.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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 org.projectfloodlight.openflow.protocol.OFType; - -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() { - super(OFType.ERROR); - 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 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/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplPacketsTest.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplPacketsTest.java deleted file mode 100644 index 13086ca7..00000000 --- a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplPacketsTest.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.openflow.controller.impl; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.Future; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.openflow.ExecutorServiceAdapter; -import org.onosproject.openflow.MockOfFeaturesReply; -import org.onosproject.openflow.MockOfPacketIn; -import org.onosproject.openflow.MockOfPortStatus; -import org.onosproject.openflow.OfMessageAdapter; -import org.onosproject.openflow.OpenFlowSwitchListenerAdapter; -import org.onosproject.openflow.OpenflowSwitchDriverAdapter; -import org.onosproject.openflow.controller.Dpid; -import org.onosproject.openflow.controller.OpenFlowPacketContext; -import org.onosproject.openflow.controller.OpenFlowSwitch; -import org.onosproject.openflow.controller.PacketListener; -import org.projectfloodlight.openflow.protocol.OFMessage; -import org.projectfloodlight.openflow.protocol.OFType; - -import static junit.framework.TestCase.fail; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; - -/** - * Tests for packet processing in the open flow controller impl class. - */ -public class OpenFlowControllerImplPacketsTest { - OpenFlowControllerImpl controller; - OpenFlowControllerImpl.OpenFlowSwitchAgent agent; - Dpid dpid1; - OpenFlowSwitch switch1; - OpenFlowSwitchListenerAdapter switchListener; - TestPacketListener packetListener; - TestExecutorService executorService; - - /** - * Mock packet listener that accumulates packets. - */ - class TestPacketListener implements PacketListener { - List contexts = new ArrayList<>(); - - @Override - public void handlePacket(OpenFlowPacketContext pktCtx) { - contexts.add(pktCtx); - } - - List contexts() { - return contexts; - } - } - - - /** - * Mock executor service that tracks submits. - */ - static class TestExecutorService extends ExecutorServiceAdapter { - private List submittedMessages = new ArrayList<>(); - - List submittedMessages() { - return submittedMessages; - } - - @Override - public Future submit(Runnable task) { - OpenFlowControllerImpl.OFMessageHandler handler = - (OpenFlowControllerImpl.OFMessageHandler) task; - submittedMessages.add(handler.msg); - return null; - } - } - - /** - * 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")); - } catch (URISyntaxException ex) { - // Does not happen - fail(); - } - - controller = new OpenFlowControllerImpl(); - agent = controller.agent; - switchListener = new OpenFlowSwitchListenerAdapter(); - controller.addListener(switchListener); - - packetListener = new TestPacketListener(); - controller.addPacketListener(100, packetListener); - - executorService = new TestExecutorService(); - controller.executorMsgs = executorService; - } - - /** - * Tests a port status operation. - */ - @Test - public void testPortStatus() { - OFMessage portStatusPacket = new MockOfPortStatus(); - controller.processPacket(dpid1, portStatusPacket); - assertThat(switchListener.portChangedDpids().size(), is(1)); - assertThat(switchListener.portChangedDpids().containsKey(dpid1), - is(true)); - assertThat(switchListener.portChangedDpids().get(dpid1), - equalTo(portStatusPacket)); - } - - /** - * Tests a features reply operation. - */ - @Test - public void testFeaturesReply() { - OFMessage ofFeaturesReplyPacket = new MockOfFeaturesReply(); - controller.processPacket(dpid1, ofFeaturesReplyPacket); - assertThat(switchListener.changedDpids(), hasSize(1)); - assertThat(switchListener.changedDpids().get(0), - equalTo(dpid1)); - } - - /** - * Tests a packet in operation. - */ - @Test - public void testPacketIn() { - agent.addConnectedSwitch(dpid1, switch1); - OFMessage packetInPacket = new MockOfPacketIn(); - controller.processPacket(dpid1, packetInPacket); - assertThat(packetListener.contexts(), hasSize(1)); - } - - /** - * Tests an error operation. - */ - @Test - public void testError() { - agent.addConnectedSwitch(dpid1, switch1); - OfMessageAdapter errorPacket = new OfMessageAdapter(OFType.ERROR); - controller.processPacket(dpid1, errorPacket); - assertThat(executorService.submittedMessages(), hasSize(1)); - assertThat(executorService.submittedMessages().get(0), is(errorPacket)); - } -} diff --git a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java deleted file mode 100644 index 56d422a9..00000000 --- a/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS 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.core.CoreService; -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 removedDpids = new ArrayList<>(); - final List addedDpids = new ArrayList<>(); - final List 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); - - CoreService mockCoreService = - EasyMock.createMock(CoreService.class); - controller.coreService = mockCoreService; - - 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 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 type of the items in the iterable - * @return stream of objects of type T - */ - private Stream makeIntoStream(Iterable 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 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 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 fetchedMasterSwitches = - makeIntoStream(controller.getMasterSwitches()); - assertThat(fetchedMasterSwitches.count(), is(1L)); - Stream 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 fetchedEqualSwitches = - makeIntoStream(controller.getEqualSwitches()); - assertThat(fetchedEqualSwitches.count(), is(1L)); - Stream 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/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/RoleManagerTest.java b/framework/src/onos/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/RoleManagerTest.java deleted file mode 100644 index 4b594383..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFSwitchImplSpringOpenTTPDellOSR.java b/framework/src/onos/protocols/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFSwitchImplSpringOpenTTPDellOSR.java deleted file mode 100644 index 783a37e6..00000000 --- a/framework/src/onos/protocols/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/protocols/openflow/pom.xml b/framework/src/onos/protocols/openflow/pom.xml deleted file mode 100644 index 07074660..00000000 --- a/framework/src/onos/protocols/openflow/pom.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - 4.0.0 - - - org.onosproject - onos-protocols - 1.4.0-rc1 - ../pom.xml - - - onos-of - pom - - ONOS OpenFlow Protocol subsystem - - - api - ctl - - - - - org.hamcrest - hamcrest-core - 1.3 - test - - - org.hamcrest - hamcrest-library - 1.3 - test - - - org.easymock - easymock - test - - - org.osgi - org.osgi.core - - - - diff --git a/framework/src/onos/protocols/ovsdb/api/pom.xml b/framework/src/onos/protocols/ovsdb/api/pom.xml deleted file mode 100644 index d4bee9a0..00000000 --- a/framework/src/onos/protocols/ovsdb/api/pom.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - 4.0.0 - - org.onosproject - onos-ovsdb - 1.4.0-rc1 - - onos-ovsdb-api - bundle - - ONOS OVSDB plugin API - - - junit - junit - test - - - commons-pool - commons-pool - - - io.netty - netty-transport - - - io.netty - netty-transport-native-epoll - ${netty4.version} - - - org.onosproject - onos-api - - - org.onosproject - onos-ovsdb-rfc - ${project.version} - - - - diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/DefaultEventSubject.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/DefaultEventSubject.java deleted file mode 100644 index 5d9134b4..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/DefaultEventSubject.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.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; -import java.util.Set; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; - -/** - * This class is default event subject that implements OvsdbEventSubject. - */ -public class DefaultEventSubject implements OvsdbEventSubject { - private final MacAddress mac; - private final Set ips; - private final OvsdbPortName portname; - private final OvsdbPortNumber portnumber; - private final OvsdbDatapathId dpid; - private final OvsdbPortType portType; - private final OvsdbIfaceId ifaceid; - - /** - * Creates an end-station event subject using the supplied information. - * - * @param mac host MAC address - * @param ips host MAC ips - * @param portname port name - * @param portnumber port number - * @param dpid ovs dpid - * @param portType port type - * @param ifaceid vm ifaceid - */ - public DefaultEventSubject(MacAddress mac, Set ips, - OvsdbPortName portname, OvsdbPortNumber portnumber, OvsdbDatapathId dpid, - OvsdbPortType portType, OvsdbIfaceId ifaceid) { - super(); - this.mac = mac; - this.ips = ips; - this.portname = portname; - this.portnumber = portnumber; - this.dpid = dpid; - this.portType = portType; - this.ifaceid = ifaceid; - } - - @Override - public MacAddress hwAddress() { - return mac; - } - - @Override - public Set ipAddress() { - return ips; - } - - @Override - public OvsdbPortName portName() { - return portname; - } - - @Override - public OvsdbPortNumber portNumber() { - return portnumber; - } - - @Override - public OvsdbPortType portType() { - return portType; - } - - @Override - public OvsdbDatapathId dpid() { - return dpid; - } - - @Override - public OvsdbIfaceId ifaceid() { - return ifaceid; - } - - @Override - public int hashCode() { - return Objects.hash(mac, portname, portnumber, dpid, portType, ifaceid); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultEventSubject) { - final DefaultEventSubject other = (DefaultEventSubject) obj; - return Objects.equals(this.mac, other.mac) - && Objects.equals(this.portname, other.portname) - && Objects.equals(this.portnumber, other.portnumber) - && Objects.equals(this.dpid, other.dpid) - && Objects.equals(this.portType, other.portType) - && Objects.equals(this.ifaceid, other.ifaceid); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("mac", mac).add("portname", portname) - .add("portnumber", portnumber).add("portType", portType) - .add("ipAddresses", ips).add("dpid", dpid).add("ifaceid", ifaceid) - .toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/EventSubject.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/EventSubject.java deleted file mode 100644 index d8aaef65..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/EventSubject.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.controller; - -/** - * Representation for an entity that carries important information for a listener. - */ -public interface EventSubject { -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridge.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridge.java deleted file mode 100644 index 18c59e14..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridge.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.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * The class representing an ovsdb bridge. - * This class is immutable. - */ -public final class OvsdbBridge { - - private final OvsdbBridgeName bridgeName; - private final OvsdbDatapathId datapathId; - - /** - * Constructor from an OvsdbBridgeName bridgeName and an OvsdbDatapathId - * datapathId. - * - * @param bridgeName the bridgeName to use - * @param datapathId the datapathId to use - */ - public OvsdbBridge(OvsdbBridgeName bridgeName, OvsdbDatapathId datapathId) { - checkNotNull(bridgeName, "bridgeName is not null"); - checkNotNull(datapathId, "datapathId is not null"); - this.bridgeName = bridgeName; - this.datapathId = datapathId; - } - - /** - * Gets the bridge name of bridge. - * - * @return the bridge name of bridge - */ - public OvsdbBridgeName bridgeName() { - return bridgeName; - } - - /** - * Gets the datapathId of bridge. - * - * @return datapathId the datapathId to use - */ - public OvsdbDatapathId datapathId() { - return datapathId; - } - - @Override - public int hashCode() { - return Objects.hash(bridgeName, datapathId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbBridge) { - final OvsdbBridge otherOvsdbBridge = (OvsdbBridge) obj; - return Objects.equals(this.bridgeName, otherOvsdbBridge.bridgeName) - && Objects.equals(this.datapathId, - otherOvsdbBridge.datapathId); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("bridgeName", bridgeName.value()) - .add("datapathId", datapathId.value()).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridgeName.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridgeName.java deleted file mode 100644 index 759ec499..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridgeName.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.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * The class representing a bridge name. - * This class is immutable. - */ -public final class OvsdbBridgeName { - - private final String value; - - /** - * Constructor from a String. - * - * @param value the bridge name to use - */ - public OvsdbBridgeName(String value) { - checkNotNull(value, "value is not null"); - this.value = value; - } - - /** - * Gets the value of bridge name. - * - * @return the value of the bridge name - */ - public String value() { - return value; - } - - @Override - public int hashCode() { - return value.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbBridgeName) { - final OvsdbBridgeName otherBridgeName = (OvsdbBridgeName) obj; - return Objects.equals(this.value, otherBridgeName.value); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("value", value).toString(); - } - -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java deleted file mode 100644 index a35fa6cf..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -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; -import org.onosproject.ovsdb.rfc.jsonrpc.OvsdbRPC; -import org.onosproject.ovsdb.rfc.message.OperationResult; -import org.onosproject.ovsdb.rfc.message.TableUpdates; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.operations.Operation; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * Represents to provider facing side of a node. - */ -public interface OvsdbClientService extends OvsdbRPC { - /** - * Gets the node identifier. - * - * @return node identifier - */ - OvsdbNodeId nodeId(); - - /** - * Creates the configuration for tunnel. - * - * @param srcIp source IP address - * @param dstIp destination IP address - */ - @Deprecated - void createTunnel(IpAddress srcIp, IpAddress dstIp); - - /** - * Creates a tunnel port with given options. - * - * @param bridgeName bridge name - * @param portName port name - * @param tunnelType tunnel type - * @param options tunnel options - * @return true if tunnel creation is successful, false otherwise - */ - boolean createTunnel(String bridgeName, String portName, String tunnelType, Map options); - - /** - * Drops the configuration for tunnel. - * - * @param srcIp source IP address - * @param dstIp destination IP address - */ - void dropTunnel(IpAddress srcIp, IpAddress dstIp); - - /** - * Gets tunnels of node. - * - * @return set of tunnels; empty if no tunnel is find - */ - Set getTunnels(); - - /** - * Creates a bridge. - * - * @param bridgeName bridge name - */ - 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. - * - * @param bridgeName bridge name - * @param dpid data path id - * @param controllers controllers - * @return true if bridge creation is successful, false otherwise - */ - boolean createBridge(String bridgeName, String dpid, List controllers); - - /** - * Drops a bridge. - * - * @param bridgeName bridge name - */ - void dropBridge(String bridgeName); - - /** - * Gets bridges of node. - * - * @return set of bridges; empty if no bridge is find - */ - Set getBridges(); - - /** - * Gets controllers of node. - * - * @param openflowDeviceId target device id - * @return set of controllers; empty if no controller is find - */ - Set getControllers(DeviceId openflowDeviceId); - - /** - * Sets the Controllers for the specified bridge. - *

- * This method will replace the existing controller list with the new controller - * list. - * - * @param bridgeUuid bridge uuid - * @param controllers list of controllers - */ - void setControllersWithUUID(UUID bridgeUuid, List controllers); - - /** - * Sets the Controllers for the specified device. - *

- * This method will replace the existing controller list with the new controller - * list. - * - * @param deviceId device id (likely Openflow device) - * @param controllers list of controllers - */ - void setControllersWithDeviceId(DeviceId deviceId, List controllers); - - /** - * Creates a port. - * - * @param bridgeName bridge name - * @param portName port name - */ - void createPort(String bridgeName, String portName); - - /** - * Drops a port. - * - * @param bridgeName bridge name - * @param portName port name - */ - void dropPort(String bridgeName, String portName); - - /** - * Gets ports of bridge. - * - * @return set of ports; empty if no ports is find - */ - Set getPorts(); - - /** - * Checks if the node is still connected. - * - * @return true if the node is still connected - */ - boolean isConnected(); - - /** - * Gets the Bridge uuid. - * - * @param bridgeName bridge name - * @return bridge uuid, empty if no uuid is find - */ - String getBridgeUuid(String bridgeName); - - /** - * Gets the Port uuid. - * - * @param portName port name - * @param bridgeUuid bridge uuid - * @return port uuid, empty if no uuid is find - */ - String getPortUuid(String portName, String bridgeUuid); - - /** - * Gets the Interface uuid. - * - * @param portUuid port uuid - * @param portName port name - * @return interface uuid, empty if no uuid is find - */ - String getInterfaceUuid(String portUuid, String portName); - - /** - * Gets the Controller uuid. - * - * @param controllerName controller name - * @param controllerTarget controller target - * @return controller uuid, empty if no uuid is find - */ - String getControllerUuid(String controllerName, String controllerTarget); - - /** - * Gets the OVS uuid. - * - * @param dbName database name - * @return ovs uuid, empty if no uuid is find - */ - String getOvsUuid(String dbName); - - /** - * Gets the OVSDB database schema. - * - * @param dbName database name - * @return database schema - */ - ListenableFuture getOvsdbSchema(String dbName); - - /** - * Gets the OVSDB table updates. - * - * @param dbName database name - * @param id random uuid - * @return table updates - */ - ListenableFuture monitorTables(String dbName, String id); - - /** - * Gets the OVSDB config operation result. - * - * @param dbName database name - * @param operations the list of operations - * @return operation results - */ - ListenableFuture> transactConfig(String dbName, - List operations); - - /** - * Gets the OVSDB database schema from local. - * - * @param dbName database name - * @return database schema - */ - DatabaseSchema getDatabaseSchema(String dbName); - - /** - * Gets the OVSDB row from local OVSDB store. - * - * @param dbName database name - * @param tableName table name - * @param uuid row uuid - * @return row OVSDB row - */ - Row getRow(String dbName, String tableName, String uuid); - - /** - * Removes the OVSDB row from local OVSDB store. - * - * @param dbName database name - * @param tableName table name - * @param uuid row uuid - */ - void removeRow(String dbName, String tableName, String uuid); - - /** - * Updates the local OVSDB store. - * - * @param dbName database name - * @param tableName table name - * @param uuid row uuid - * @param row OVSDB row - */ - void updateOvsdbStore(String dbName, String tableName, String uuid, Row row); - - /** - * Gets OVSDB local ports. - * - * @param ifaceids the ifaceid that needed - * @return OVSDB ports - */ - Set getLocalPorts(Iterable ifaceids); - - /** - * Disconnects the OVSDB server. - */ - void disconnect(); -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbConstant.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbConstant.java deleted file mode 100644 index e91c928a..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbConstant.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.ovsdb.controller; - -/** - * Ovsdb related constants. - */ -public final class OvsdbConstant { - - /** - * Default constructor. - * - * The constructor is private to prevent creating an instance of this - * utility class. - */ - private OvsdbConstant() { - } - - /** Ovsdb database Open_vSwitch. */ - public static final String DATABASENAME = "Open_vSwitch"; - - /** Ovsdb table Bridge. */ - public static final String BRIDGE = "Bridge"; - - /** Ovsdb table Interface. */ - public static final String INTERFACE = "Interface"; - - /** Ovsdb table Controller. */ - public static final String CONTROLLER = "Controller"; - - /** Ovsdb table Port. */ - public static final String PORT = "Port"; - - /** Ovsdb bridge name. */ - public static final String INTEGRATION_BRIDGE = "br-int"; - - /** Ovsdb vxlan tunnel type. */ - public static final String TYPEVXLAN = "vxlan"; - - /** Openflow version. */ - public static final String OPENFLOW13 = "OpenFlow13"; - - /** Ovsdb external_id_interface_id.. */ - public static final String EXTERNAL_ID_INTERFACE_ID = "iface-id"; - - /** Ovsdb external_id_vm_mac. */ - public static final String EXTERNAL_ID_VM_MAC = "attached-mac"; - - /** Openflow port. */ - public static final int OFPORT = 6653; - - /** Ovsdb port. */ - public static final int OVSDBPORT = 6640; - -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbController.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbController.java deleted file mode 100644 index f22a5787..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbController.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.ovsdb.controller; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.TpPort; - -import java.util.List; - -/** - * Abstraction of an ovsdb controller. Serves as an one stop shop for obtaining - * OvsdbNode and (un)register listeners on ovsdb events and ovsdb node events. - */ -public interface OvsdbController { - - /** - * Adds Node Event Listener. - * - * @param listener node listener - */ - void addNodeListener(OvsdbNodeListener listener); - - /** - * Removes Node Event Listener. - * - * @param listener node listener - */ - void removeNodeListener(OvsdbNodeListener listener); - - /** - * Adds ovsdb event listener. - * - * @param listener event listener - */ - void addOvsdbEventListener(OvsdbEventListener listener); - - /** - * Removes ovsdb event listener. - * - * @param listener event listener - */ - void removeOvsdbEventListener(OvsdbEventListener listener); - - /** - * Gets all the nodes information. - * - * @return the list of node id - */ - List getNodeIds(); - - /** - * Gets an ovsdb client by node identifier. - * - * @param nodeId node identifier - * @return OvsdbClient ovsdb node information - */ - OvsdbClientService getOvsdbClient(OvsdbNodeId nodeId); - - /** - * Connect to the ovsdb server with given ip address and port number. - * - * @param ip ip address - * @param port port number - */ - void connect(IpAddress ip, TpPort port); -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbDatapathId.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbDatapathId.java deleted file mode 100644 index 02989afa..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbDatapathId.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.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; -import java.util.Objects; - -/** - * The class representing a datapathid. - * This class is immutable. - */ -public final class OvsdbDatapathId { - private final String value; - - /** - * Constructor from a String. - * - * @param value the datapathid to use - */ - public OvsdbDatapathId(String value) { - checkNotNull(value, "value is not null"); - this.value = value; - } - - /** - * Gets the value of datapathid. - * - * @return the value of datapathid - */ - public String value() { - return value; - } - - @Override - public int hashCode() { - return value.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbDatapathId) { - final OvsdbDatapathId otherDatapathId = (OvsdbDatapathId) obj; - return Objects.equals(this.value, otherDatapathId.value); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("value", value).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEvent.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEvent.java deleted file mode 100644 index f68b3c8a..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEvent.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.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * The abstract event of ovsdb. - */ -public final class OvsdbEvent { - - public enum Type { - /** - * Signifies that a new ovs port update has been detected. - */ - PORT_ADDED, - /** - * Signifies that a ovs port has been removed. - */ - PORT_REMOVED - } - - private final Type type; - private final S subject; - - /** - * Creates an event of a given type and for the specified event subject. - * - * @param type event type - * @param subject event subject - */ - public OvsdbEvent(Type type, S subject) { - this.type = type; - this.subject = subject; - } - - /** - * Returns the type of event. - * - * @return event type - */ - public Type type() { - return type; - } - - /** - * Returns the subject of event. - * - * @return subject to which this event pertains - */ - public S subject() { - return subject; - } - - @Override - public String toString() { - return toStringHelper(this).add("type", type()) - .add("subject", subject()).toString(); - } - -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEventListener.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEventListener.java deleted file mode 100644 index b7bf2b55..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEventListener.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.ovsdb.controller; - -/** - * Allows for providers interested in ovsdb events to be notified. - */ -public interface OvsdbEventListener { - /** - * Handles the ovsdb event. - * - * @param event ovsdb event - */ - void handle(OvsdbEvent event); -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEventSubject.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEventSubject.java deleted file mode 100644 index 226a26e6..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEventSubject.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.controller; - -import java.util.Set; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; - -/** - * Represents for an entity that carry important information for listener. - */ -public interface OvsdbEventSubject extends EventSubject { - /** - * Returns the MAC address associated with this host (NIC). - * - * @return the MAC address of this host - */ - MacAddress hwAddress(); - - /** - * Returns the IP address associated with this host's MAC. - * - * @return host IP address - */ - Set ipAddress(); - - /** - * Returns the Port name associated with the host. - * - * @return port name - */ - OvsdbPortName portName(); - - /** - * Returns the Port number associated with the host. - * - * @return port number - */ - OvsdbPortNumber portNumber(); - - /** - * Returns the Port type associated with the host. - * - * @return port type - */ - OvsdbPortType portType(); - - /** - * Returns the Ovs dpid associated with the host. - * - * @return Ovs dpid - */ - OvsdbDatapathId dpid(); - - /** - * Returns the vm ifaceid associated with the host. - * - * @return vm ifaceid - */ - OvsdbIfaceId ifaceid(); -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbIfaceId.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbIfaceId.java deleted file mode 100644 index bf724fa4..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbIfaceId.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.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; -import java.util.Objects; - -/** - * The class representing an ifaceid. - * This class is immutable. - */ -public class OvsdbIfaceId { - private final String value; - - /** - * Constructor from a String. - * - * @param value the ifaceid to use - */ - public OvsdbIfaceId(String value) { - checkNotNull(value, "value is not null"); - this.value = value; - } - - /** - * Gets the value of ifaceid. - * - * @return the value of ifaceid - */ - public String value() { - return value; - } - - @Override - public int hashCode() { - return value.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbIfaceId) { - final OvsdbIfaceId otherIfaceId = (OvsdbIfaceId) obj; - return Objects.equals(this.value, otherIfaceId.value); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("value", value).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeId.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeId.java deleted file mode 100644 index 60146c85..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeId.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.ovsdb.controller; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onlab.packet.IpAddress; - -/** - * The class representing a nodeId of node which using ovsdb connection. - * This class is immutable. - */ -public final class OvsdbNodeId { - private static final String SCHEME = "ovsdb"; - private final String nodeId; - private final String ipAddress; - - /** - * Creates a new node identifier from an IpAddress ipAddress, a long port. - * - * @param ipAddress node IP address - * @param port node port - */ - public OvsdbNodeId(IpAddress ipAddress, long port) { - checkNotNull(ipAddress, "ipAddress is not null"); - this.ipAddress = ipAddress.toString(); - this.nodeId = ipAddress.toString(); - } - - @Override - public int hashCode() { - return nodeId.hashCode(); - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof OvsdbNodeId)) { - return false; - } - - OvsdbNodeId otherNodeId = (OvsdbNodeId) other; - - return Objects.equals(otherNodeId.nodeId, this.nodeId); - } - - @Override - public String toString() { - return SCHEME + ":" + nodeId; - } - - /** - * Gets the value of the NodeId. - * - * @return the value of the NodeId. - */ - public String nodeId() { - return SCHEME + ":" + nodeId; - } - - /** - * Get the IP address of the node. - * - * @return the IP address of the node - */ - public String getIpAddress() { - return ipAddress; - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeListener.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeListener.java deleted file mode 100644 index ca732ef9..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeListener.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.ovsdb.controller; - -/** - * Allows for providers interested in node events to be notified. - */ -public interface OvsdbNodeListener { - - /** - * Notifies that the node was added. - * - * @param nodeId the node where the event occurred - */ - void nodeAdded(OvsdbNodeId nodeId); - - /** - * Notifies that the node was removed. - * - * @param nodeId the node where the event occurred - */ - void nodeRemoved(OvsdbNodeId nodeId); -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPort.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPort.java deleted file mode 100644 index deea42d7..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPort.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * The class representing a ovsdb port. This class is immutable. - */ -public final class OvsdbPort { - - private final OvsdbPortNumber portNumber; - private final OvsdbPortName portName; - - /** - * Constructor from OvsdbPortNumber portNumber, OvsdbPortName portName. - * - * @param portNumber the portNumber to use - * @param portName the portName to use - */ - public OvsdbPort(OvsdbPortNumber portNumber, OvsdbPortName portName) { - checkNotNull(portNumber, "portNumber is not null"); - checkNotNull(portName, "portName is not null"); - this.portNumber = portNumber; - this.portName = portName; - } - - /** - * Gets the port number of port. - * - * @return the port number of port - */ - public OvsdbPortNumber portNumber() { - return portNumber; - } - - /** - * Gets the port name of port. - * - * @return the port name of port - */ - public OvsdbPortName portName() { - return portName; - } - - @Override - public int hashCode() { - return Objects.hash(portNumber, portName); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbPort) { - final OvsdbPort otherOvsdbPort = (OvsdbPort) obj; - return Objects.equals(this.portNumber, otherOvsdbPort.portNumber) - && Objects.equals(this.portName, otherOvsdbPort.portName); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("portNumber", String.valueOf(portNumber.value())) - .add("portName", portName.value()).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortName.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortName.java deleted file mode 100644 index 7d40e99f..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortName.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * The class representing a port number. - * This class is immutable. - */ -public final class OvsdbPortName { - - private final String value; - - /** - * Constructor from a String. - * - * @param value the port name to use - */ - public OvsdbPortName(String value) { - checkNotNull(value, "value is not null"); - this.value = value; - } - - /** - * Gets the value of port name. - * - * @return the value of port name - */ - public String value() { - return value; - } - - @Override - public int hashCode() { - return value.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbPortName) { - final OvsdbPortName otherOvsdbPortName = (OvsdbPortName) obj; - return Objects.equals(this.value, otherOvsdbPortName.value); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("value", value).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortNumber.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortNumber.java deleted file mode 100644 index 86fc887a..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortNumber.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.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; - -/** - * The class representing a port number. - * This class is immutable. - */ -public final class OvsdbPortNumber { - - private final long value; - - /** - * Constructor from a long value. - * - * @param value the port number to use - */ - public OvsdbPortNumber(long value) { - this.value = value; - } - - /** - * Gets the value of port number. - * - * @return the value of port number - */ - public long value() { - return value; - } - - @Override - public int hashCode() { - return Objects.hashCode(value); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbPortNumber) { - final OvsdbPortNumber ovsdbPortNumber = (OvsdbPortNumber) obj; - return Objects.equals(this.value, ovsdbPortNumber.value); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("value", value).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortType.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortType.java deleted file mode 100644 index fb7cdb00..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortType.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * The class representing a port type. - * This class is immutable. - */ -public class OvsdbPortType { - - private final String value; - - /** - * Constructor from a String. - * - * @param value the port type to use - */ - public OvsdbPortType(String value) { - checkNotNull(value, "value is not null"); - this.value = value; - } - - /** - * Gets the value of port type. - * - * @return the value of port type - */ - public String value() { - return value; - } - - @Override - public int hashCode() { - return value.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbPortType) { - final OvsdbPortType otherOvsdbPortType = (OvsdbPortType) obj; - return Objects.equals(this.value, otherOvsdbPortType.value); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("value", value).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbRowStore.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbRowStore.java deleted file mode 100644 index bec0e2e9..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbRowStore.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.ovsdb.controller; - -import java.util.concurrent.ConcurrentMap; - -import org.onosproject.ovsdb.rfc.notation.Row; - -import com.google.common.collect.Maps; - -/** - * The class representing a table data. - */ -public class OvsdbRowStore { - - private final ConcurrentMap rowStore = Maps.newConcurrentMap(); - - /** - * Gets the row. - * - * @param uuid the key of the rowStore - * @return row the row of the rowStore - */ - public Row getRow(String uuid) { - return rowStore.get(uuid); - } - - /** - * Inserts a row to rowStore. - * - * @param uuid key of the row - * @param row a row of the table - */ - public void insertRow(String uuid, Row row) { - rowStore.put(uuid, row); - } - - /** - * Deletes a row to rowStore. - * - * @param uuid key of the row - */ - public void deleteRow(String uuid) { - rowStore.remove(uuid); - } - - /** - * Gets the rowStore. - * - * @return rowStore - */ - public ConcurrentMap getRowStore() { - return rowStore; - } - -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbStore.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbStore.java deleted file mode 100644 index 56704908..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbStore.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.controller; - -import java.util.concurrent.ConcurrentMap; - -import com.google.common.collect.Maps; - -/** - * The cache for local ovsdb database. - */ -public class OvsdbStore { - - private final ConcurrentMap ovsdbStore = Maps.newConcurrentMap(); - - /** - * Gets the OvsdbTableStore. - * - * @param dbName ovsdb database name - * @return tableStore OvsdbTableStore - */ - public OvsdbTableStore getOvsdbTableStore(String dbName) { - OvsdbTableStore tableStore = ovsdbStore.get(dbName); - if (tableStore == null) { - return null; - } - return tableStore; - } - - /** - * Create or Update a value to ovsdbStore. - * - * @param dbName ovsdb database name - * @param tableStore a database tableStore. - */ - public void createOrUpdateOvsdbStore(String dbName, OvsdbTableStore tableStore) { - ovsdbStore.put(dbName, tableStore); - } - - /** - * Drops a value to rowStore. - * - * @param dbName ovsdb database name - */ - public void dropOvsdbStore(String dbName) { - ovsdbStore.remove(dbName); - } - - /** - * Gets the ovsdbStore. - * - * @return ovsdbStore - */ - public ConcurrentMap getOvsdbStore() { - return ovsdbStore; - } - -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTableStore.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTableStore.java deleted file mode 100644 index 72b64f32..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTableStore.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.ovsdb.controller; - -import java.util.concurrent.ConcurrentMap; - -import com.google.common.collect.Maps; - -/** - * The class representing a database data. - */ -public class OvsdbTableStore { - - private final ConcurrentMap tableStore = Maps.newConcurrentMap(); - - /** - * Gets the ovsdbRowStore. - * - * @param tableName an ovsdb table name - * @return OvsdbRowStore the data of table - */ - public OvsdbRowStore getRows(String tableName) { - return tableStore.get(tableName); - } - - /** - * Creates or updates a value to tableStore. - * - * @param tableName key of tableName - * @param rowStore a row of table - */ - public void createOrUpdateTable(String tableName, OvsdbRowStore rowStore) { - tableStore.put(tableName, rowStore); - } - - /** - * Drops a value to table data. - * - * @param tableName key of tableName - */ - public void dropTable(String tableName) { - tableStore.remove(tableName); - } - - /** - * Gets tableStore. - * - * @return tableStore - */ - public ConcurrentMap getTableStore() { - return tableStore; - } - -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnel.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnel.java deleted file mode 100644 index 8c857da4..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnel.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.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onlab.packet.IpAddress; - -/** - * The class representing an ovsdb tunnel. - * This class is immutable. - */ -public final class OvsdbTunnel { - - private final IpAddress localIp; - private final IpAddress remoteIp; - - public enum Type { - VXLAN, GRE - } - - private final Type tunnelType; - private final OvsdbTunnelName tunnelName; - - /** - * Constructor from an IpAddress localIp, IpAddress remoteIp Type tunnelType, - * OvsdbTunnelName tunnelName. - * - * @param localIp the localIp to use - * @param remoteIp the remoteIp to use - * @param tunnelType the tunnelType to use - * @param tunnelName the tunnelName to use - */ - public OvsdbTunnel(IpAddress localIp, IpAddress remoteIp, Type tunnelType, - OvsdbTunnelName tunnelName) { - checkNotNull(localIp, "portName is not null"); - checkNotNull(remoteIp, "portName is not null"); - checkNotNull(tunnelName, "portName is not null"); - this.localIp = localIp; - this.remoteIp = remoteIp; - this.tunnelType = tunnelType; - this.tunnelName = tunnelName; - } - - /** - * Gets the local IP of tunnel. - * - * @return the local IP of tunnel - */ - public IpAddress localIp() { - return localIp; - } - - /** - * Gets the remote IP of tunnel. - * - * @return the remote IP of tunnel - */ - public IpAddress remoteIp() { - return remoteIp; - } - - /** - * Gets the tunnel type of tunnel. - * - * @return the tunnel type of tunnel - */ - public Type tunnelType() { - return tunnelType; - } - - /** - * Gets the tunnel name of tunnel. - * - * @return the tunnel name of tunnel - */ - public OvsdbTunnelName tunnelName() { - return tunnelName; - } - - @Override - public int hashCode() { - return Objects.hash(localIp, remoteIp, tunnelType, tunnelName); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbTunnel) { - final OvsdbTunnel otherOvsdbTunnel = (OvsdbTunnel) obj; - return Objects.equals(this.localIp, otherOvsdbTunnel.localIp) - && Objects.equals(this.remoteIp, otherOvsdbTunnel.remoteIp) - && Objects.equals(this.tunnelType, - otherOvsdbTunnel.tunnelType) - && Objects.equals(this.tunnelName, - otherOvsdbTunnel.tunnelName); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("localIp", localIp.toString()) - .add("remoteIp", remoteIp.toString()) - .add("tunnelType", tunnelType).add("tunnelName", tunnelName) - .toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnelName.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnelName.java deleted file mode 100644 index 490d640b..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnelName.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.controller; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * The class representing a tunnel name. - * This class is immutable. - */ -public final class OvsdbTunnelName { - private final String value; - - /** - * Constructor from a String. - * - * @param value the tunnel name to use - */ - public OvsdbTunnelName(String value) { - checkNotNull(value, "value is not null"); - this.value = value; - } - - /** - * Gets the value of tunnel name. - * - * @return the value of tunnel name - */ - public String value() { - return value; - } - - @Override - public int hashCode() { - return value.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbTunnelName) { - final OvsdbTunnelName otherOvsdbTunnelName = (OvsdbTunnelName) obj; - return Objects.equals(this.value, otherOvsdbTunnelName.value); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("value", value).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java deleted file mode 100644 index 5f72606d..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java +++ /dev/null @@ -1,1500 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.controller.driver; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.base.Function; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -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; -import org.onosproject.ovsdb.controller.OvsdbBridge; -import org.onosproject.ovsdb.controller.OvsdbBridgeName; -import org.onosproject.ovsdb.controller.OvsdbClientService; -import org.onosproject.ovsdb.controller.OvsdbConstant; -import org.onosproject.ovsdb.controller.OvsdbDatapathId; -import org.onosproject.ovsdb.controller.OvsdbNodeId; -import org.onosproject.ovsdb.controller.OvsdbPort; -import org.onosproject.ovsdb.controller.OvsdbPortName; -import org.onosproject.ovsdb.controller.OvsdbPortNumber; -import org.onosproject.ovsdb.controller.OvsdbRowStore; -import org.onosproject.ovsdb.controller.OvsdbStore; -import org.onosproject.ovsdb.controller.OvsdbTableStore; -import org.onosproject.ovsdb.controller.OvsdbTunnel; -import org.onosproject.ovsdb.rfc.exception.BridgeCreateException; -import org.onosproject.ovsdb.rfc.jsonrpc.Callback; -import org.onosproject.ovsdb.rfc.message.OperationResult; -import org.onosproject.ovsdb.rfc.message.TableUpdates; -import org.onosproject.ovsdb.rfc.notation.Condition; -import org.onosproject.ovsdb.rfc.notation.Mutation; -import org.onosproject.ovsdb.rfc.notation.OvsdbMap; -import org.onosproject.ovsdb.rfc.notation.OvsdbSet; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.operations.Delete; -import org.onosproject.ovsdb.rfc.operations.Insert; -import org.onosproject.ovsdb.rfc.operations.Mutate; -import org.onosproject.ovsdb.rfc.operations.Operation; -import org.onosproject.ovsdb.rfc.operations.Update; -import org.onosproject.ovsdb.rfc.schema.ColumnSchema; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.schema.TableSchema; -import org.onosproject.ovsdb.rfc.table.Bridge; -import org.onosproject.ovsdb.rfc.table.Controller; -import org.onosproject.ovsdb.rfc.table.Interface; -import org.onosproject.ovsdb.rfc.table.OvsdbTable; -import org.onosproject.ovsdb.rfc.table.Port; -import org.onosproject.ovsdb.rfc.table.TableGenerator; -import org.onosproject.ovsdb.rfc.utils.ConditionUtil; -import org.onosproject.ovsdb.rfc.utils.FromJsonUtil; -import org.onosproject.ovsdb.rfc.utils.JsonRpcWriterUtil; -import org.onosproject.ovsdb.rfc.utils.MutationUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetSocketAddress; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Collectors; - -/** - * An representation of an ovsdb client. - */ -public class DefaultOvsdbClient - implements OvsdbProviderService, OvsdbClientService { - - private final Logger log = LoggerFactory - .getLogger(DefaultOvsdbClient.class); - - private Channel channel; - - private OvsdbAgent agent; - private boolean connected; - private OvsdbNodeId nodeId; - private Callback monitorCallBack; - - private OvsdbStore ovsdbStore = new OvsdbStore(); - - private final Map requestMethod = Maps.newHashMap(); - private final Map> requestResult = Maps - .newHashMap(); - - private final Map schema = Maps.newHashMap(); - private final Set ovsdbTunnels = new HashSet(); - - /** - * Creates an OvsdbClient. - * - * @param nodeId ovsdb node id - */ - public DefaultOvsdbClient(OvsdbNodeId nodeId) { - this.nodeId = nodeId; - } - - @Override - public OvsdbNodeId nodeId() { - return nodeId; - } - - @Override - public void setAgent(OvsdbAgent agent) { - if (this.agent == null) { - this.agent = agent; - } - } - - @Override - public void setChannel(Channel channel) { - this.channel = channel; - } - - @Override - public void setConnection(boolean connected) { - this.connected = connected; - } - - @Override - public boolean isConnected() { - return this.connected; - } - - @Override - public void nodeAdded() { - this.agent.addConnectedNode(nodeId, this); - } - - @Override - public void nodeRemoved() { - this.agent.removeConnectedNode(nodeId); - channel.disconnect(); - } - - /** - * Gets the ovsdb table store. - * - * @param dbName the ovsdb database name - * @return ovsTableStore, empty if table store is find - */ - private OvsdbTableStore getTableStore(String dbName) { - if (ovsdbStore == null) { - return null; - } - return ovsdbStore.getOvsdbTableStore(dbName); - } - - /** - * Gets the ovsdb row store. - * - * @param dbName the ovsdb database name - * @param tableName the ovsdb table name - * @return ovsRowStore, empty store if no rows exist in the table - */ - private OvsdbRowStore getRowStore(String dbName, String tableName) { - OvsdbTableStore tableStore = getTableStore(dbName); - if (tableStore == null) { - return null; - } - - OvsdbRowStore rowStore = tableStore.getRows(tableName); - if (rowStore == null) { - rowStore = new OvsdbRowStore(); - } - return rowStore; - } - - /** - * Gets the ovsdb row. - * - * @param dbName the ovsdb database name - * @param tableName the ovsdb table name - * @param uuid the key of the row - * @return row, empty if row is find - */ - @Override - public Row getRow(String dbName, String tableName, String uuid) { - OvsdbTableStore tableStore = getTableStore(dbName); - if (tableStore == null) { - return null; - } - OvsdbRowStore rowStore = tableStore.getRows(tableName); - if (rowStore == null) { - return null; - } - return rowStore.getRow(uuid); - } - - @Override - public void removeRow(String dbName, String tableName, String uuid) { - OvsdbTableStore tableStore = getTableStore(dbName); - if (tableStore == null) { - return; - } - OvsdbRowStore rowStore = tableStore.getRows(tableName); - if (rowStore == null) { - return; - } - rowStore.deleteRow(uuid); - } - - @Override - public void updateOvsdbStore(String dbName, String tableName, String uuid, - Row row) { - OvsdbTableStore tableStore = ovsdbStore.getOvsdbTableStore(dbName); - if (tableStore == null) { - tableStore = new OvsdbTableStore(); - } - OvsdbRowStore rowStore = tableStore.getRows(tableName); - if (rowStore == null) { - rowStore = new OvsdbRowStore(); - } - rowStore.insertRow(uuid, row); - tableStore.createOrUpdateTable(tableName, rowStore); - ovsdbStore.createOrUpdateOvsdbStore(dbName, tableStore); - } - - @Override - public String getPortUuid(String portName, String bridgeUuid) { - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - - Row bridgeRow = getRow(OvsdbConstant.DATABASENAME, - OvsdbConstant.BRIDGE, bridgeUuid); - - Bridge bridge = (Bridge) TableGenerator.getTable(dbSchema, bridgeRow, - OvsdbTable.BRIDGE); - if (bridge != null) { - OvsdbSet setPorts = (OvsdbSet) bridge.getPortsColumn().data(); - @SuppressWarnings("unchecked") - Set ports = setPorts.set(); - if (ports == null || ports.size() == 0) { - log.warn("The port uuid is null"); - return null; - } - - for (UUID uuid : ports) { - Row portRow = getRow(OvsdbConstant.DATABASENAME, - OvsdbConstant.PORT, uuid.value()); - Port port = (Port) TableGenerator.getTable(dbSchema, portRow, - OvsdbTable.PORT); - if (port != null && portName.equalsIgnoreCase(port.getName())) { - return uuid.value(); - } - } - - } - return null; - } - - @Override - public String getInterfaceUuid(String portUuid, String portName) { - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - - Row portRow = getRow(OvsdbConstant.DATABASENAME, OvsdbConstant.PORT, - portUuid); - Port port = (Port) TableGenerator.getTable(dbSchema, portRow, - OvsdbTable.PORT); - - if (port != null) { - OvsdbSet setInterfaces = (OvsdbSet) port.getInterfacesColumn().data(); - @SuppressWarnings("unchecked") - Set interfaces = setInterfaces.set(); - - if (interfaces == null || interfaces.size() == 0) { - log.warn("The interface uuid is null"); - return null; - } - - for (UUID uuid : interfaces) { - Row intfRow = getRow(OvsdbConstant.DATABASENAME, - OvsdbConstant.INTERFACE, uuid.value()); - Interface intf = (Interface) TableGenerator - .getTable(dbSchema, intfRow, OvsdbTable.INTERFACE); - if (intf != null && portName.equalsIgnoreCase(intf.getName())) { - return uuid.value(); - } - } - - } - - return null; - } - - @Override - public String getBridgeUuid(String bridgeName) { - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - - OvsdbRowStore rowStore = getRowStore(OvsdbConstant.DATABASENAME, - OvsdbConstant.BRIDGE); - if (rowStore == null) { - log.debug("The bridge uuid is null"); - return null; - } - - ConcurrentMap bridgeTableRows = rowStore.getRowStore(); - if (bridgeTableRows == null) { - log.debug("The bridge uuid is null"); - return null; - } - - for (String uuid : bridgeTableRows.keySet()) { - Bridge bridge = (Bridge) TableGenerator - .getTable(dbSchema, bridgeTableRows.get(uuid), - OvsdbTable.BRIDGE); - - if (bridge.getName().equals(bridgeName)) { - return uuid; - } - - } - return null; - } - - @Override - public String getControllerUuid(String controllerName, - String controllerTarget) { - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - OvsdbRowStore rowStore = getRowStore(OvsdbConstant.DATABASENAME, - OvsdbConstant.CONTROLLER); - if (rowStore == null) { - log.debug("The controller uuid is null"); - return null; - } - - ConcurrentMap controllerTableRows = rowStore.getRowStore(); - if (controllerTableRows != null) { - for (String uuid : controllerTableRows.keySet()) { - - Controller controller = (Controller) TableGenerator - .getTable(dbSchema, controllerTableRows.get(uuid), - OvsdbTable.CONTROLLER); - String target = (String) controller.getTargetColumn().data(); - if (target.equalsIgnoreCase(controllerTarget)) { - return uuid; - } - - } - } - return null; - } - - @Override - public String getOvsUuid(String dbName) { - OvsdbRowStore rowStore = getRowStore(OvsdbConstant.DATABASENAME, - OvsdbConstant.DATABASENAME); - if (rowStore == null) { - log.debug("The bridge uuid is null"); - return null; - } - ConcurrentMap ovsTableRows = rowStore.getRowStore(); - if (ovsTableRows != null) { - for (String uuid : ovsTableRows.keySet()) { - Row row = ovsTableRows.get(uuid); - String tableName = row.tableName(); - if (tableName.equals(dbName)) { - return uuid; - } - } - } - return null; - } - - @Override - public void createPort(String bridgeName, String portName) { - String bridgeUuid = getBridgeUuid(bridgeName); - if (bridgeUuid == null) { - log.error("Can't find bridge {} in {}", bridgeName, - nodeId.getIpAddress()); - return; - } - - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - String portUuid = getPortUuid(portName, bridgeUuid); - - Port port = (Port) TableGenerator - .createTable(dbSchema, OvsdbTable.PORT); - - port.setName(portName); - if (portUuid == null) { - insertConfig(OvsdbConstant.PORT, "_uuid", OvsdbConstant.BRIDGE, - "ports", bridgeUuid, port.getRow()); - } else { - updateConfig(OvsdbConstant.PORT, "_uuid", portUuid, port.getRow()); - } - - return; - } - - @Override - public void dropPort(String bridgeName, String portName) { - String bridgeUuid = getBridgeUuid(bridgeName); - if (bridgeUuid == null) { - log.error("Could not find Bridge {} in {}", bridgeName, nodeId); - return; - } - - String portUuid = getPortUuid(portName, bridgeUuid); - if (portUuid != null) { - log.info("Port {} delete", portName); - deleteConfig(OvsdbConstant.PORT, "_uuid", portUuid, - OvsdbConstant.BRIDGE, "ports"); - } - } - - @Override - public void createBridge(String bridgeName) { - 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 failModes = new HashSet<>(); - failModes.add("secure"); - bridge.setFailMode(failModes); - - Set 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); - 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 { - String message = BridgeCreateException.createMessage(ovsUuid); - throw new BridgeCreateException(message); - } - - } else { - log.info("Update a bridge"); - updateConfig(OvsdbConstant.BRIDGE, "_uuid", bridgeUuid, bridge.getRow()); - } - - setControllerAuto(bridgeUuid); - log.info("Create bridge success"); - } - - @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 failModes = new HashSet<>(); - failModes.add("secure"); - bridge.setFailMode(failModes); - - Set 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 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 { - String message = BridgeCreateException.createMessage(ovsUuid); - throw new BridgeCreateException(message); - } - - } 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 controllers) { - - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - String ovsUuid = getOvsUuid(OvsdbConstant.DATABASENAME); - - if (dbSchema == null || ovsUuid == null) { - log.warn("Couldn't find database Open_vSwitch"); - return false; - } - - Bridge bridge = (Bridge) TableGenerator.createTable(dbSchema, OvsdbTable.BRIDGE); - Set failMode = new HashSet<>(Arrays.asList("secure")); - bridge.setFailMode(failMode); - - Set protocols = new HashSet<>(Arrays.asList(OvsdbConstant.OPENFLOW13)); - bridge.setProtocols(protocols); - - Map options = new HashMap<>(); - options.put("datapath-id", dpid); - bridge.setOtherConfig(options); - - String bridgeUuid = getBridgeUuid(bridgeName); - if (bridgeUuid == null) { - bridge.setName(bridgeName); - bridgeUuid = insertConfig(OvsdbConstant.BRIDGE, "_uuid", - OvsdbConstant.DATABASENAME, "bridges", - ovsUuid, bridge.getRow()); - } else { - updateConfig(OvsdbConstant.BRIDGE, "_uuid", bridgeUuid, bridge.getRow()); - } - - if (bridgeUuid != null) { - createPort(bridgeName, bridgeName); - } else { - log.warn("Failed to create bridge {} on {}", bridgeName, nodeId.toString()); - return false; - } - - setControllersWithUUID(UUID.uuid(bridgeUuid), controllers); - return true; - } - - /** - * Sets the bridge's controller automatically. - *

- * The connection is a TCP connection to the local ONOS instance's IP - * and the default OpenFlow port. - * - * @param bridgeUuid bridge uuid - */ - private void setControllerAuto(String bridgeUuid) { - IpAddress ipAddress = IpAddress.valueOf(((InetSocketAddress) channel.localAddress()).getAddress()); - ControllerInfo controllerInfo = new ControllerInfo(ipAddress, OvsdbConstant.OFPORT, "tcp"); - log.debug("Automatically setting controller for bridge {} to {}", - bridgeUuid, controllerInfo.target()); - setControllersWithUUID(UUID.uuid(bridgeUuid), ImmutableList.of(controllerInfo)); - } - - @Override - public void setControllersWithUUID(UUID bridgeUuid, List controllers) { - - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - if (dbSchema == null) { - log.debug("There is no schema"); - return; - } - List oldControllers = getControllers(bridgeUuid); - if (oldControllers == null) { - log.warn("There are no controllers"); - return; - } - - Set newControllerUuids = new HashSet<>(); - - Set newControllers = new HashSet<>(controllers); - List removeControllers = new ArrayList<>(); - oldControllers.forEach(controller -> { - ControllerInfo controllerInfo = new ControllerInfo((String) controller.getTargetColumn().data()); - if (newControllers.contains(controllerInfo)) { - newControllers.remove(controllerInfo); - newControllerUuids.add(controller.getRow().uuid()); - } else { - removeControllers.add(controller); - } - }); - OvsdbRowStore controllerRowStore = getRowStore(OvsdbConstant.DATABASENAME, - OvsdbConstant.CONTROLLER); - if (controllerRowStore == null) { - log.debug("There is no controller table"); - return; - } - - removeControllers.forEach(c -> deleteConfig(OvsdbConstant.CONTROLLER, "_uuid", c.getRow().uuid().value(), - OvsdbConstant.BRIDGE, "controller")); - - newControllers.stream().map(c -> { - Controller controller = (Controller) TableGenerator - .createTable(dbSchema, OvsdbTable.CONTROLLER); - controller.setTarget(c.target()); - return controller; - }).forEach(c -> { - String uuid = insertConfig(OvsdbConstant.CONTROLLER, "_uuid", - OvsdbConstant.BRIDGE, "controller", bridgeUuid.value(), - c.getRow()); - newControllerUuids.add(UUID.uuid(uuid)); - - }); - - OvsdbRowStore rowStore = getRowStore(OvsdbConstant.DATABASENAME, - OvsdbConstant.BRIDGE); - if (rowStore == null) { - log.debug("There is no bridge table"); - return; - } - - Row bridgeRow = rowStore.getRow(bridgeUuid.value()); - Bridge bridge = (Bridge) TableGenerator.getTable(dbSchema, bridgeRow, OvsdbTable.BRIDGE); - bridge.setController(OvsdbSet.ovsdbSet(newControllerUuids)); - updateConfig(OvsdbConstant.BRIDGE, "_uuid", bridgeUuid.value(), bridge.getRow()); - } - - @Override - public void setControllersWithDeviceId(DeviceId deviceId, List controllers) { - setControllersWithUUID(getBridgeUUID(deviceId), controllers); - } - - @Override - public void dropBridge(String bridgeName) { - String bridgeUUID = getBridgeUuid(bridgeName); - if (bridgeUUID == null) { - log.warn("Could not find bridge in node", nodeId.getIpAddress()); - return; - } - deleteConfig(OvsdbConstant.BRIDGE, "_uuid", bridgeUUID, - OvsdbConstant.DATABASENAME, "bridges"); - } - - @Override - public void createTunnel(IpAddress srcIp, IpAddress dstIp) { - String bridgeUuid = getBridgeUuid(OvsdbConstant.INTEGRATION_BRIDGE); - if (bridgeUuid == null) { - log.warn("Could not find bridge {} and Could not create tunnel. ", - OvsdbConstant.INTEGRATION_BRIDGE); - return; - } - - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - String portName = getTunnelName(OvsdbConstant.TYPEVXLAN, dstIp); - String portUuid = getPortUuid(portName, bridgeUuid); - - Port port = (Port) TableGenerator - .createTable(dbSchema, OvsdbTable.PORT); - if (port != null) { - port.setName(portName); - } - - if (portUuid == null) { - portUuid = insertConfig(OvsdbConstant.PORT, "_uuid", OvsdbConstant.BRIDGE, - "ports", bridgeUuid, port.getRow()); - } else { - updateConfig(OvsdbConstant.PORT, "_uuid", portUuid, port.getRow()); - } - - // When a tunnel is created, A row is inserted into port table and - // interface table of the ovsdb node. - // and the following step is to get the interface uuid from local store - // in controller node. - // but it need spend some time synchronising data between node and - // controller. - // so loop to judge if interfaceUUid is null is necessary. - String interfaceUuid = null; - for (int i = 0; i < 10; i++) { - interfaceUuid = getInterfaceUuid(portUuid, portName); - if (interfaceUuid == null) { - try { - Thread.sleep(500); - } catch (InterruptedException e) { - log.warn("Interrupted while waiting to get interfaceUuid"); - Thread.currentThread().interrupt(); - } - } else { - break; - } - } - - if (interfaceUuid != null) { - - Interface tunInterface = (Interface) TableGenerator - .createTable(dbSchema, OvsdbTable.INTERFACE); - - if (tunInterface != null) { - - tunInterface.setType(OvsdbConstant.TYPEVXLAN); - Map options = Maps.newHashMap(); - options.put("key", "flow"); - options.put("local_ip", srcIp.toString()); - options.put("remote_ip", dstIp.toString()); - tunInterface.setOptions(options); - updateConfig(OvsdbConstant.INTERFACE, "_uuid", interfaceUuid, - tunInterface.getRow()); - log.info("Tunnel added success", tunInterface); - - } - } - - return; - } - - @Override - public boolean createTunnel(String bridgeName, String portName, String tunnelType, Map options) { - - String bridgeUuid = getBridgeUuid(bridgeName); - if (bridgeUuid == null) { - log.warn("Couldn't find bridge {} in {}", bridgeName, nodeId.getIpAddress()); - return false; - } - - if (getPortUuid(portName, bridgeUuid) != null) { - log.warn("Port {} already exists", portName); - // remove existing one and re-create? - return false; - } - - ArrayList operations = Lists.newArrayList(); - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - - // insert a new port to the port table - Port port = (Port) TableGenerator.createTable(dbSchema, OvsdbTable.PORT); - port.setName(portName); - Insert portInsert = new Insert(dbSchema.getTableSchema("Port"), "Port", port.getRow()); - portInsert.getRow().put("interfaces", UUID.uuid("Interface")); - operations.add(portInsert); - - // update the bridge table - Condition condition = ConditionUtil.equals("_uuid", UUID.uuid(bridgeUuid)); - Mutation mutation = MutationUtil.insert("ports", UUID.uuid("Port")); - List conditions = new ArrayList<>(Arrays.asList(condition)); - List mutations = new ArrayList<>(Arrays.asList(mutation)); - operations.add(new Mutate(dbSchema.getTableSchema("Bridge"), conditions, mutations)); - - // insert a tunnel interface - Interface intf = (Interface) TableGenerator.createTable(dbSchema, OvsdbTable.INTERFACE); - intf.setName(portName); - intf.setType(tunnelType); - intf.setOptions(options); - Insert intfInsert = new Insert(dbSchema.getTableSchema("Interface"), "Interface", intf.getRow()); - operations.add(intfInsert); - - transactConfig(OvsdbConstant.DATABASENAME, operations); - return true; - } - - @Override - public void dropTunnel(IpAddress srcIp, IpAddress dstIp) { - String bridgeName = OvsdbConstant.INTEGRATION_BRIDGE; - String portName = getTunnelName(OvsdbConstant.TYPEVXLAN, dstIp); - String bridgeUuid = getBridgeUuid(OvsdbConstant.INTEGRATION_BRIDGE); - if (bridgeUuid == null) { - log.warn("Could not find bridge {} in {}", bridgeName, - nodeId.getIpAddress()); - return; - } - - String portUUID = getPortUuid(portName, bridgeUuid); - if (portUUID != null) { - log.info("Delete tunnel"); - deleteConfig(OvsdbConstant.PORT, "_uuid", portUUID, - OvsdbConstant.BRIDGE, "ports"); - } - - return; - } - - /** - * Delete transact config. - * - * @param childTableName child table name - * @param childColumnName child column name - * @param childUuid child row uuid - * @param parentTableName parent table name - * @param parentColumnName parent column - */ - private void deleteConfig(String childTableName, String childColumnName, - String childUuid, String parentTableName, - String parentColumnName) { - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - TableSchema childTableSchema = dbSchema.getTableSchema(childTableName); - - ArrayList operations = Lists.newArrayList(); - if (parentTableName != null && parentColumnName != null) { - TableSchema parentTableSchema = dbSchema - .getTableSchema(parentTableName); - ColumnSchema parentColumnSchema = parentTableSchema - .getColumnSchema(parentColumnName); - List mutations = Lists.newArrayList(); - Mutation mutation = MutationUtil.delete(parentColumnSchema.name(), - UUID.uuid(childUuid)); - mutations.add(mutation); - List conditions = Lists.newArrayList(); - Condition condition = ConditionUtil.includes(parentColumnName, - UUID.uuid(childUuid)); - conditions.add(condition); - Mutate op = new Mutate(parentTableSchema, conditions, mutations); - operations.add(op); - } - - List conditions = Lists.newArrayList(); - Condition condition = ConditionUtil.equals(childColumnName, UUID.uuid(childUuid)); - conditions.add(condition); - Delete del = new Delete(childTableSchema, conditions); - operations.add(del); - transactConfig(OvsdbConstant.DATABASENAME, operations); - - return; - } - - /** - * Update transact config. - * - * @param tableName table name - * @param columnName column name - * @param uuid uuid - * @param row the config data - */ - private void updateConfig(String tableName, String columnName, String uuid, - Row row) { - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - TableSchema tableSchema = dbSchema.getTableSchema(tableName); - - List conditions = Lists.newArrayList(); - Condition condition = ConditionUtil.equals(columnName, UUID.uuid(uuid)); - conditions.add(condition); - - Update update = new Update(tableSchema, row, conditions); - - ArrayList operations = Lists.newArrayList(); - operations.add(update); - - transactConfig(OvsdbConstant.DATABASENAME, operations); - } - - /** - * Insert transact config. - * - * @param childTableName child table name - * @param childColumnName child column name - * @param parentTableName parent table name - * @param parentColumnName parent column - * @param parentUuid parent uuid - * @param row the config data - * @return uuid, empty if no uuid is find - */ - private String insertConfig(String childTableName, String childColumnName, - String parentTableName, String parentColumnName, - String parentUuid, Row row) { - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - TableSchema tableSchema = dbSchema.getTableSchema(childTableName); - - String namedUuid = childTableName; - Insert insert = new Insert(tableSchema, namedUuid, row); - - ArrayList operations = Lists.newArrayList(); - operations.add(insert); - - if (parentTableName != null && parentColumnName != null) { - TableSchema parentTableSchema = dbSchema - .getTableSchema(parentTableName); - ColumnSchema parentColumnSchema = parentTableSchema - .getColumnSchema(parentColumnName); - - List mutations = Lists.newArrayList(); - Mutation mutation = MutationUtil.insert(parentColumnSchema.name(), - UUID.uuid(namedUuid)); - mutations.add(mutation); - - List conditions = Lists.newArrayList(); - Condition condition = ConditionUtil.equals("_uuid", - UUID.uuid(parentUuid)); - conditions.add(condition); - - Mutate op = new Mutate(parentTableSchema, conditions, mutations); - operations.add(op); - } - if (childTableName.equalsIgnoreCase(OvsdbConstant.PORT)) { - log.info("Handle port insert"); - Insert intfInsert = handlePortInsertTable(OvsdbConstant.INTERFACE, - row); - - if (intfInsert != null) { - operations.add(intfInsert); - } - - Insert ins = (Insert) operations.get(0); - ins.getRow().put("interfaces", - UUID.uuid(OvsdbConstant.INTERFACE)); - } - - List results; - try { - results = transactConfig(OvsdbConstant.DATABASENAME, operations) - .get(); - - return results.get(0).getUuid().value(); - } catch (InterruptedException e) { - log.warn("Interrupted while waiting to get result"); - Thread.currentThread().interrupt(); - } catch (ExecutionException e) { - log.error("Exception thrown while to get result"); - } - - return null; - } - - /** - * Handles port insert. - * - * @param tableName ovsdb table interface - * @param portRow row of port - * @return insert, empty if null - */ - private Insert handlePortInsertTable(String tableName, Row portRow) { - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - - TableSchema portTableSchema = dbSchema - .getTableSchema(OvsdbConstant.PORT); - ColumnSchema portColumnSchema = portTableSchema.getColumnSchema("name"); - - String portName = (String) portRow.getColumn(portColumnSchema.name()).data(); - - Interface inf = (Interface) TableGenerator - .createTable(dbSchema, OvsdbTable.INTERFACE); - - inf.setName(portName); - - TableSchema intfTableSchema = dbSchema - .getTableSchema(OvsdbConstant.INTERFACE); - Insert insert = new Insert(intfTableSchema, OvsdbConstant.INTERFACE, - inf.getRow()); - return insert; - } - - /** - * Gets tunnel name. - * - * @param tunnelType - * @param dstIp the remote ip address - * @return tunnel name - */ - private String getTunnelName(String tunnelType, IpAddress dstIp) { - return tunnelType + "-" + dstIp.toString(); - } - - @Override - public ListenableFuture getOvsdbSchema(String dbName) { - if (dbName == null) { - return null; - } - DatabaseSchema databaseSchema = schema.get(dbName); - if (databaseSchema == null) { - List dbNames = new ArrayList(); - dbNames.add(dbName); - Function rowFunction = new Function() { - @Override - public DatabaseSchema apply(JsonNode input) { - log.info("Get ovsdb database schema {}", dbName); - DatabaseSchema dbSchema = FromJsonUtil - .jsonNodeToDbSchema(dbName, input); - if (dbSchema == null) { - log.debug("Get ovsdb database schema error"); - return null; - } - schema.put(dbName, dbSchema); - - return dbSchema; - } - }; - - ListenableFuture input = getSchema(dbNames); - if (input != null) { - return Futures.transform(input, rowFunction); - } - return null; - } else { - return Futures.immediateFuture(databaseSchema); - } - } - - @Override - public ListenableFuture monitorTables(String dbName, String id) { - if (dbName == null) { - return null; - } - DatabaseSchema dbSchema = schema.get(dbName); - if (dbSchema != null) { - Function rowFunction = new Function() { - @Override - public TableUpdates apply(JsonNode input) { - log.info("Get table updates"); - TableUpdates updates = FromJsonUtil - .jsonNodeToTableUpdates(input, dbSchema); - if (updates == null) { - log.debug("Get table updates error"); - return null; - } - return updates; - } - }; - return Futures.transform(monitor(dbSchema, id), rowFunction); - } - return null; - } - - @Override - public ListenableFuture> transactConfig(String dbName, - List operations) { - if (dbName == null) { - return null; - } - DatabaseSchema dbSchema = schema.get(dbName); - if (dbSchema != null) { - Function, List> rowFunction = (input -> { - log.info("Get ovsdb operation result"); - List result = FromJsonUtil - .jsonNodeToOperationResult(input, operations); - - if (result == null) { - log.debug("The operation result is null"); - return null; - } - return result; - }); - return Futures.transform(transact(dbSchema, operations), - rowFunction); - } - return null; - } - - @Override - public ListenableFuture getSchema(List dbnames) { - String id = java.util.UUID.randomUUID().toString(); - String getSchemaString = JsonRpcWriterUtil.getSchemaStr(id, dbnames); - - SettableFuture sf = SettableFuture.create(); - requestResult.put(id, sf); - requestMethod.put(id, "getSchema"); - - channel.writeAndFlush(getSchemaString); - return sf; - - } - - @Override - public ListenableFuture> echo() { - String id = java.util.UUID.randomUUID().toString(); - String echoString = JsonRpcWriterUtil.echoStr(id); - - SettableFuture> sf = SettableFuture.create(); - requestResult.put(id, sf); - requestMethod.put(id, "echo"); - - channel.writeAndFlush(echoString); - return sf; - - } - - @Override - public ListenableFuture monitor(DatabaseSchema dbSchema, - String monitorId) { - String id = java.util.UUID.randomUUID().toString(); - String monitorString = JsonRpcWriterUtil.monitorStr(id, monitorId, - dbSchema); - - SettableFuture sf = SettableFuture.create(); - requestResult.put(id, sf); - requestMethod.put(id, "monitor"); - - channel.writeAndFlush(monitorString); - return sf; - - } - - @Override - public ListenableFuture> listDbs() { - String id = java.util.UUID.randomUUID().toString(); - String listDbsString = JsonRpcWriterUtil.listDbsStr(id); - - SettableFuture> sf = SettableFuture.create(); - requestResult.put(id, sf); - requestMethod.put(id, "listDbs"); - - channel.writeAndFlush(listDbsString); - return sf; - - } - - @Override - public ListenableFuture> transact(DatabaseSchema dbSchema, - List operations) { - String id = java.util.UUID.randomUUID().toString(); - String transactString = JsonRpcWriterUtil.transactStr(id, dbSchema, - operations); - - SettableFuture> sf = SettableFuture.create(); - requestResult.put(id, sf); - requestMethod.put(id, "transact"); - - channel.writeAndFlush(transactString); - return sf; - - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - @Override - public void processResult(JsonNode response) { - log.debug("Handle result"); - String requestId = response.get("id").asText(); - SettableFuture sf = requestResult.get(requestId); - if (sf == null) { - log.debug("No such future to process"); - return; - } - String methodName = requestMethod.get(requestId); - - Object result; - result = FromJsonUtil.jsonResultParser(response, methodName); - - sf.set(result); - return; - } - - @Override - public void processRequest(JsonNode requestJson) { - log.debug("Handle request"); - if (requestJson.get("method").asText().equalsIgnoreCase("echo")) { - log.debug("handle echo request"); - - String replyString = FromJsonUtil.getEchoRequestStr(requestJson); - channel.writeAndFlush(replyString); - - return; - } else { - FromJsonUtil - .jsonCallbackRequestParser(requestJson, monitorCallBack); - return; - } - } - - @Override - public void setCallback(Callback monitorCallback) { - this.monitorCallBack = monitorCallback; - } - - @Override - public Set getTunnels() { - return ovsdbTunnels; - } - - @Override - public Set getBridges() { - Set ovsdbBridges = new HashSet(); - OvsdbTableStore tableStore = getTableStore(OvsdbConstant.DATABASENAME); - if (tableStore == null) { - return null; - } - OvsdbRowStore rowStore = tableStore.getRows(OvsdbConstant.BRIDGE); - if (rowStore == null) { - return null; - } - ConcurrentMap rows = rowStore.getRowStore(); - for (String uuid : rows.keySet()) { - Row row = getRow(OvsdbConstant.DATABASENAME, OvsdbConstant.BRIDGE, - uuid); - OvsdbBridge ovsdbBridge = getOvsdbBridge(row); - if (ovsdbBridge != null) { - ovsdbBridges.add(ovsdbBridge); - } - } - return ovsdbBridges; - } - - @Override - public Set getControllers(DeviceId openflowDeviceId) { - UUID bridgeUuid = getBridgeUUID(openflowDeviceId); - if (bridgeUuid == null) { - log.warn("bad bridge Uuid"); - return null; - } - List controllers = getControllers(bridgeUuid); - if (controllers == null) { - log.warn("bad list of controllers"); - return null; - } - return controllers.stream(). - map(controller -> new ControllerInfo( - (String) controller.getTargetColumn() - .data())).collect(Collectors.toSet()); - } - - private List getControllers(UUID bridgeUuid) { - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - if (dbSchema == null) { - return null; - } - OvsdbRowStore rowStore = getRowStore(OvsdbConstant.DATABASENAME, - OvsdbConstant.BRIDGE); - if (rowStore == null) { - log.debug("There is no bridge table"); - return null; - } - - Row bridgeRow = rowStore.getRow(bridgeUuid.value()); - Bridge bridge = (Bridge) TableGenerator. - getTable(dbSchema, bridgeRow, OvsdbTable.BRIDGE); - - //FIXME remove log - log.warn("type of controller column", bridge.getControllerColumn() - .data().getClass()); - Set controllerUuids = (Set) ((OvsdbSet) bridge - .getControllerColumn().data()).set(); -// Set controllerUuidStrings = (Set) bridge.getControllerColumn().data(); - - OvsdbRowStore controllerRowStore = getRowStore(OvsdbConstant.DATABASENAME, - OvsdbConstant.CONTROLLER); - if (controllerRowStore == null) { - log.debug("There is no controller table"); - return null; - } - - List ovsdbControllers = new ArrayList<>(); - ConcurrentMap controllerTableRows = controllerRowStore.getRowStore(); - controllerTableRows.forEach((key, row) -> { - if (!controllerUuids.contains(UUID.uuid(key))) { - return; - } - Controller controller = (Controller) TableGenerator - .getTable(dbSchema, row, OvsdbTable.CONTROLLER); - ovsdbControllers.add(controller); - }); - return ovsdbControllers; - } - - - private UUID getBridgeUUID(DeviceId openflowDeviceId) { - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); - if (dbSchema == null) { - return null; - } - OvsdbRowStore rowStore = getRowStore(OvsdbConstant.DATABASENAME, - OvsdbConstant.BRIDGE); - if (rowStore == null) { - log.debug("There is no bridge table"); - return null; - } - - ConcurrentMap bridgeTableRows = rowStore.getRowStore(); - final AtomicReference uuid = new AtomicReference<>(); - for (Map.Entry entry : bridgeTableRows.entrySet()) { - Bridge b = (Bridge) TableGenerator.getTable(dbSchema, - entry.getValue(), - OvsdbTable.BRIDGE); - if (matchesDpid(b, openflowDeviceId)) { - uuid.set(UUID.uuid(entry.getKey())); - break; - } - } - if (uuid.get() == null) { - log.debug("There is no bridge for {}", openflowDeviceId); - } - return uuid.get(); - - } - - private static boolean matchesDpid(Bridge b, DeviceId deviceId) { - String ofDpid = deviceId.toString().replace("of:", ""); - Set ofDeviceIds = ((OvsdbSet) b.getDatapathIdColumn().data()).set(); - //TODO Set - return ofDeviceIds.contains(ofDpid); - } - - @Override - public Set getPorts() { - Set ovsdbPorts = new HashSet(); - OvsdbTableStore tableStore = getTableStore(OvsdbConstant.DATABASENAME); - if (tableStore == null) { - return null; - } - OvsdbRowStore rowStore = tableStore.getRows(OvsdbConstant.INTERFACE); - if (rowStore == null) { - return null; - } - ConcurrentMap rows = rowStore.getRowStore(); - for (String uuid : rows.keySet()) { - Row row = getRow(OvsdbConstant.DATABASENAME, - OvsdbConstant.INTERFACE, uuid); - OvsdbPort ovsdbPort = getOvsdbPort(row); - if (ovsdbPort != null) { - ovsdbPorts.add(ovsdbPort); - } - } - return ovsdbPorts; - } - - @Override - public DatabaseSchema getDatabaseSchema(String dbName) { - return schema.get(dbName); - } - - //Gets ovsdb port. - private OvsdbPort getOvsdbPort(Row row) { - DatabaseSchema dbSchema = getDatabaseSchema(OvsdbConstant.DATABASENAME); - Interface intf = (Interface) TableGenerator - .getTable(dbSchema, row, OvsdbTable.INTERFACE); - if (intf == null) { - return null; - } - long ofPort = getOfPort(intf); - String portName = intf.getName(); - if ((ofPort < 0) || (portName == null)) { - return null; - } - - OvsdbPort ovsdbPort = new OvsdbPort(new OvsdbPortNumber(ofPort), - new OvsdbPortName(portName)); - return ovsdbPort; - } - - ////Gets ovsdb bridge. - private OvsdbBridge getOvsdbBridge(Row row) { - DatabaseSchema dbSchema = getDatabaseSchema(OvsdbConstant.DATABASENAME); - Bridge bridge = (Bridge) TableGenerator.getTable(dbSchema, row, - OvsdbTable.BRIDGE); - if (bridge == null) { - return null; - } - - OvsdbSet datapathIdSet = (OvsdbSet) bridge.getDatapathIdColumn().data(); - @SuppressWarnings("unchecked") - Set datapathIds = datapathIdSet.set(); - if (datapathIds == null || datapathIds.size() == 0) { - return null; - } - String datapathId = (String) datapathIds.toArray()[0]; - String bridgeName = bridge.getName(); - if ((datapathId == null) || (bridgeName == null)) { - return null; - } - - OvsdbBridge ovsdbBridge = new OvsdbBridge(new OvsdbBridgeName(bridgeName), - new OvsdbDatapathId(datapathId)); - return ovsdbBridge; - } - - //Gets ofPort in the interface. - private long getOfPort(Interface intf) { - OvsdbSet ofPortSet = (OvsdbSet) intf.getOpenFlowPortColumn().data(); - @SuppressWarnings("unchecked") - Set ofPorts = ofPortSet.set(); - while (ofPorts == null || ofPorts.size() <= 0) { - log.debug("The ofport is null in {}", intf.getName()); - return -1; - } - // return (long) ofPorts.toArray()[0]; - Iterator it = ofPorts.iterator(); - return Long.parseLong(it.next().toString()); - } - - @Override - public Set getLocalPorts(Iterable ifaceids) { - Set ovsdbPorts = new HashSet(); - OvsdbTableStore tableStore = getTableStore(OvsdbConstant.DATABASENAME); - if (tableStore == null) { - return null; - } - OvsdbRowStore rowStore = tableStore.getRows(OvsdbConstant.INTERFACE); - if (rowStore == null) { - return null; - } - ConcurrentMap rows = rowStore.getRowStore(); - for (String uuid : rows.keySet()) { - Row row = getRow(OvsdbConstant.DATABASENAME, - OvsdbConstant.INTERFACE, uuid); - DatabaseSchema dbSchema = getDatabaseSchema(OvsdbConstant.DATABASENAME); - Interface intf = (Interface) TableGenerator - .getTable(dbSchema, row, OvsdbTable.INTERFACE); - if (intf == null || getIfaceid(intf) == null) { - continue; - } - String portName = intf.getName(); - Set ifaceidSet = Sets.newHashSet(ifaceids); - if (portName.startsWith("vxlan") - || !ifaceidSet.contains(getIfaceid(intf))) { - continue; - } - long ofPort = getOfPort(intf); - if ((ofPort < 0) || (portName == null)) { - continue; - } - - OvsdbPort ovsdbPort = new OvsdbPort(new OvsdbPortNumber(ofPort), - new OvsdbPortName(portName)); - if (ovsdbPort != null) { - ovsdbPorts.add(ovsdbPort); - } - } - return ovsdbPorts; - } - - private String getIfaceid(Interface intf) { - OvsdbMap ovsdbMap = (OvsdbMap) intf.getExternalIdsColumn().data(); - @SuppressWarnings("unchecked") - Map externalIds = ovsdbMap.map(); - if (externalIds.isEmpty()) { - log.warn("The external_ids is null"); - return null; - } - String ifaceid = externalIds - .get(OvsdbConstant.EXTERNAL_ID_INTERFACE_ID); - if (ifaceid == null) { - log.warn("The ifaceid is null"); - return null; - } - return ifaceid; - } - - @Override - public void disconnect() { - channel.disconnect(); - this.agent.removeConnectedNode(nodeId); - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/OvsdbAgent.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/OvsdbAgent.java deleted file mode 100644 index 70ffae8b..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/OvsdbAgent.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.ovsdb.controller.driver; - -import org.onosproject.ovsdb.controller.OvsdbNodeId; -import org.onosproject.ovsdb.controller.OvsdbClientService; - -/** - * Responsible for keeping track of the current set of nodes connected to the - * system. - */ -public interface OvsdbAgent { - /** - * Add a node that has just connected to the system. - * - * @param nodeId the nodeId to add - * @param ovsdbClient the actual node object. - */ - void addConnectedNode(OvsdbNodeId nodeId, OvsdbClientService ovsdbClient); - - /** - * Clear all state in controller node maps for a node that has disconnected - * from the local controller. Also release control for that node from the - * global repository. Notify node listeners. - * - * @param nodeId the node id to be removed. - */ - void removeConnectedNode(OvsdbNodeId nodeId); -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/OvsdbProviderService.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/OvsdbProviderService.java deleted file mode 100644 index 48f58d02..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/OvsdbProviderService.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.ovsdb.controller.driver; - -import io.netty.channel.Channel; - -import org.onosproject.ovsdb.rfc.jsonrpc.Callback; - -import com.fasterxml.jackson.databind.JsonNode; - -/** - * Represents the driver side of an ovsdb node. This interface should never be - * exposed to consumers. - */ -public interface OvsdbProviderService { - /** - * Sets the ovsdb agent to be used. This method can only be called once. - * - * @param agent the agent to set. - */ - void setAgent(OvsdbAgent agent); - - /** - * Sets the associated Netty channel for this node. - * - * @param channel the Netty channel - */ - void setChannel(Channel channel); - - /** - * Announces to the ovsdb agent that this node has added. - */ - void nodeAdded(); - - /** - * Announces to the ovsdb agent that this node has removed. - */ - void nodeRemoved(); - - /** - * Sets whether the node is connected. - * - * @param connected whether the node is connected - */ - void setConnection(boolean connected); - - /** - * Processes result from ovsdb. - * - * @param response JsonNode response from ovsdb - */ - void processResult(JsonNode response); - - /** - * processes request from ovsdb. - * - * @param request JsonNode request from ovsdb - */ - void processRequest(JsonNode request); - - /** - * Sets call back. - * - * @param monitorCallback the callback to set - */ - void setCallback(Callback monitorCallback); - -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/package-info.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/package-info.java deleted file mode 100644 index b14afdfb..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/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. - */ - -/** - * Ovsdb controller node driver API. - */ -package org.onosproject.ovsdb.controller.driver; \ No newline at end of file diff --git a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/package-info.java b/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/package-info.java deleted file mode 100644 index d6fb434c..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/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. - */ - -/** - * Ovsdb controller API. - */ -package org.onosproject.ovsdb.controller; \ No newline at end of file diff --git a/framework/src/onos/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java b/framework/src/onos/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java deleted file mode 100644 index 5d80a7bf..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.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.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; -import org.onosproject.ovsdb.controller.OvsdbBridge; -import org.onosproject.ovsdb.controller.OvsdbClientService; -import org.onosproject.ovsdb.controller.OvsdbNodeId; -import org.onosproject.ovsdb.controller.OvsdbPort; -import org.onosproject.ovsdb.controller.OvsdbTunnel; -import org.onosproject.ovsdb.rfc.message.OperationResult; -import org.onosproject.ovsdb.rfc.message.TableUpdates; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.operations.Operation; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * Test Adapter for OvsdbClientService. - */ -public class OvsdbClientServiceAdapter implements OvsdbClientService { - - @Override - public OvsdbNodeId nodeId() { - return null; - } - - @Override - public void createTunnel(IpAddress srcIp, IpAddress dstIp) { - - } - - @Override - public boolean createTunnel(String bridgeName, String portName, String tunnelType, Map options) { - return true; - } - - @Override - public void dropTunnel(IpAddress srcIp, IpAddress dstIp) { - - } - - @Override - public Set getTunnels() { - return null; - } - - @Override - public void createBridge(String bridgeName) { - - } - - @Override - public boolean createBridge(String bridgeName, String dpid, List controllers) { - return true; - } - - @Override - public void dropBridge(String bridgeName) { - - } - - @Override - public Set getBridges() { - return null; - } - - @Override - public Set getControllers(DeviceId openflowDeviceId) { - return null; - } - - @Override - public void setControllersWithUUID(UUID bridgeUuid, List controllers) { - - } - - @Override - public void setControllersWithDeviceId(DeviceId deviceId, List controllers) { - - } - - @Override - public void createPort(String bridgeName, String portName) { - - } - - @Override - public void dropPort(String bridgeName, String portName) { - - } - - @Override - public Set getPorts() { - return null; - } - - @Override - public boolean isConnected() { - return false; - } - - @Override - public String getBridgeUuid(String bridgeName) { - return null; - } - - @Override - public String getPortUuid(String portName, String bridgeUuid) { - return null; - } - - @Override - public String getInterfaceUuid(String portUuid, String portName) { - return null; - } - - @Override - public String getControllerUuid(String controllerName, String controllerTarget) { - return null; - } - - @Override - public String getOvsUuid(String dbName) { - return null; - } - - @Override - public ListenableFuture getOvsdbSchema(String dbName) { - return null; - } - - @Override - public ListenableFuture monitorTables(String dbName, String id) { - return null; - } - - @Override - public ListenableFuture> transactConfig(String dbName, List operations) { - return null; - } - - @Override - public DatabaseSchema getDatabaseSchema(String dbName) { - return null; - } - - @Override - public Row getRow(String dbName, String tableName, String uuid) { - return null; - } - - @Override - public void removeRow(String dbName, String tableName, String uuid) { - - } - - @Override - public void updateOvsdbStore(String dbName, String tableName, String uuid, Row row) { - - } - - @Override - public Set getLocalPorts(Iterable ifaceids) { - return null; - } - - @Override - public void disconnect() { - - } - - @Override - public ListenableFuture getSchema(List dbnames) { - return null; - } - - @Override - public ListenableFuture> echo() { - return null; - } - - @Override - public ListenableFuture monitor(DatabaseSchema dbSchema, String monitorId) { - return null; - } - - @Override - public ListenableFuture> listDbs() { - return null; - } - - @Override - public ListenableFuture> transact(DatabaseSchema dbSchema, List operations) { - return null; - } - - @Override - public void createBridge(String bridgeName, String dpid, String exPortName) { - - } -} diff --git a/framework/src/onos/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbControllerAdapter.java b/framework/src/onos/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbControllerAdapter.java deleted file mode 100644 index 902113aa..00000000 --- a/framework/src/onos/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbControllerAdapter.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.ovsdb.controller.driver; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.TpPort; -import org.onosproject.ovsdb.controller.OvsdbClientService; -import org.onosproject.ovsdb.controller.OvsdbController; -import org.onosproject.ovsdb.controller.OvsdbEventListener; -import org.onosproject.ovsdb.controller.OvsdbNodeId; -import org.onosproject.ovsdb.controller.OvsdbNodeListener; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; - -/** - * Test Adapter for OvsdbController. - */ -public class OvsdbControllerAdapter implements OvsdbController { - protected ConcurrentHashMap ovsdbClients = - new ConcurrentHashMap(); - - @Override - public void addNodeListener(OvsdbNodeListener listener) { - - } - - @Override - public void removeNodeListener(OvsdbNodeListener listener) { - - } - - @Override - public void addOvsdbEventListener(OvsdbEventListener listener) { - - } - - @Override - public void removeOvsdbEventListener(OvsdbEventListener listener) { - - } - - @Override - public List getNodeIds() { - long port = 6653; - return new ArrayList(Arrays.asList( - new OvsdbNodeId(IpAddress.valueOf("127.0.0.1"), port))); - } - - @Override - public OvsdbClientService getOvsdbClient(OvsdbNodeId nodeId) { - return ovsdbClients.get(nodeId); - } - - @Override - public void connect(IpAddress ip, TpPort port) { - - } -} diff --git a/framework/src/onos/protocols/ovsdb/ctl/pom.xml b/framework/src/onos/protocols/ovsdb/ctl/pom.xml deleted file mode 100644 index c9cfb9dc..00000000 --- a/framework/src/onos/protocols/ovsdb/ctl/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - 4.0.0 - - org.onosproject - onos-ovsdb - 1.4.0-rc1 - ../pom.xml - - - onos-ovsdb-ctl - bundle - - - - junit - junit - test - - - org.apache.felix - org.apache.felix.scr.annotations - - - org.osgi - org.osgi.compendium - - - org.onosproject - onos-ovsdb-api - ${project.version} - - - org.onosproject - onos-ovsdb-rfc - ${project.version} - - - - - - - org.apache.felix - maven-scr-plugin - - - - diff --git a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/ChannelConnectionListener.java b/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/ChannelConnectionListener.java deleted file mode 100644 index f17c25f7..00000000 --- a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/ChannelConnectionListener.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.ovsdb.controller.impl; - -import io.netty.channel.ChannelFuture; -import io.netty.channel.ChannelFutureListener; - -import org.onosproject.ovsdb.controller.driver.OvsdbProviderService; - -/** - * The listener class. Handles when the node disconnect. - */ -public class ChannelConnectionListener implements ChannelFutureListener { - - private final OvsdbProviderService providerService; - - /** - * Constructor from a OvsdbProviderService providerService. - * - * @param providerService the providerService to use - */ - public ChannelConnectionListener(OvsdbProviderService providerService) { - this.providerService = providerService; - } - - @Override - public void operationComplete(ChannelFuture arg0) { - providerService.nodeRemoved(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java b/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.java deleted file mode 100644 index fcbbff8e..00000000 --- a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/Controller.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.ovsdb.controller.impl; - -import io.netty.bootstrap.Bootstrap; -import io.netty.bootstrap.ServerBootstrap; -import io.netty.buffer.PooledByteBufAllocator; -import io.netty.channel.Channel; -import io.netty.channel.ChannelDuplexHandler; -import io.netty.channel.ChannelFuture; -import io.netty.channel.ChannelFutureListener; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInitializer; -import io.netty.channel.ChannelOption; -import io.netty.channel.ChannelPipeline; -import io.netty.channel.EventLoop; -import io.netty.channel.EventLoopGroup; -import io.netty.channel.ServerChannel; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.SocketChannel; -import io.netty.channel.socket.nio.NioServerSocketChannel; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.string.StringEncoder; -import io.netty.handler.timeout.IdleState; -import io.netty.handler.timeout.IdleStateEvent; -import io.netty.handler.timeout.IdleStateHandler; -import io.netty.util.CharsetUtil; - -import java.net.InetSocketAddress; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.TpPort; -import org.onosproject.ovsdb.controller.OvsdbConstant; -import org.onosproject.ovsdb.controller.OvsdbNodeId; -import org.onosproject.ovsdb.controller.driver.DefaultOvsdbClient; -import org.onosproject.ovsdb.controller.driver.OvsdbAgent; -import org.onosproject.ovsdb.controller.driver.OvsdbProviderService; -import org.onosproject.ovsdb.rfc.jsonrpc.Callback; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The main controller class. Handles all setup and network listeners - - * distributed OVSDBClient. - */ -public class Controller { - protected static final Logger log = LoggerFactory - .getLogger(Controller.class); - - private int ovsdbPort = OvsdbConstant.OVSDBPORT; - - private OvsdbAgent agent; - private Callback monitorCallback; - - private final ExecutorService executorService = Executors - .newFixedThreadPool(10); - - private EventLoopGroup bossGroup; - private EventLoopGroup workerGroup; - private Class serverChannelClass; - - private static final int MAX_RETRY = 5; - private static final int IDLE_TIMEOUT_SEC = 10; - - /** - * Initialization. - */ - private void initEventLoopGroup() { - bossGroup = new NioEventLoopGroup(); - workerGroup = new NioEventLoopGroup(); - serverChannelClass = NioServerSocketChannel.class; - } - - /** - * Accepts incoming connections. - */ - private void startAcceptingConnections() throws InterruptedException { - ServerBootstrap b = new ServerBootstrap(); - - b.group(bossGroup, workerGroup).channel(serverChannelClass) - .childHandler(new OnosCommunicationChannelInitializer()); - b.option(ChannelOption.SO_BACKLOG, 128); - b.option(ChannelOption.WRITE_BUFFER_HIGH_WATER_MARK, 32 * 1024); - b.option(ChannelOption.WRITE_BUFFER_LOW_WATER_MARK, 8 * 1024); - b.option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT); - b.childOption(ChannelOption.SO_KEEPALIVE, true); - b.bind(ovsdbPort).sync(); - } - - /** - * Tells controller that we're ready to accept OVSDB node loop. - * @throws InterruptedException if thread is interrupted - */ - public void run() throws InterruptedException { - initEventLoopGroup(); - startAcceptingConnections(); - } - - /** - * Adds channel pipeline to handle a new connected node. - */ - private class OnosCommunicationChannelInitializer - extends ChannelInitializer { - protected void initChannel(SocketChannel channel) throws Exception { - log.info("New channel created"); - channel.pipeline().addLast(new StringEncoder(CharsetUtil.UTF_8)); - channel.pipeline().addLast(new MessageDecoder()); - handleNewNodeConnection(channel); - - } - } - - /** - * Handles the new connection of node. - * - * @param channel the channel to use. - */ - private void handleNewNodeConnection(final Channel channel) { - executorService.execute(new Runnable() { - @Override - public void run() { - log.info("Handle new node connection"); - - IpAddress ipAddress = IpAddress - .valueOf(((InetSocketAddress) channel.remoteAddress()) - .getAddress().getHostAddress()); - long port = ((InetSocketAddress) channel.remoteAddress()) - .getPort(); - - log.info("Get connection from ip address {} : {}", - ipAddress.toString(), port); - - OvsdbNodeId nodeId = new OvsdbNodeId(ipAddress, port); - OvsdbProviderService ovsdbProviderService = getNodeInstance(nodeId, - agent, - monitorCallback, - channel); - ovsdbProviderService.setConnection(true); - OvsdbJsonRpcHandler ovsdbJsonRpcHandler = new OvsdbJsonRpcHandler( - nodeId); - ovsdbJsonRpcHandler - .setOvsdbProviderService(ovsdbProviderService); - channel.pipeline().addLast(ovsdbJsonRpcHandler); - - ovsdbProviderService.nodeAdded(); - ChannelFuture closeFuture = channel.closeFuture(); - closeFuture - .addListener(new ChannelConnectionListener( - ovsdbProviderService)); - } - }); - } - - /** - * Gets an OVSDB client instance. - * - * @param nodeId data OVSDB node id - * @param agent OvsdbAgent - * @param monitorCallback Callback - * @param channel Channel - * @return OvsdbProviderService instance - */ - protected OvsdbProviderService getNodeInstance(OvsdbNodeId nodeId, - OvsdbAgent agent, - Callback monitorCallback, - Channel channel) { - OvsdbProviderService ovsdbProviderService = new DefaultOvsdbClient( - nodeId); - ovsdbProviderService.setAgent(agent); - ovsdbProviderService.setCallback(monitorCallback); - ovsdbProviderService.setChannel(channel); - return ovsdbProviderService; - } - - /** - * Starts controller. - * - * @param agent OvsdbAgent - * @param monitorCallback Callback - */ - public void start(OvsdbAgent agent, Callback monitorCallback) { - this.agent = agent; - this.monitorCallback = monitorCallback; - try { - this.run(); - } catch (InterruptedException e) { - log.warn("Interrupted while waiting to start"); - Thread.currentThread().interrupt(); - } - } - - /** - * Stops controller. - * - */ - public void stop() { - workerGroup.shutdownGracefully(); - bossGroup.shutdownGracefully(); - } - - /** - * Connect to the ovsdb server with given ip address and port number. - * - * @param ip ip address - * @param port port number - */ - public void connect(IpAddress ip, TpPort port) { - ChannelFutureListener listener = new ConnectionListener(this, ip, port); - connectRetry(ip, port, listener); - } - - private void connectRetry(IpAddress ip, TpPort port, ChannelFutureListener listener) { - try { - Bootstrap b = new Bootstrap(); - b.group(workerGroup) - .channel(NioSocketChannel.class) - .option(ChannelOption.TCP_NODELAY, true) - .handler(new ChannelInitializer() { - - @Override - protected void initChannel(SocketChannel channel) throws Exception { - ChannelPipeline p = channel.pipeline(); - p.addLast(new MessageDecoder(), - new StringEncoder(CharsetUtil.UTF_8), - new IdleStateHandler(IDLE_TIMEOUT_SEC, 0, 0), - new ConnectionHandler()); - } - }); - b.remoteAddress(ip.toString(), port.toInt()); - b.connect().addListener(listener); - } catch (Exception e) { - log.warn("Connection to the ovsdb server {}:{} failed", ip.toString(), port.toString()); - } - } - - private class ConnectionListener implements ChannelFutureListener { - private Controller controller; - private IpAddress ip; - private TpPort port; - private AtomicInteger count = new AtomicInteger(); - - public ConnectionListener(Controller controller, - IpAddress ip, - TpPort port) { - this.controller = controller; - this.ip = ip; - this.port = port; - } - - @Override - public void operationComplete(ChannelFuture channelFuture) throws Exception { - if (!channelFuture.isSuccess()) { - channelFuture.channel().close(); - - if (count.incrementAndGet() < MAX_RETRY) { - final EventLoop loop = channelFuture.channel().eventLoop(); - - loop.schedule(() -> { - controller.connectRetry(this.ip, this.port, this); - }, 1L, TimeUnit.SECONDS); - } else { - log.info("Connection to the ovsdb {}:{} failed", - this.ip.toString(), this.port.toString()); - } - } else { - handleNewNodeConnection(channelFuture.channel()); - } - } - } - - private class ConnectionHandler extends ChannelDuplexHandler { - - @Override - public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { - IdleStateEvent e = (IdleStateEvent) evt; - - if (e.state() == IdleState.READER_IDLE) { - ctx.close(); - } - } - } -} diff --git a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/MessageDecoder.java b/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/MessageDecoder.java deleted file mode 100644 index e0e22753..00000000 --- a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/MessageDecoder.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.ovsdb.controller.impl; - -import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.ByteToMessageDecoder; - -import java.util.List; - -import org.onosproject.ovsdb.rfc.jsonrpc.JsonReadContext; -import org.onosproject.ovsdb.rfc.utils.JsonRpcReaderUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Decoder for inbound messages. - */ -public class MessageDecoder extends ByteToMessageDecoder { - - private final Logger log = LoggerFactory.getLogger(MessageDecoder.class); - private final JsonReadContext context = new JsonReadContext(); - - /** - * Default constructor. - */ - public MessageDecoder() { - } - - @Override - protected void decode(ChannelHandlerContext ctx, ByteBuf buf, - List out) throws Exception { - log.debug("Message decoder"); - JsonRpcReaderUtil.readToJsonNode(buf, out, context); - } - - @Override - public void exceptionCaught(ChannelHandlerContext context, Throwable cause) { - log.error("Exception inside channel handling pipeline.", cause); - context.close(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java b/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java deleted file mode 100644 index c2cbbf8b..00000000 --- a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java +++ /dev/null @@ -1,418 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.controller.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.collect.ImmutableList; -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.onlab.packet.MacAddress; -import org.onlab.packet.TpPort; -import org.onosproject.ovsdb.controller.DefaultEventSubject; -import org.onosproject.ovsdb.controller.EventSubject; -import org.onosproject.ovsdb.controller.OvsdbClientService; -import org.onosproject.ovsdb.controller.OvsdbConstant; -import org.onosproject.ovsdb.controller.OvsdbController; -import org.onosproject.ovsdb.controller.OvsdbDatapathId; -import org.onosproject.ovsdb.controller.OvsdbEvent; -import org.onosproject.ovsdb.controller.OvsdbEvent.Type; -import org.onosproject.ovsdb.controller.OvsdbEventListener; -import org.onosproject.ovsdb.controller.OvsdbIfaceId; -import org.onosproject.ovsdb.controller.OvsdbNodeId; -import org.onosproject.ovsdb.controller.OvsdbNodeListener; -import org.onosproject.ovsdb.controller.OvsdbPortName; -import org.onosproject.ovsdb.controller.OvsdbPortNumber; -import org.onosproject.ovsdb.controller.OvsdbPortType; -import org.onosproject.ovsdb.controller.driver.OvsdbAgent; -import org.onosproject.ovsdb.rfc.jsonrpc.Callback; -import org.onosproject.ovsdb.rfc.message.TableUpdate; -import org.onosproject.ovsdb.rfc.message.TableUpdates; -import org.onosproject.ovsdb.rfc.message.UpdateNotification; -import org.onosproject.ovsdb.rfc.notation.OvsdbMap; -import org.onosproject.ovsdb.rfc.notation.OvsdbSet; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.table.Bridge; -import org.onosproject.ovsdb.rfc.table.Interface; -import org.onosproject.ovsdb.rfc.table.OvsdbTable; -import org.onosproject.ovsdb.rfc.table.TableGenerator; -import org.onosproject.ovsdb.rfc.utils.FromJsonUtil; -import org.osgi.service.component.ComponentContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.math.BigInteger; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArraySet; -import java.util.concurrent.ExecutionException; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * The implementation of OvsdbController. - */ -@Component(immediate = true) -@Service -public class OvsdbControllerImpl implements OvsdbController { - - public static final Logger log = LoggerFactory - .getLogger(OvsdbControllerImpl.class); - - protected ConcurrentHashMap ovsdbClients = - new ConcurrentHashMap(); - - protected OvsdbAgent agent = new InternalOvsdbNodeAgent(); - protected InternalMonitorCallBack updateCallback = new InternalMonitorCallBack(); - - protected Set ovsdbNodeListener = new CopyOnWriteArraySet<>(); - protected Set ovsdbEventListener = new CopyOnWriteArraySet<>(); - - protected ConcurrentHashMap requestNotification = - new ConcurrentHashMap(); - - protected ConcurrentHashMap requestDbName = new ConcurrentHashMap(); - - private final Controller controller = new Controller(); - - @Activate - public void activate(ComponentContext context) { - controller.start(agent, updateCallback); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - controller.stop(); - log.info("Stoped"); - } - - @Override - public void addNodeListener(OvsdbNodeListener listener) { - if (!ovsdbNodeListener.contains(listener)) { - this.ovsdbNodeListener.add(listener); - } - } - - @Override - public void removeNodeListener(OvsdbNodeListener listener) { - this.ovsdbNodeListener.remove(listener); - } - - @Override - public void addOvsdbEventListener(OvsdbEventListener listener) { - if (!ovsdbEventListener.contains(listener)) { - this.ovsdbEventListener.add(listener); - } - } - - @Override - public void removeOvsdbEventListener(OvsdbEventListener listener) { - this.ovsdbEventListener.remove(listener); - } - - @Override - public List getNodeIds() { - return ImmutableList.copyOf(ovsdbClients.keySet()); - } - - @Override - public OvsdbClientService getOvsdbClient(OvsdbNodeId nodeId) { - return ovsdbClients.get(nodeId); - } - - @Override - public void connect(IpAddress ip, TpPort port) { - controller.connect(ip, port); - } - - /** - * Implementation of an Ovsdb Agent which is responsible for keeping track - * of connected node and the state in which they are. - */ - private class InternalOvsdbNodeAgent implements OvsdbAgent { - @Override - public void addConnectedNode(OvsdbNodeId nodeId, - OvsdbClientService ovsdbClient) { - - if (ovsdbClients.get(nodeId) != null) { - return; - } else { - ovsdbClients.put(nodeId, ovsdbClient); - - try { - List dbNames = ovsdbClient.listDbs().get(); - for (String dbName : dbNames) { - DatabaseSchema dbSchema; - dbSchema = ovsdbClient.getOvsdbSchema(dbName).get(); - - log.debug("Begin to monitor tables"); - String id = java.util.UUID.randomUUID().toString(); - TableUpdates updates = ovsdbClient - .monitorTables(dbName, id).get(); - - requestDbName.put(id, dbName); - requestNotification.put(id, ovsdbClient); - - if (updates != null) { - processTableUpdates(ovsdbClient, updates, - dbSchema.name()); - } - } - } catch (InterruptedException e) { - log.warn("Interrupted while waiting to get message from ovsdb"); - Thread.currentThread().interrupt(); - } catch (ExecutionException e) { - log.error("Exception thrown while to get message from ovsdb"); - } - - log.debug("Add node to north"); - for (OvsdbNodeListener l : ovsdbNodeListener) { - l.nodeAdded(nodeId); - } - return; - } - } - - @Override - public void removeConnectedNode(OvsdbNodeId nodeId) { - ovsdbClients.remove(nodeId); - log.debug("Node connection is removed"); - for (OvsdbNodeListener l : ovsdbNodeListener) { - l.nodeRemoved(nodeId); - } - } - } - - /** - * Processes table updates. - * - * @param clientService OvsdbClientService instance - * @param updates TableUpdates instance - * @param dbName ovsdb database name - */ - private void processTableUpdates(OvsdbClientService clientService, - TableUpdates updates, String dbName) - throws InterruptedException { - checkNotNull(clientService, "OvsdbClientService is not null"); - - DatabaseSchema dbSchema = clientService.getDatabaseSchema(dbName); - - for (String tableName : updates.result().keySet()) { - TableUpdate update = updates.result().get(tableName); - for (UUID uuid : (Set) update.rows().keySet()) { - log.debug("Begin to process table updates uuid: {}, databaseName: {}, tableName: {}", - uuid.value(), dbName, tableName); - - Row newRow = update.getNew(uuid); - if (newRow != null) { - clientService.updateOvsdbStore(dbName, tableName, - uuid.value(), newRow); - - if (OvsdbConstant.INTERFACE.equals(tableName)) { - dispatchInterfaceEvent(clientService, - newRow, - OvsdbEvent.Type.PORT_ADDED, - dbSchema); - } - } else if (update.getOld(uuid) != null) { - if (OvsdbConstant.INTERFACE.equals(tableName)) { - Row row = clientService.getRow(OvsdbConstant.DATABASENAME, tableName, uuid.value()); - dispatchInterfaceEvent(clientService, - row, - OvsdbEvent.Type.PORT_REMOVED, - dbSchema); - } - clientService.removeRow(dbName, tableName, uuid.value()); - } - } - } - } - - /** - * Dispatches event to the north. - * - * @param clientService OvsdbClientService instance - * @param newRow a new row - * @param oldRow an old row - * @param eventType type of event - * @param dbSchema ovsdb database schema - */ - private void dispatchInterfaceEvent(OvsdbClientService clientService, - Row row, - Type eventType, - DatabaseSchema dbSchema) { - - long dpid = getDataPathid(clientService, dbSchema); - Interface intf = (Interface) TableGenerator - .getTable(dbSchema, row, OvsdbTable.INTERFACE); - if (intf == null) { - return; - } - - String portType = (String) intf.getTypeColumn().data(); - long localPort = getOfPort(intf); - if (localPort < 0) { - return; - } - String[] macAndIfaceId = getMacAndIfaceid(intf); - if (macAndIfaceId == null) { - return; - } - - EventSubject eventSubject = new DefaultEventSubject(MacAddress.valueOf( - macAndIfaceId[0]), - new HashSet(), - new OvsdbPortName(intf - .getName()), - new OvsdbPortNumber(localPort), - new OvsdbDatapathId(Long - .toString(dpid)), - new OvsdbPortType(portType), - new OvsdbIfaceId(macAndIfaceId[1])); - for (OvsdbEventListener listener : ovsdbEventListener) { - listener.handle(new OvsdbEvent(eventType, - eventSubject)); - } - } - - /** - * Gets mac and iface from the table Interface. - * - * @param intf Interface instance - * @return attachedMac, ifaceid - */ - private String[] getMacAndIfaceid(Interface intf) { - OvsdbMap ovsdbMap = (OvsdbMap) intf.getExternalIdsColumn().data(); - @SuppressWarnings("unchecked") - Map externalIds = ovsdbMap.map(); - if (externalIds == null) { - log.warn("The external_ids is null"); - return null; - } - - String attachedMac = externalIds.get(OvsdbConstant.EXTERNAL_ID_VM_MAC); - if (attachedMac == null) { - log.debug("The attachedMac is null"); //FIXME why always null? - return null; - } - String ifaceid = externalIds - .get(OvsdbConstant.EXTERNAL_ID_INTERFACE_ID); - if (ifaceid == null) { - log.warn("The ifaceid is null"); - return null; - } - return new String[]{attachedMac, ifaceid}; - } - - /** - * Gets ofPorts number from table Interface. - * - * @param intf Interface instance - * @return ofport the ofport number - */ - private long getOfPort(Interface intf) { - OvsdbSet ofPortSet = (OvsdbSet) intf.getOpenFlowPortColumn().data(); - @SuppressWarnings("unchecked") - Set ofPorts = ofPortSet.set(); - while (ofPorts == null || ofPorts.size() <= 0) { - log.debug("The ofport is null in {}", intf.getName()); - return -1; - } - Iterator it = ofPorts.iterator(); - return Long.parseLong(it.next().toString()); - } - - /** - * Gets datapathid from table bridge. - * - * @param clientService OvsdbClientService instance - * @param dbSchema ovsdb database schema - * @return datapathid the bridge datapathid - */ - private long getDataPathid(OvsdbClientService clientService, - DatabaseSchema dbSchema) { - String bridgeUuid = clientService - .getBridgeUuid(OvsdbConstant.INTEGRATION_BRIDGE); - if (bridgeUuid == null) { - log.debug("Unable to spot bridge uuid for {} in {}", - OvsdbConstant.INTEGRATION_BRIDGE, clientService); - return 0; - } - - Row bridgeRow = clientService.getRow(OvsdbConstant.DATABASENAME, - "Bridge", bridgeUuid); - Bridge bridge = (Bridge) TableGenerator.getTable(dbSchema, bridgeRow, - OvsdbTable.BRIDGE); - OvsdbSet dpidSet = (OvsdbSet) bridge.getDatapathIdColumn().data(); - @SuppressWarnings("unchecked") - Set dpids = dpidSet.set(); - if (dpids == null || dpids.size() == 0) { - return 0; - } - return stringToLong((String) dpids.toArray()[0]); - } - - private long stringToLong(String values) { - long value = (new BigInteger(values.replaceAll(":", ""), 16)) - .longValue(); - return value; - } - - /** - * Implementation of an Callback which is responsible for receiving request - * infomation from ovsdb. - */ - private class InternalMonitorCallBack implements Callback { - @Override - public void update(UpdateNotification updateNotification) { - Object key = updateNotification.jsonValue(); - OvsdbClientService ovsdbClient = requestNotification.get(key); - - String dbName = requestDbName.get(key); - JsonNode updatesJson = updateNotification.tbUpdatesJsonNode(); - DatabaseSchema dbSchema = ovsdbClient.getDatabaseSchema(dbName); - TableUpdates updates = FromJsonUtil - .jsonNodeToTableUpdates(updatesJson, dbSchema); - try { - processTableUpdates(ovsdbClient, updates, dbName); - } catch (InterruptedException e) { - log.warn("Interrupted while processing table updates"); - Thread.currentThread().interrupt(); - } - } - - @Override - public void locked(List ids) { - // TODO Auto-generated method stub - } - - @Override - public void stolen(List ids) { - // TODO Auto-generated method stub - } - - } - -} diff --git a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbJsonRpcHandler.java b/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbJsonRpcHandler.java deleted file mode 100644 index 1956a1eb..00000000 --- a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbJsonRpcHandler.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.ovsdb.controller.impl; - -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundHandlerAdapter; - -import org.onosproject.ovsdb.controller.OvsdbNodeId; -import org.onosproject.ovsdb.controller.driver.OvsdbProviderService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.base.Strings; - -/** - * Channel handler deals with the node connection and dispatches - * ovsdb messages to the appropriate locations. - */ -public final class OvsdbJsonRpcHandler extends ChannelInboundHandlerAdapter { - protected static final Logger log = LoggerFactory - .getLogger(OvsdbJsonRpcHandler.class); - private OvsdbNodeId ovsdbNodeId; - private OvsdbProviderService ovsdbProviderService; - - /** - * Constructor from a OvsdbNodeId ovsdbNodeId. - * - * @param ovsdbNodeId the ovsdbNodeId to use - */ - public OvsdbJsonRpcHandler(OvsdbNodeId ovsdbNodeId) { - super(); - this.ovsdbNodeId = ovsdbNodeId; - } - - /** - * Gets the ovsdbProviderService instance. - * - * @return the instance of the ovsdbProviderService - */ - public OvsdbProviderService getOvsdbProviderService() { - return ovsdbProviderService; - } - - /** - * Sets the ovsdbProviderService instance. - * - * @param ovsdbNodeDriver the ovsdbNodeDriver to use - */ - public void setOvsdbProviderService(OvsdbProviderService ovsdbNodeDriver) { - this.ovsdbProviderService = ovsdbNodeDriver; - } - - /** - * Gets the OvsdbNodeId instance. - * - * @return the instance of the OvsdbNodeId - */ - public OvsdbNodeId getNodeId() { - return ovsdbNodeId; - } - - /** - * Sets the ovsdb node id. - * - * @param ovsdbNodeId the ovsdbNodeId to use - */ - public void setNodeId(OvsdbNodeId ovsdbNodeId) { - this.ovsdbNodeId = ovsdbNodeId; - } - - /** - * Processes an JsonNode message received on the channel. - * - * @param jsonNode The OvsdbJsonRpcHandler that received the message - */ - private void processOvsdbMessage(JsonNode jsonNode) { - - log.debug("Handle ovsdb message"); - - if (jsonNode.has("result")) { - - log.debug("Handle ovsdb result"); - ovsdbProviderService.processResult(jsonNode); - - } else if (jsonNode.hasNonNull("method")) { - - log.debug("Handle ovsdb request"); - if (jsonNode.has("id") - && !Strings.isNullOrEmpty(jsonNode.get("id").asText())) { - ovsdbProviderService.processRequest(jsonNode); - } - - } - return; - } - - @Override - public void channelRead(ChannelHandlerContext ctx, Object msg) - throws Exception { - log.debug("Receive message from ovsdb"); - if (msg instanceof JsonNode) { - JsonNode jsonNode = (JsonNode) msg; - processOvsdbMessage(jsonNode); - } - } - - @Override - public void channelReadComplete(ChannelHandlerContext ctx) throws Exception { - ctx.flush(); - } - - @Override - public void exceptionCaught(ChannelHandlerContext context, Throwable cause) { - log.error("Exception inside channel handling pipeline.", cause); - context.close(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/package-info.java b/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/package-info.java deleted file mode 100644 index 379e947a..00000000 --- a/framework/src/onos/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/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 OVSDB controller IO subsystem. - */ -package org.onosproject.ovsdb.controller.impl; \ No newline at end of file diff --git a/framework/src/onos/protocols/ovsdb/pom.xml b/framework/src/onos/protocols/ovsdb/pom.xml deleted file mode 100644 index 7a56d7fb..00000000 --- a/framework/src/onos/protocols/ovsdb/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - 4.0.0 - - org.onosproject - onos-protocols - 1.4.0-rc1 - ../pom.xml - - - onos-ovsdb - pom - - ONOS OVSDB southbound plugin - - - api - rfc - ctl - - - - - io.netty - netty-buffer - - - io.netty - netty-handler - - - - \ No newline at end of file diff --git a/framework/src/onos/protocols/ovsdb/rfc/pom.xml b/framework/src/onos/protocols/ovsdb/rfc/pom.xml deleted file mode 100644 index c8b72d6f..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/pom.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - 4.0.0 - - org.onosproject - onos-ovsdb - 1.4.0-rc1 - ../pom.xml - - onos-ovsdb-rfc - bundle - - - - org.apache.felix - org.apache.felix.scr.annotations - - - org.osgi - org.osgi.compendium - - - - - - - org.apache.felix - maven-scr-plugin - - - - - diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/AbnormalJsonNodeException.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/AbnormalJsonNodeException.java deleted file mode 100644 index d6c3357e..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/AbnormalJsonNodeException.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.ovsdb.rfc.exception; - -/** - * AbnormalJsonNodeException exception is thrown when the received JsonNode is invalid. - */ -public class AbnormalJsonNodeException extends RuntimeException { - private static final long serialVersionUID = 8328377718334680368L; - - /** - * Constructs a AbnormalJsonNodeException object. - * @param message error message - */ - public AbnormalJsonNodeException(String message) { - super(message); - } - - /** - * Constructs a AbnormalJsonNodeException object. - * @param message error message - * @param cause Throwable - */ - public AbnormalJsonNodeException(String message, Throwable cause) { - super(message, cause); - } - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/BridgeCreateException.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/BridgeCreateException.java deleted file mode 100644 index 986b50a3..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/BridgeCreateException.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.exception; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * This exception is thrown when Bridge creation fails. - */ -public class BridgeCreateException extends RuntimeException { - private static final long serialVersionUID = 1377521646616825676L; - - /** - * Constructs a BridgeCreateException object. - * @param message error message - */ - public BridgeCreateException(String message) { - super(message); - } - - /** - * Constructs a BridgeCreateException object. - * @param message error message - * @param cause Throwable - */ - public BridgeCreateException(String message, Throwable cause) { - super(message, cause); - } - - /** - * Create error message. - * @param ovsUuid ovs uuid name - * @return message - */ - public static String createMessage(String ovsUuid) { - String message = toStringHelper("BridgeCreateException") - .addValue("Create new bridge failed for " + ovsUuid).toString(); - return message; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/ColumnSchemaNotFoundException.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/ColumnSchemaNotFoundException.java deleted file mode 100644 index 6fa0580f..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/ColumnSchemaNotFoundException.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.ovsdb.rfc.exception; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * This exception is thrown when a ColumnSchema cannot be found. - */ -public class ColumnSchemaNotFoundException extends RuntimeException { - private static final long serialVersionUID = -4325190659387339524L; - - /** - * Constructs a ColumnSchemaNotFoundException object. - * @param message error message - */ - public ColumnSchemaNotFoundException(String message) { - super(message); - } - - /** - * Constructs a ColumnSchemaNotFoundException object. - * @param message error message - * @param cause Throwable - */ - public ColumnSchemaNotFoundException(String message, Throwable cause) { - super(message, cause); - } - - /** - * Create error message. - * @param columnName column name - * @param tableName table name - * @return message - */ - public static String createMessage(String columnName, String tableName) { - String message = toStringHelper("ColumnSchemaNotFoundException") - .addValue("Could not find ColumnSchema for " + columnName - + " in " + tableName).toString(); - return message; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/TableSchemaNotFoundException.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/TableSchemaNotFoundException.java deleted file mode 100644 index 423cabb0..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/TableSchemaNotFoundException.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.ovsdb.rfc.exception; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * This exception is thrown when a TableSchema cannot be found. - */ -public class TableSchemaNotFoundException extends RuntimeException { - private static final long serialVersionUID = 8431894450061740838L; - - /** - * Constructs a TableSchemaNotFoundException object. - * @param message error message - */ - public TableSchemaNotFoundException(String message) { - super(message); - } - - /** - * Constructs a TableSchemaNotFoundException object. - * @param message error message - * @param cause Throwable - */ - public TableSchemaNotFoundException(String message, Throwable cause) { - super(message, cause); - } - - /** - * Create error message. - * @param tableName table name - * @param schemaName database name - * @return message - */ - public static String createMessage(String tableName, String schemaName) { - String message = toStringHelper("TableSchemaNotFoundException") - .addValue("Can not find TableSchema for " + tableName + " in " - + schemaName).toString(); - return message; - } - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/UnsupportedException.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/UnsupportedException.java deleted file mode 100644 index 2c44ad37..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/UnsupportedException.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.ovsdb.rfc.exception; - -/** - * This exception is thrown when the caller invoke the unsupported method or - * use the encoding is not supported. - */ -public class UnsupportedException extends RuntimeException { - private static final long serialVersionUID = 1377011546616825375L; - - /** - * Constructs a UnsupportedException object. - * @param message error message - */ - public UnsupportedException(String message) { - super(message); - } - - /** - * Constructs a UnsupportedException object. - * @param message error message - * @param cause Throwable - */ - public UnsupportedException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/VersionMismatchException.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/VersionMismatchException.java deleted file mode 100644 index ad54938e..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/VersionMismatchException.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.ovsdb.rfc.exception; - - -/** - * This exception is used when the a table or row is accessed though a typed - * interface and the version requirements are not met. - */ -public class VersionMismatchException extends RuntimeException { - private static final long serialVersionUID = -8439624321110133595L; - - /** - * Constructs a VersionMismatchException object. - * @param message error message - */ - public VersionMismatchException(String message) { - super(message); - } - - /** - * Constructs a VersionMismatchException object. - * @param message error message - * @param cause Throwable - */ - public VersionMismatchException(String message, Throwable cause) { - super(message, cause); - } - - /** - * Create error message. - * @param actualVersion the actual version - * @param fromVersion the initial version - * @return message - */ - public static String createFromMessage(String actualVersion, String fromVersion) { - String message = "The fromVersion should less than the actualVersion.\n fromVersion: " - + fromVersion + ".\n" + "actualVersion: " + actualVersion; - return message; - } - - /** - * Create error message. - * @param actualVersion the actual version - * @param toVersion the end version - * @return message - */ - public static String createToMessage(String actualVersion, String toVersion) { - String message = "The toVersion should greater than the actualVersion.\n" - + "toVersion: " + toVersion + ".\n" + " actualVersion: " + actualVersion; - return message; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/package-info.java deleted file mode 100644 index 274c8d43..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/exception/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. - */ - -/** - * Exceptions used by the OVSDB implementation. - */ -package org.onosproject.ovsdb.rfc.exception; diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/Callback.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/Callback.java deleted file mode 100644 index f7ec8b67..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/Callback.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.ovsdb.rfc.jsonrpc; - -import java.util.List; - -import org.onosproject.ovsdb.rfc.message.UpdateNotification; - -/** - * The callback function interface will be used when the server send to the - * client report changes. - */ -public interface Callback { - /** - * The "update" notification is sent by the server to the client to report - * changes in tables that are being monitored following a "*monitor" - * request. - * @param updateNotification the information of the update - */ - void update(UpdateNotification updateNotification); - - /** - * The "locked" notification is provided to notify a client that it has been - * granted a lock that it had previously requested with the "lock" method. - * @param ids the locked ids - */ - void locked(List ids); - - /** - * The "stolen" notification is provided to notify a client, which had - * previously obtained a lock, that another client has stolen ownership of - * that lock. - * @param ids the stolen ids - */ - void stolen(List ids); - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonReadContext.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonReadContext.java deleted file mode 100644 index 8033f653..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonReadContext.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.jsonrpc; - -import java.util.Stack; - -/** - * Context for decode parameters. - */ -public class JsonReadContext { - private Stack bufStack; - private boolean isStartMatch; - private int lastReadBytes; - - /** - * Constructs a JsonReadContext object. This class only need initial - * parameter value for the readToJsonNode method of JsonRpcReaderUtil - * entity. - */ - public JsonReadContext() { - bufStack = new Stack(); - isStartMatch = false; - lastReadBytes = 0; - } - - /** - * Return bufStack. - * @return bufStack - */ - public Stack getBufStack() { - return bufStack; - } - - /** - * Set bufStack, used for match the braces and double quotes. - * @param bufStack Stack of Byte - */ - public void setBufStack(Stack bufStack) { - this.bufStack = bufStack; - } - - /** - * Return isStartMatch. - * @return isStartMatch - */ - public boolean isStartMatch() { - return isStartMatch; - } - - /** - * Set isStartMatch. - * @param isStartMatch mark whether the matching has started - */ - public void setStartMatch(boolean isStartMatch) { - this.isStartMatch = isStartMatch; - } - - /** - * Return lastReadBytes. - * @return lastReadBytes - */ - public int getLastReadBytes() { - return lastReadBytes; - } - - /** - * Set lastReadBytes. - * @param lastReadBytes the bytes for last decoding incomplete record - */ - public void setLastReadBytes(int lastReadBytes) { - this.lastReadBytes = lastReadBytes; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonRpcRequest.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonRpcRequest.java deleted file mode 100644 index ecff096b..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonRpcRequest.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.ovsdb.rfc.jsonrpc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; -import java.util.Objects; - -import com.google.common.collect.Lists; - -/** - * Json Rpc Request information that include id,method,params. - */ -public class JsonRpcRequest { - - private final String id; - private final String method; - private final List params; - - /** - * JsonRpcRequest Constructor. - * @param id the id node of request information - * @param method the method node of request information - */ - public JsonRpcRequest(String id, String method) { - checkNotNull(id, "id cannot be null"); - checkNotNull(method, "method cannot be null"); - this.id = id; - this.method = method; - this.params = Lists.newArrayList(); - } - - /** - * JsonRpcRequest Constructor. - * @param id the id node of request information - * @param method the method node of request information - * @param params the params node of request information - */ - public JsonRpcRequest(String id, String method, List params) { - checkNotNull(id, "id cannot be null"); - checkNotNull(method, "method cannot be null"); - checkNotNull(params, "params cannot be null"); - this.id = id; - this.method = method; - this.params = params; - } - - /** - * Returns id. - * @return id - */ - public String getId() { - return id; - } - - /** - * Returns method. - * @return method - */ - public String getMethod() { - return method; - } - - /** - * Returns params. - * @return params - */ - public List getParams() { - return params; - } - - @Override - public int hashCode() { - return Objects.hash(id, method, params); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof JsonRpcRequest) { - final JsonRpcRequest other = (JsonRpcRequest) obj; - return Objects.equals(this.id, other.id) - && Objects.equals(this.method, other.method) - && Objects.equals(this.params, other.params); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("id", id).add("method", method) - .add("params", params).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonRpcResponse.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonRpcResponse.java deleted file mode 100644 index a2f45414..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonRpcResponse.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.jsonrpc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; -import java.util.Objects; - -import com.google.common.collect.Lists; - -/** - * Json Rpc Response information that include id,error,result. - */ -public class JsonRpcResponse { - - private final String id; - private final String error; - private final List result; - - /** - * JsonRpcResponse Constructor. - * @param id the id node of response information - */ - public JsonRpcResponse(String id) { - checkNotNull(id, "id cannot be null"); - this.id = id; - this.error = null; - this.result = Lists.newArrayList(); - } - - /** - * JsonRpcResponse Constructor. - * @param id the id node of response information - * @param error the error node of response information - */ - public JsonRpcResponse(String id, String error) { - checkNotNull(id, "id cannot be null"); - checkNotNull(error, "error cannot be null"); - this.id = id; - this.error = error; - this.result = Lists.newArrayList(); - } - - /** - * JsonRpcResponse Constructor. - * @param id the id node of response information - * @param error the error node of response information - * @param result the result node of response information - */ - public JsonRpcResponse(String id, String error, List result) { - checkNotNull(id, "id cannot be null"); - checkNotNull(error, "error cannot be null"); - checkNotNull(result, "result cannot be null"); - this.id = id; - this.error = error; - this.result = result; - } - - /** - * Returns id. - * @return id - */ - public String getId() { - return id; - } - - /** - * Returns error. - * @return error - */ - public String getError() { - return error; - } - - /** - * Returns result. - * @return result - */ - public List getResult() { - return result; - } - - @Override - public int hashCode() { - return Objects.hash(id, error, result); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof JsonRpcResponse) { - final JsonRpcResponse other = (JsonRpcResponse) obj; - return Objects.equals(this.id, other.id) - && Objects.equals(this.error, other.error) - && Objects.equals(this.result, other.result); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("id", id).add("error", error) - .add("result", result).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/OvsdbRPC.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/OvsdbRPC.java deleted file mode 100644 index 5d08b143..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/OvsdbRPC.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.ovsdb.rfc.jsonrpc; - -import java.util.List; - -import org.onosproject.ovsdb.rfc.operations.Operation; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.util.concurrent.ListenableFuture; - -/** - * The following interface describe the RPC7047's methods that are supported. - */ -public interface OvsdbRPC { - - /** - * This operation retrieves a database-schema that describes hosted database - * db-name. - * @param dbnames database name - * @return ListenableFuture of JsonNode - */ - ListenableFuture getSchema(List dbnames); - - /** - * The "echo" method can be used by both clients and servers to verify the - * liveness of a database connection. - * @return return info - */ - ListenableFuture> echo(); - - /** - * The "monitor" request enables a client to replicate tables or subsets of - * tables within an OVSDB database by requesting notifications of changes to - * those tables and by receiving the complete initial state of a table or a - * subset of a table. - * @param dbSchema databse schema - * @param monitorId a id for monitor - * @return ListenableFuture of JsonNode - */ - ListenableFuture monitor(DatabaseSchema dbSchema, String monitorId); - - /** - * This operation retrieves an array whose elements are the names of the - * databases that can be accessed over this management protocol connection. - * @return database names - */ - ListenableFuture> listDbs(); - - /** - * This RPC method causes the database server to execute a series of - * operations in the specified order on a given database. - * @param dbSchema database schema - * @param operations the operations to execute - * @return result the transact result - */ - ListenableFuture> transact(DatabaseSchema dbSchema, - List operations); - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/package-info.java deleted file mode 100644 index 7edf5b46..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/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. - */ - -/** - * RFC 7047 implementation. - */ -package org.onosproject.ovsdb.rfc.jsonrpc; diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/MonitorRequest.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/MonitorRequest.java deleted file mode 100644 index e7f5eaee..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/MonitorRequest.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.message; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; -import java.util.Set; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; - -/** - * Monitor Requst information that need to monitor table. - */ -@JsonInclude(JsonInclude.Include.NON_NULL) -public final class MonitorRequest { - @JsonIgnore - private final String tableName; - private final Set columns; - private final MonitorSelect select; - - /** - * Constructs a MonitorRequest object. - * @param tableName table name - * @param columns a set of column name - * @param select monitor action - */ - public MonitorRequest(String tableName, Set columns, - MonitorSelect select) { - checkNotNull(tableName, "table name cannot be null"); - checkNotNull(columns, "columns cannot be null"); - checkNotNull(select, "select cannot be null"); - this.tableName = tableName; - this.columns = columns; - this.select = select; - } - - /** - * Returns tableName. - * @return tableName - */ - public String getTableName() { - return tableName; - } - - /** - * Returns select. - * @return select - */ - public MonitorSelect getSelect() { - return select; - } - - /** - * Returns columns. - * @return columns - */ - public Set getColumns() { - return columns; - } - - @Override - public int hashCode() { - return Objects.hash(tableName, select, columns); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MonitorRequest) { - final MonitorRequest other = (MonitorRequest) obj; - return Objects.equals(this.tableName, other.tableName) - && Objects.equals(this.select, other.select) - && Objects.equals(this.columns, other.columns); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("tableName", tableName) - .add("select", select).add("columns", columns).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/MonitorSelect.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/MonitorSelect.java deleted file mode 100644 index 502fc4de..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/MonitorSelect.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.message; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; - -/** - * The contents of this object specify how the columns or table are to be - * monitored. - */ -public final class MonitorSelect { - - private final boolean initial; - private final boolean insert; - private final boolean delete; - private final boolean modify; - - /** - * Constructs a MonitorSelect object. - * @param initial whether monitor the initial action - * @param insert whether monitor the insert action - * @param delete whether monitor the delete action - * @param modify whether monitor the modify action - */ - public MonitorSelect(boolean initial, boolean insert, boolean delete, - boolean modify) { - this.initial = initial; - this.insert = insert; - this.delete = delete; - this.modify = modify; - } - - /** - * Returns initial. - * @return initial - */ - public boolean isInitial() { - return initial; - } - - /** - * Returns insert. - * @return insert - */ - public boolean isInsert() { - return insert; - } - - /** - * Returns delete. - * @return delete - */ - public boolean isDelete() { - return delete; - } - - /** - * Returns modify. - * @return modify - */ - public boolean isModify() { - return modify; - } - - @Override - public int hashCode() { - return Objects.hash(initial, insert, delete, modify); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MonitorSelect) { - final MonitorSelect other = (MonitorSelect) obj; - return Objects.equals(this.initial, other.initial) - && Objects.equals(this.insert, other.insert) - && Objects.equals(this.delete, other.delete) - && Objects.equals(this.modify, other.modify); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("initial", initial) - .add("insert", insert).add("delete", delete) - .add("modify", modify).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/OperationResult.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/OperationResult.java deleted file mode 100644 index 99807355..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/OperationResult.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.message; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; - -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - -/** - * All results of ovs table operations. refer to RFC7047 5.2. - */ -@JsonIgnoreProperties(ignoreUnknown = true) -public final class OperationResult { - private int count; - private UUID uuid; - private List rows; - private String error; - private String details; - - /** - * Constructs a OperationResult object. When JsonNode is converted into - * OperationResult, need this constructor and also need setter method. - */ - public OperationResult() { - } - - /** - * Constructs a OperationResult object. - * @param rows List of Row entity - */ - public OperationResult(List rows) { - checkNotNull(rows, "rows cannot be null"); - this.rows = rows; - } - - /** - * Constructs a OperationResult object. - * @param count the count node of result - * @param uuid UUID entity - * @param rows List of Row entity - * @param error error message - * @param details details of error message - */ - public OperationResult(int count, UUID uuid, List rows, String error, - String details) { - checkNotNull(uuid, "uuid cannot be null"); - checkNotNull(rows, "rows cannot be null"); - checkNotNull(error, "error cannot be null"); - checkNotNull(details, "details cannot be null"); - this.count = count; - this.uuid = uuid; - this.rows = rows; - this.error = error; - this.details = details; - } - - /** - * Return count. - * @return count - */ - public int getCount() { - return count; - } - - /** - * Set count value. - * @param count the Operation message of count - */ - public void setCount(int count) { - this.count = count; - } - - /** - * Return uuid. - * @return uuid - */ - public UUID getUuid() { - return uuid; - } - - /** - * Set uuid value. - * @param uuid the Operation message of uuid - */ - public void setUuid(UUID uuid) { - checkNotNull(uuid, "uuid cannot be null"); - this.uuid = uuid; - } - - /** - * Return rows. - * @return List of Row - */ - public List getRows() { - return rows; - } - - /** - * Set rows value. - * @param rows the Operation message of rows - */ - public void setRows(List rows) { - checkNotNull(rows, "rows cannot be null"); - this.rows = rows; - } - - /** - * Return error. - * @return error - */ - public String getError() { - return error; - } - - /** - * Set error value. - * @param error the Operation message of error - */ - public void setError(String error) { - checkNotNull(error, "error cannot be null"); - this.error = error; - } - - /** - * Return details. - * @return details - */ - public String getDetails() { - return details; - } - - /** - * Set details value. - * @param details the Operation message of details - */ - public void setDetails(String details) { - checkNotNull(details, "details cannot be null"); - this.details = details; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/RowUpdate.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/RowUpdate.java deleted file mode 100644 index 221206ef..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/RowUpdate.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.ovsdb.rfc.message; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; - -/** - * A TableUpdate is an object that maps from the row's UUID to a RowUpdate object. - * A RowUpdate is an object with the following members: "old": row, "new": row. - * Refer to RFC 7047 Section 4.1.6. - */ -public final class RowUpdate { - private final UUID uuid; - private final Row oldRow; - private final Row newRow; - - /** - * Constructs a RowUpdate object. - * @param uuid UUID - * @param oldRow present for "delete" and "modify" updates - * @param newRow present for "initial", "insert", and "modify" updates - */ - public RowUpdate(UUID uuid, Row oldRow, Row newRow) { - checkNotNull(uuid, "uuid cannot be null"); - this.uuid = uuid; - this.oldRow = oldRow; - this.newRow = newRow; - } - - /** - * Return uuid. - * @return uuid - */ - public UUID uuid() { - return this.uuid; - } - - /** - * Return oldRow. - * @return oldRow - */ - public Row oldRow() { - return oldRow; - } - - /** - * Return newRow. - * @return newRow - */ - public Row newRow() { - return newRow; - } - - @Override - public int hashCode() { - return Objects.hash(uuid, oldRow, newRow); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof RowUpdate) { - final RowUpdate other = (RowUpdate) obj; - return Objects.equals(this.uuid, other.uuid) - && Objects.equals(this.oldRow, other.oldRow) - && Objects.equals(this.newRow, other.newRow); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("uuid", uuid).add("oldRow", oldRow) - .add("newRow", newRow).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/TableUpdate.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/TableUpdate.java deleted file mode 100644 index 0673b79e..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/TableUpdate.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.ovsdb.rfc.message; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Map; -import java.util.Objects; - -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; - -/** - * TableUpdate is an object that maps from the row's UUID to a RowUpdate object. - */ -public final class TableUpdate { - - private final Map rows; - - /** - * Constructs a TableUpdate object. - * @param rows the parameter of TableUpdate entity - */ - private TableUpdate(Map rows) { - this.rows = rows; - } - - /** - * Get TableUpdate entity. - * @param rows the parameter of TableUpdate entity - * @return TableUpdate entity - */ - public static TableUpdate tableUpdate(Map rows) { - checkNotNull(rows, "rows cannot be null"); - return new TableUpdate(rows); - } - - /** - * Return old row. - * @param uuid the key of rows - * @return Row old row - */ - public Row getOld(UUID uuid) { - RowUpdate rowUpdate = rows.get(uuid); - if (rowUpdate == null) { - return null; - } - return rowUpdate.oldRow(); - } - - /** - * Return new row. - * @param uuid the key of rows - * @return Row new row - */ - public Row getNew(UUID uuid) { - RowUpdate rowUpdate = rows.get(uuid); - if (rowUpdate == null) { - return null; - } - return rowUpdate.newRow(); - } - - /** - * Return rows. - * @return rows - */ - public Map rows() { - return rows; - } - - @Override - public int hashCode() { - return rows.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TableUpdate) { - final TableUpdate other = (TableUpdate) obj; - return Objects.equals(this.rows, other.rows); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("rows", rows).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/TableUpdates.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/TableUpdates.java deleted file mode 100644 index e161016b..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/TableUpdates.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.message; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Map; -import java.util.Objects; - -import org.onosproject.ovsdb.rfc.schema.TableSchema; - -/** - * TableUpdates is an object that maps from a table name to a TableUpdate. - */ -public final class TableUpdates { - - private final Map result; - - /** - * Constructs a TableUpdates object. - * @param result the parameter of TableUpdates entity - */ - private TableUpdates(Map result) { - this.result = result; - } - - /** - * Get TableUpdates. - * @param result the parameter of TableUpdates entity - * @return TableUpdates - */ - public static TableUpdates tableUpdates(Map result) { - checkNotNull(result, "result cannot be null"); - return new TableUpdates(result); - } - - /** - * Return TableUpdate. - * @param table the TableSchema of TableUpdates - * @return TableUpdate - */ - public TableUpdate tableUpdate(TableSchema table) { - return this.result.get(table.name()); - } - - /** - * Return the map of TableUpdate. - * @return result - */ - public Map result() { - return result; - } - - @Override - public int hashCode() { - return result.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TableUpdates) { - final TableUpdates other = (TableUpdates) obj; - return Objects.equals(this.result, other.result); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("result", result).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/UpdateNotification.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/UpdateNotification.java deleted file mode 100644 index d4f0513d..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/UpdateNotification.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.message; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.ovsdb.rfc.notation.json.UpdateNotificationConverter; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; - -/** - * The "update" notification is sent by the server to the client to report - * changes in tables that are being monitored following a "monitor" request. The - * "params" of the result JsonNode. - */ -@JsonDeserialize(converter = UpdateNotificationConverter.class) -public final class UpdateNotification { - private final Object jsonValue; - private final JsonNode tbUpdatesJsonNode; - - /** - * Constructs a UpdateNotification object. - * @param jsonValue the "json-value" in "params" of the result JsonNode - * @param tbUpdatesJsonNode the "table-updates" in "params" of the result JsonNode - */ - public UpdateNotification(Object jsonValue, JsonNode tbUpdatesJsonNode) { - checkNotNull(jsonValue, "jsonValue cannot be null"); - checkNotNull(tbUpdatesJsonNode, "tablebUpdates JsonNode cannot be null"); - this.jsonValue = jsonValue; - this.tbUpdatesJsonNode = tbUpdatesJsonNode; - } - - /** - * Return context. - * @return context - */ - public Object jsonValue() { - return jsonValue; - } - - /** - * Return tbUpdatesJsonNode. - * @return tbUpdatesJsonNode - */ - public JsonNode tbUpdatesJsonNode() { - return tbUpdatesJsonNode; - } - - @Override - public int hashCode() { - return Objects.hash(jsonValue, tbUpdatesJsonNode); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof UpdateNotification) { - final UpdateNotification other = (UpdateNotification) obj; - return Objects.equals(this.jsonValue, other.jsonValue) - && Objects.equals(this.tbUpdatesJsonNode, - other.tbUpdatesJsonNode); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("jsonValue", jsonValue) - .add("tbUpdatesJsonNode", tbUpdatesJsonNode).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/package-info.java deleted file mode 100644 index 1b301262..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/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. - */ - -/** - * OVSDB message definitions. - */ -package org.onosproject.ovsdb.rfc.message; diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.java deleted file mode 100644 index 60f49442..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.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.ovsdb.rfc.notation; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * Column is the basic element of the OpenVswitch database. - */ -public final class Column { - private final String columnName; - private final Object data; - - /** - * Column constructor. - * @param columnName the column name - * @param obj the data of the column - */ - public Column(String columnName, Object obj) { - checkNotNull(columnName, "columnName cannot be null"); - checkNotNull(obj, "data cannot be null"); - this.columnName = columnName; - this.data = obj; - } - - /** - * Returns column data. - * @return column data - */ - public Object data() { - return data; - } - - /** - * Returns columnName. - * @return columnName - */ - public String columnName() { - return columnName; - } - - @Override - public int hashCode() { - return Objects.hash(columnName, data); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof Column) { - final Column other = (Column) obj; - return Objects.equals(this.columnName, other.columnName) - && Objects.equals(this.data, other.data); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("columnName", columnName) - .add("data", data).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java deleted file mode 100644 index cbf35424..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.notation; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.ovsdb.rfc.notation.json.ConditionSerializer; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; - -/** - * Condition is a 3-element JSON array of the form [column, function, value] - * that represents a test on a column value. - */ -@JsonSerialize(using = ConditionSerializer.class) -public final class Condition { - /** - * Function of Notation. Refer to RFC 7047 Section 5.1. - */ - public enum Function { - LESS_THAN("<"), LESS_THAN_OR_EQUALS("<="), EQUALS("=="), - NOT_EQUALS("!="), GREATER_THAN(">"), GREATER_THAN_OR_EQUALS(">="), - INCLUDES("includes"), EXCLUDES("excludes"); - - private final String function; - - private Function(String function) { - this.function = function; - } - - /** - * Returns the function for Function. - * @return the function - */ - public String function() { - return function; - } - } - - private final String column; - private final Function function; - private final Object value; - - /** - * Constructs a Condition object. - * @param column the column name - * @param function Function - * @param value column data - */ - public Condition(String column, Function function, Object value) { - checkNotNull(column, "column cannot be null"); - checkNotNull(function, "function cannot be null"); - checkNotNull(value, "value cannot be null"); - this.column = column; - this.function = function; - this.value = value; - } - - /** - * Returns column name. - * @return column name - */ - public String getColumn() { - return column; - } - - /** - * Returns Function. - * @return Function - */ - public Function getFunction() { - return function; - } - - /** - * Returns column data. - * @return column data - */ - public Object getValue() { - return value; - } - - @Override - public int hashCode() { - return Objects.hash(column, function, value); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof Condition) { - final Condition other = (Condition) obj; - return Objects.equals(this.column, other.column) - && Objects.equals(this.function, other.function) - && Objects.equals(this.value, other.value); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("column", column) - .add("function", function).add("value", value).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java deleted file mode 100644 index 5b5293c2..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.notation; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.ovsdb.rfc.notation.json.MutationSerializer; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; - -/** - * Mutation is s 3-element JSON array of the form [column, mutator, value] that - * represents a change to a column value. - */ -@JsonSerialize(using = MutationSerializer.class) -public final class Mutation { - /** - * Mutator must be "+=", "-=", "*=", "/=", or (integer only) "%=". The value - * of column is changed to the sum, difference, product, quotient, or - * remainder, respectively, of column and value. - */ - public enum Mutator { - SUM("+="), DIFFERENCE("-="), PRODUCT("*="), QUOTIENT("/="), - REMAINDER("%="), INSERT("insert"), DELETE("delete"); - - private final String mutator; - - private Mutator(String mutator) { - this.mutator = mutator; - } - - /** - * Returns the mutator for Mutator. - * @return the mutator - */ - public String mutator() { - return mutator; - } - } - - private final String column; - private final Mutator mutator; - private final Object value; - - /** - * Mutation constructor. - * @param column the column name - * @param mutator Mutator - * @param value column data - */ - public Mutation(String column, Mutator mutator, Object value) { - checkNotNull(column, "column cannot be null"); - checkNotNull(mutator, "mutator cannot be null"); - checkNotNull(value, "value cannot be null"); - this.column = column; - this.mutator = mutator; - this.value = value; - } - - /** - * Returns column name. - * @return column name - */ - public String getColumn() { - return column; - } - - /** - * Returns Mutator. - * @return Mutator - */ - public Mutator getMutator() { - return mutator; - } - - /** - * Returns column data. - * @return column data - */ - public Object getValue() { - return value; - } - - @Override - public int hashCode() { - return Objects.hash(column, mutator, value); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof Mutation) { - final Mutation other = (Mutation) obj; - return Objects.equals(this.column, other.column) - && Objects.equals(this.mutator, other.mutator) - && Objects.equals(this.value, other.value); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("column", column) - .add("mutator", mutator).add("value", value).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbMap.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbMap.java deleted file mode 100644 index a62ab0db..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbMap.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.ovsdb.rfc.notation; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Map; -import java.util.Objects; - -import org.onosproject.ovsdb.rfc.notation.json.OvsdbMapSerializer; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; - -/** - * OvsdbMap is a 2-element JSON array that represents a database map value. - */ -@JsonSerialize(using = OvsdbMapSerializer.class) -public final class OvsdbMap { - - private final Map map; - - /** - * OvsdbMap constructor. - * @param map java.util.Map - */ - private OvsdbMap(Map map) { - checkNotNull(map, "map cannot be null"); - this.map = map; - } - - /** - * Returns map. - * @return map - */ - public Map map() { - return map; - } - - /** - * convert Map into OvsdbMap. - * @param map java.util.Map - * @return OvsdbMap - */ - public static OvsdbMap ovsdbMap(Map map) { - return new OvsdbMap(map); - } - - @Override - public int hashCode() { - return map.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbMap) { - final OvsdbMap other = (OvsdbMap) obj; - return Objects.equals(this.map, other.map); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("map", map).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbSet.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbSet.java deleted file mode 100644 index 21f0b72b..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbSet.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.notation; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.json.OvsdbSetSerializer; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; - -/** - * OvsdbSet is either an atom, representing a set with exactly one element, or - * a 2-element JSON array that represents a database set value. - * - */ -@JsonSerialize(using = OvsdbSetSerializer.class) -public final class OvsdbSet { - - private final Set set; - - /** - * OvsdbSet constructor. - * @param set java.util.Set - */ - private OvsdbSet(Set set) { - checkNotNull(set, "set cannot be null"); - this.set = set; - } - - /** - * Returns set. - * @return set - */ - public Set set() { - return set; - } - - /** - * convert Set into OvsdbSet. - * @param set java.util.Set - * @return OvsdbSet - */ - public static OvsdbSet ovsdbSet(Set set) { - return new OvsdbSet(set); - } - - @Override - public int hashCode() { - return set.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OvsdbSet) { - final OvsdbSet other = (OvsdbSet) obj; - return Objects.equals(this.set, other.set); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("set", set).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/RefTableRow.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/RefTableRow.java deleted file mode 100644 index 1b22a426..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/RefTableRow.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.ovsdb.rfc.notation; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import com.fasterxml.jackson.databind.JsonNode; - -/** - * The RefTable type that can be expanded to Row. Refer to RFC 7047 Section 3.2. - */ -public final class RefTableRow { - - private final String refTable; - private final JsonNode jsonNode; - - /** - * RefTableRow constructor. - * @param refTable the refTable value of JsonNode - * @param jsonNode JsonNode - */ - public RefTableRow(String refTable, JsonNode jsonNode) { - checkNotNull(refTable, "refTable cannot be null"); - checkNotNull(jsonNode, "jsonNode cannot be null"); - this.refTable = refTable; - this.jsonNode = jsonNode; - } - - /** - * Returns JsonNode. - * @return JsonNode - */ - public JsonNode jsonNode() { - return jsonNode; - } - - /** - * Returns refTable. - * @return refTable - */ - public String refTable() { - return refTable; - } - - @Override - public int hashCode() { - return Objects.hash(refTable, jsonNode); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof RefTableRow) { - final RefTableRow other = (RefTableRow) obj; - return Objects.equals(this.refTable, other.refTable) - && Objects.equals(this.jsonNode, other.jsonNode); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("refTable", refTable) - .add("jsonNode", jsonNode).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java deleted file mode 100644 index 09088766..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.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.ovsdb.rfc.notation; - -import com.google.common.collect.Maps; - -import java.util.Collection; -import java.util.Map; -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Row is the basic element of the OpenVswitch's table. - */ -public final class Row { - private String tableName; - private UUID uuid; - private Map columns; - - /** - * Row constructor. - */ - public Row() { - this.columns = Maps.newHashMap(); - } - - /** - * Row constructor. - * - * @param tableName table name - * @deprecated in Emu Release - */ - @Deprecated - private Row(String tableName) { - checkNotNull(tableName, "tableName cannot be null"); - this.tableName = tableName; - this.columns = Maps.newHashMap(); - } - - /** - * Row constructor. - * - * @param tableName table name - * @param columns Map of Column entity - * @param uuid UUID of the row - */ - public Row(String tableName, UUID uuid, Map columns) { - checkNotNull(tableName, "table name cannot be null"); - checkNotNull(uuid, "uuid cannot be null"); - checkNotNull(columns, "columns cannot be null"); - this.tableName = tableName; - this.uuid = uuid; - this.columns = columns; - } - - /** - * Returns tableName. - * - * @return tableName - */ - public String tableName() { - return tableName; - } - - /** - * Set tableName value. - * - * @param tableName table name - */ - public void setTableName(String tableName) { - this.tableName = tableName; - } - - /** - * Returns uuid. - * - * @return uuid - */ - public UUID uuid() { - return uuid; - } - - /** - * Sets uuid value. - * - * @param uuid new uuid - */ - public void setUuid(UUID uuid) { - this.uuid = uuid; - } - - /** - * Returns Column by ColumnSchema. - * - * @param columnName column name - * @return Column - */ - public Column getColumn(String columnName) { - return columns.get(columnName); - } - - /** - * Returns Collection of Column. - * - * @return Collection of Column - */ - public Collection getColumns() { - return columns.values(); - } - - /** - * add Column. - * - * @param columnName column name - * @param data Column entity - */ - public void addColumn(String columnName, Column data) { - this.columns.put(columnName, data); - } - - @Override - public int hashCode() { - return Objects.hash(tableName, columns); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof Row) { - final Row other = (Row) obj; - return Objects.equals(this.tableName, other.tableName) - && Objects.equals(this.columns, other.columns); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("tableName", tableName) - .add("columns", columns).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/UUID.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/UUID.java deleted file mode 100644 index 0177eea3..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/UUID.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.ovsdb.rfc.notation; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.ovsdb.rfc.notation.json.UUIDConverter; -import org.onosproject.ovsdb.rfc.notation.json.UUIDSerializer; - -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; - -/** - * Handles both uuid and named-uuid. - */ -@JsonSerialize(using = UUIDSerializer.class) -@JsonDeserialize(converter = UUIDConverter.class) -public final class UUID { - private final String value; - - /** - * UUID constructor. - * @param value UUID value - */ - private UUID(String value) { - checkNotNull(value, "value cannot be null"); - this.value = value; - } - - /** - * Get UUID. - * @param value UUID value - * @return UUID - */ - public static UUID uuid(String value) { - return new UUID(value); - } - - /** - * Returns value. - * @return value - */ - public String value() { - return value; - } - - @Override - public int hashCode() { - return value.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof UUID) { - final UUID other = (UUID) obj; - return Objects.equals(this.value, other.value); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("value", value).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/ConditionSerializer.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/ConditionSerializer.java deleted file mode 100644 index 551a66a4..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/ConditionSerializer.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.ovsdb.rfc.notation.json; - -import java.io.IOException; - -import org.onosproject.ovsdb.rfc.notation.Condition; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; - -/** - * Condition Serializer. - */ -public class ConditionSerializer extends JsonSerializer { - @Override - public void serialize(Condition condition, JsonGenerator generator, - SerializerProvider provider) - throws IOException, JsonProcessingException { - generator.writeStartArray(); - generator.writeString(condition.getColumn()); - generator.writeString(condition.getFunction().function()); - generator.writeObject(condition.getValue()); - generator.writeEndArray(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/MutationSerializer.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/MutationSerializer.java deleted file mode 100644 index a18b9e72..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/MutationSerializer.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.ovsdb.rfc.notation.json; - -import java.io.IOException; - -import org.onosproject.ovsdb.rfc.notation.Mutation; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; - -/** - * Mutation Serializer. - */ -public class MutationSerializer extends JsonSerializer { - @Override - public void serialize(Mutation condition, JsonGenerator generator, - SerializerProvider provider) - throws IOException, JsonProcessingException { - generator.writeStartArray(); - generator.writeString(condition.getColumn()); - generator.writeString(condition.getMutator().mutator()); - generator.writeObject(condition.getValue()); - generator.writeEndArray(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbMapSerializer.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbMapSerializer.java deleted file mode 100644 index 60fd3349..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbMapSerializer.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.ovsdb.rfc.notation.json; - -import java.io.IOException; -import java.util.Map; - -import org.onosproject.ovsdb.rfc.notation.OvsdbMap; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; - -/** - * OvsdbMap Serializer. - */ -public class OvsdbMapSerializer extends JsonSerializer { - @Override - public void serialize(OvsdbMap map, JsonGenerator generator, - SerializerProvider provider) - throws IOException, JsonProcessingException { - generator.writeStartArray(); - generator.writeString("map"); - generator.writeStartArray(); - Map javaMap = map.map(); - for (Object key : javaMap.keySet()) { - generator.writeStartArray(); - generator.writeObject(key); - generator.writeObject(javaMap.get(key)); - generator.writeEndArray(); - } - generator.writeEndArray(); - generator.writeEndArray(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbSetSerializer.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbSetSerializer.java deleted file mode 100644 index 509b2c53..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbSetSerializer.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.ovsdb.rfc.notation.json; - -import java.io.IOException; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.OvsdbSet; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; - -/** - * OvsdbSet Serializer. - */ -public class OvsdbSetSerializer extends JsonSerializer { - @Override - public void serialize(OvsdbSet set, JsonGenerator generator, - SerializerProvider provider) - throws IOException, JsonProcessingException { - generator.writeStartArray(); - generator.writeString("set"); - generator.writeStartArray(); - Set javaSet = set.set(); - for (Object key : javaSet) { - generator.writeObject(key); - } - generator.writeEndArray(); - generator.writeEndArray(); - } -} \ No newline at end of file diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDConverter.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDConverter.java deleted file mode 100644 index 66a86633..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDConverter.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.notation.json; - -import org.onosproject.ovsdb.rfc.notation.UUID; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.util.StdConverter; - -/** - * UUIDConverter Converter. - */ -public class UUIDConverter extends StdConverter { - - @Override - public UUID convert(JsonNode json) { - return UUID.uuid(json.get(1).asText()); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDSerializer.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDSerializer.java deleted file mode 100644 index 8fb5c49c..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDSerializer.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.ovsdb.rfc.notation.json; - -import java.io.IOException; - -import org.onosproject.ovsdb.rfc.notation.UUID; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; - -/** - * UUID Serializer. - */ -public class UUIDSerializer extends JsonSerializer { - @Override - public void serialize(UUID value, JsonGenerator generator, - SerializerProvider provider) throws IOException { - generator.writeStartArray(); - String reg = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"; - if (value.value().matches(reg)) { - generator.writeString("uuid"); - } else { - generator.writeString("named-uuid"); - } - generator.writeString(value.value()); - generator.writeEndArray(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UpdateNotificationConverter.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UpdateNotificationConverter.java deleted file mode 100644 index 2bb1b633..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UpdateNotificationConverter.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.ovsdb.rfc.notation.json; - -import org.onosproject.ovsdb.rfc.message.UpdateNotification; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.util.StdConverter; - -/** - * UpdateNotificationDeser Converter. - */ -public class UpdateNotificationConverter - extends StdConverter { - - @Override - public UpdateNotification convert(JsonNode value) { - return deserialize(value); - } - - /** - * JsonNode convert into UpdateNotification. - * @param node the "params" node of UpdateNotification JsonNode - */ - private UpdateNotification deserialize(JsonNode node) { - if (node.isArray()) { - if (node.size() == 2) { - return new UpdateNotification(node.get(0).asText(), node.get(1)); - } - } - return null; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/package-info.java deleted file mode 100644 index eb2e7c66..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/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. - */ - -/** - * OVSDB JSON utilities. - */ -package org.onosproject.ovsdb.rfc.notation.json; diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/package-info.java deleted file mode 100644 index 1900dfef..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/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. - */ - -/** - * OVSDB primitives. - */ -package org.onosproject.ovsdb.rfc.notation; diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Abort.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Abort.java deleted file mode 100644 index 8751f70e..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Abort.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.ovsdb.rfc.operations; - -import org.onosproject.ovsdb.rfc.schema.TableSchema; - -/** - * assert operation.Refer to RFC 7047 Section 5.2. - */ -public final class Abort implements Operation { - - private final String op; - - /** - * Constructs a Abort object. - */ - public Abort() { - this.op = Operations.ABORT.op(); - } - - @Override - public String getOp() { - return op; - } - - @Override - public TableSchema getTableSchema() { - return null; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Assert.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Assert.java deleted file mode 100644 index 92a63361..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Assert.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.ovsdb.rfc.operations; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.ovsdb.rfc.schema.TableSchema; - -/** - * assert operation.Refer to RFC 7047 Section 5.2. - */ -public final class Assert implements Operation { - - private final String op; - private final String lock; - - /** - * Constructs a Assert object. - * @param lock the lock member of assert operation - */ - public Assert(String lock) { - checkNotNull(lock, "lock cannot be null"); - this.op = Operations.ASSERT.op(); - this.lock = lock; - } - - /** - * Returns the lock member of assert operation. - * @return the lock member of assert operation - */ - public String getLock() { - return lock; - } - - @Override - public String getOp() { - return op; - } - - @Override - public TableSchema getTableSchema() { - return null; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Comment.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Comment.java deleted file mode 100644 index 2853e1ff..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Comment.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.ovsdb.rfc.operations; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.ovsdb.rfc.schema.TableSchema; - -/** - * comment operation.Refer to RFC 7047 Section 5.2. - */ -public final class Comment implements Operation { - - private final String op; - private final String comment; - - /** - * Constructs a Comment object. - * @param comment the comment member of comment operation - */ - public Comment(String comment) { - checkNotNull(comment, "comment cannot be null"); - this.op = Operations.COMMENT.op(); - this.comment = comment; - } - - /** - * Returns the comment member of comment operation. - * @return the comment member of comment operation - */ - public String getComment() { - return comment; - } - - @Override - public String getOp() { - return op; - } - - @Override - public TableSchema getTableSchema() { - return null; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Commit.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Commit.java deleted file mode 100644 index c87fb6e9..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Commit.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.ovsdb.rfc.operations; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.ovsdb.rfc.schema.TableSchema; - -/** - * commit operation.Refer to RFC 7047 Section 5.2. - */ -public final class Commit implements Operation { - - private final String op; - private final Boolean durable; - - /** - * Constructs a Commit object. - * @param durable the durable member of commit operation - */ - public Commit(Boolean durable) { - checkNotNull(durable, "durable cannot be null"); - this.op = Operations.COMMIT.op(); - this.durable = durable; - } - - /** - * Returns the durable member of commit operation. - * @return the durable member of commit operation - */ - public Boolean isDurable() { - return durable; - } - - @Override - public String getOp() { - return op; - } - - @Override - public TableSchema getTableSchema() { - return null; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Delete.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Delete.java deleted file mode 100644 index 08b5e522..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Delete.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.ovsdb.rfc.operations; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; - -import org.onosproject.ovsdb.rfc.notation.Condition; -import org.onosproject.ovsdb.rfc.schema.TableSchema; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * delete operation.Refer to RFC 7047 Section 5.2. - */ -public final class Delete implements Operation { - - @JsonIgnore - private final TableSchema tableSchema; - private final String op; - private final List where; - - /** - * Constructs a Delete object. - * @param schema TableSchema entity - * @param where the List of Condition entity - */ - public Delete(TableSchema schema, List where) { - checkNotNull(schema, "TableSchema cannot be null"); - checkNotNull(where, "where is not null"); - this.tableSchema = schema; - this.op = Operations.DELETE.op(); - this.where = where; - } - - /** - * Returns the where member of delete operation. - * @return the where member of delete operation - */ - public List getWhere() { - return where; - } - - @Override - public String getOp() { - return op; - } - - @Override - public TableSchema getTableSchema() { - return tableSchema; - } - - /** - * For the use of serialization. - * @return the table member of update operation - */ - @JsonProperty - public String getTable() { - return tableSchema.name(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Insert.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Insert.java deleted file mode 100644 index 8545b43a..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Insert.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.ovsdb.rfc.operations; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Collection; -import java.util.Map; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.TableSchema; -import org.onosproject.ovsdb.rfc.utils.TransValueUtil; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.collect.Maps; - -/** - * insert operation.Refer to RFC 7047 Section 5.2. - */ -public final class Insert implements Operation { - - @JsonIgnore - private final TableSchema tableSchema; - private final String op; - @JsonProperty("uuid-name") - private final String uuidName; - private final Map row; - - /** - * Constructs a Insert object. - * @param schema TableSchema entity - * @param uuidName uuid-name - * @param row Row entity - */ - public Insert(TableSchema schema, String uuidName, Row row) { - checkNotNull(schema, "TableSchema cannot be null"); - checkNotNull(uuidName, "uuid name cannot be null"); - checkNotNull(row, "row cannot be null"); - this.tableSchema = schema; - this.op = Operations.INSERT.op(); - this.uuidName = uuidName; - this.row = Maps.newHashMap(); - generateOperationRow(row); - } - - /** - * Row entity convert into the row format of insert operation. Refer to RFC - * 7047 Section 5.2. - * @param row Row entity - */ - private void generateOperationRow(Row row) { - Collection columns = row.getColumns(); - for (Column column : columns) { - String columnName = column.columnName(); - Object value = column.data(); - Object formatValue = TransValueUtil.getFormatData(value); - this.row.put(columnName, formatValue); - } - } - - /** - * Returns the uuid-name member of insert operation. - * @return the uuid-name member of insert operation - */ - public String getUuidName() { - return uuidName; - } - - /** - * Returns the row member of insert operation. - * @return the row member of insert operation - */ - public Map getRow() { - return row; - } - - @Override - public String getOp() { - return op; - } - - @Override - public TableSchema getTableSchema() { - return tableSchema; - } - - /** - * For the use of serialization. - * @return the table member of update operation - */ - @JsonProperty - public String getTable() { - return tableSchema.name(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Mutate.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Mutate.java deleted file mode 100644 index b2827797..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Mutate.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.operations; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; - -import org.onosproject.ovsdb.rfc.notation.Condition; -import org.onosproject.ovsdb.rfc.notation.Mutation; -import org.onosproject.ovsdb.rfc.schema.TableSchema; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * mutate operation.Refer to RFC 7047 Section 5.2. - */ -public final class Mutate implements Operation { - - @JsonIgnore - private final TableSchema tableSchema; - private final String op; - private final List where; - private final List mutations; - - /** - * Constructs a Mutate object. - * @param schema TableSchema entity - * @param where the List of Condition entity - * @param mutations the List of Mutation entity - */ - public Mutate(TableSchema schema, List where, - List mutations) { - checkNotNull(schema, "TableSchema cannot be null"); - checkNotNull(mutations, "mutations cannot be null"); - checkNotNull(where, "where cannot be null"); - this.tableSchema = schema; - this.op = Operations.MUTATE.op(); - this.where = where; - this.mutations = mutations; - } - - /** - * Returns the mutations member of mutate operation. - * @return the mutations member of mutate operation - */ - public List getMutations() { - return mutations; - } - - /** - * Returns the where member of mutate operation. - * @return the where member of mutate operation - */ - public List getWhere() { - return where; - } - - @Override - public String getOp() { - return op; - } - - @Override - public TableSchema getTableSchema() { - return tableSchema; - } - - /** - * For the use of serialization. - * @return the table member of update operation - */ - @JsonProperty - public String getTable() { - return tableSchema.name(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Operation.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Operation.java deleted file mode 100644 index 3e2dff1f..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Operation.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.ovsdb.rfc.operations; - -import org.onosproject.ovsdb.rfc.schema.TableSchema; - -/** - * Operation interface. - */ -public interface Operation { - - /** - * Returns the op member of update operation. - * @return the op member of update operation - */ - String getOp(); - - /** - * Returns TableSchema entity. - * @return TableSchema entity - */ - TableSchema getTableSchema(); - - /** - * Operations must be "insert", "select", "update", "mutate", "delete", - * "commit", "abort", "comment", "assert". Refer to RFC 7047 Section 5.2. - */ - public enum Operations { - INSERT("insert"), SELECT("select"), UPDATE("update"), MUTATE("mutate"), - DELETE("delete"), COMMIT("commit"), ABORT("abort"), COMMENT("comment"), - ASSERT("assert"); - - private String op; - - private Operations(String op) { - this.op = op; - } - - /** - * Returns the op for Operations. - * @return the op - */ - public String op() { - return op; - } - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Select.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Select.java deleted file mode 100644 index ba1ec74f..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Select.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.operations; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; - -import org.onosproject.ovsdb.rfc.notation.Condition; -import org.onosproject.ovsdb.rfc.schema.TableSchema; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * select operation.Refer to RFC 7047 Section 5.2. - */ -public final class Select implements Operation { - - @JsonIgnore - private final TableSchema tableSchema; - private final String op; - private final List where; - private final List columns; - - /** - * Constructs a Select object. - * @param schema TableSchema entity - * @param where the List of Condition entity - * @param columns the List of column name - */ - public Select(TableSchema schema, List where, List columns) { - checkNotNull(schema, "TableSchema cannot be null"); - checkNotNull(where, "where cannot be null"); - checkNotNull(columns, "columns cannot be null"); - this.tableSchema = schema; - this.op = Operations.SELECT.op(); - this.where = where; - this.columns = columns; - } - - /** - * Returns the columns member of select operation. - * @return the columns member of select operation - */ - public List getColumns() { - return columns; - } - - /** - * Returns the where member of select operation. - * @return the where member of select operation - */ - public List getWhere() { - return where; - } - - @Override - public String getOp() { - return op; - } - - @Override - public TableSchema getTableSchema() { - return tableSchema; - } - - /** - * For the use of serialization. - * @return the table member of update operation - */ - @JsonProperty - public String getTable() { - return tableSchema.name(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Update.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Update.java deleted file mode 100644 index 81a1cab1..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Update.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.ovsdb.rfc.operations; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Condition; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.TableSchema; -import org.onosproject.ovsdb.rfc.utils.TransValueUtil; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.collect.Maps; - -/** - * update operation.Refer to RFC 7047 Section 5.2. - */ -public final class Update implements Operation { - - @JsonIgnore - private final TableSchema tableSchema; - private final String op; - private final Map row; - private final List where; - - /** - * Constructs a Update object. - * @param schema TableSchema entity - * @param row Row entity - * @param where the List of Condition entity - */ - public Update(TableSchema schema, Row row, List where) { - checkNotNull(schema, "TableSchema cannot be null"); - checkNotNull(row, "row cannot be null"); - checkNotNull(where, "where cannot be null"); - this.tableSchema = schema; - this.op = Operations.UPDATE.op(); - this.row = Maps.newHashMap(); - this.where = where; - generateOperationRow(row); - } - - /** - * Row entity convert into the row format of update operation. Refer to RFC - * 7047 Section 5.2. - * @param row Row entity - */ - private void generateOperationRow(Row row) { - Collection columns = row.getColumns(); - for (Column column : columns) { - String columnName = column.columnName(); - Object value = column.data(); - Object formatValue = TransValueUtil.getFormatData(value); - this.row.put(columnName, formatValue); - } - } - - /** - * Returns the row member of update operation. - * @return the row member of update operation - */ - public Map getRow() { - return row; - } - - /** - * Returns the where member of update operation. - * @return the where member of update operation - */ - public List getWhere() { - return where; - } - - @Override - public String getOp() { - return op; - } - - @Override - public TableSchema getTableSchema() { - return tableSchema; - } - - /** - * For the use of serialization. - * @return the table member of update operation - */ - @JsonProperty - public String getTable() { - return tableSchema.name(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/package-info.java deleted file mode 100644 index 77fb9f3c..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/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. - */ - -/** - * OVSDB operations. - */ -package org.onosproject.ovsdb.rfc.operations; diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/ColumnSchema.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/ColumnSchema.java deleted file mode 100644 index 23eb2be7..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/ColumnSchema.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.ovsdb.rfc.schema; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.ovsdb.rfc.schema.type.ColumnType; - -/** - * A schema for the column represented by column-schema. - */ -public final class ColumnSchema { - private final String name; - private final ColumnType type; - - /** - * Constructs a ColumnSchema object. - * @param name the column name - * @param columnType the column type - */ - public ColumnSchema(String name, ColumnType columnType) { - checkNotNull(name, "name cannot be null"); - checkNotNull(columnType, "column type cannot be null"); - this.name = name; - this.type = columnType; - } - - /** - * Returns the name of column. - * @return the name of column - */ - public String name() { - return name; - } - - /** - * Returns the type of column. - * @return the type of column - */ - public ColumnType type() { - return type; - } - - @Override - public int hashCode() { - return Objects.hash(name, type); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ColumnSchema) { - final ColumnSchema other = (ColumnSchema) obj; - return Objects.equals(this.name, other.name) - && Objects.equals(this.type, other.type); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("name", name).add("type", type) - .toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/DatabaseSchema.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/DatabaseSchema.java deleted file mode 100644 index 298afc68..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/DatabaseSchema.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.ovsdb.rfc.schema; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -/** - * A schema for the database represented by database-schema, which consists of - * a set of tables. - */ -public final class DatabaseSchema { - - private final String name; - private final String version; - private final Map tableSchemas; - - /** - * Constructs a DatabaseSchema object. - * @param name the name of database - * @param version the version of database - * @param tableSchemas a map of TableSchema - */ - public DatabaseSchema(String name, String version, - Map tableSchemas) { - checkNotNull(name, "name cannot be null"); - checkNotNull(version, "version cannot be null"); - checkNotNull(tableSchemas, "tableSchemas cannot be null"); - this.name = name; - this.version = version; - this.tableSchemas = tableSchemas; - } - - /** - * Returns the name of database. - * @return the name of database - */ - public String name() { - return name; - } - - /** - * Returns the version of database. - * @return the version of database - */ - public String version() { - return version; - } - - /** - * Returns a map of TableSchema. - * @return a map of TableSchema - */ - public Map tableSchemas() { - return tableSchemas; - } - - /** - * Returns a set of table name. - * @return a set of table name - */ - public Set getTableNames() { - return this.tableSchemas.keySet(); - } - - /** - * Determine whether contain the table. - * @param tableName table name - * @return boolean - */ - public boolean hasTable(String tableName) { - return this.getTableNames().contains(tableName); - } - - /** - * Returns the TableSchema whose name is the tableName. - * @param tableName table name - * @return TableSchema - */ - public TableSchema getTableSchema(String tableName) { - TableSchema table = tableSchemas.get(tableName); - return table; - } - - /** - * generate initialization columns in each table namely _uuid and _version. - */ - public void generateInitializationColumns() { - for (TableSchema tableSchema : tableSchemas.values()) { - tableSchema.generateInitializationColumns(); - } - } - - @Override - public int hashCode() { - return Objects.hash(name, version, tableSchemas); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DatabaseSchema) { - final DatabaseSchema other = (DatabaseSchema) obj; - return Objects.equals(this.name, other.name) - && Objects.equals(this.version, other.version) - && Objects.equals(this.tableSchemas, other.tableSchemas); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("name", name).add("version", version) - .add("tableSchemas", tableSchemas).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/TableSchema.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/TableSchema.java deleted file mode 100644 index 248745dd..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/TableSchema.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.schema; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.schema.type.AtomicColumnType; -import org.onosproject.ovsdb.rfc.schema.type.UuidBaseType; - -/** - * A schema for the table represented by table-schema, which consists of a set - * of columns. - */ -public final class TableSchema { - - private final String name; - private final Map columnSchemas; - - /** - * Constructs a TableSchema object. - * @param name the name of table - * @param columnSchemas a map of ColumnSchema - */ - public TableSchema(String name, Map columnSchemas) { - checkNotNull(name, "name cannot be null"); - checkNotNull(columnSchemas, "columnSchemas cannot be null"); - this.name = name; - this.columnSchemas = columnSchemas; - } - - /** - * Returns the name of table. - * @return the name of table - */ - public String name() { - return name; - } - - /** - * Returns a map of ColumnSchema. - * @return a map of ColumnSchema - */ - public Map columnSchemas() { - return this.columnSchemas; - } - - /** - * Returns a set of column name. - * @return a set of column name - */ - public Set getColumnNames() { - return this.columnSchemas.keySet(); - } - - /** - * Determine whether contain the column. - * @param columnName column name - * @return boolean - */ - public boolean hasColumn(String columnName) { - return this.getColumnNames().contains(columnName); - } - - /** - * Returns the ColumnSchema whose name is the columnName. - * @param columnName column name - * @return ColumnSchema - */ - public ColumnSchema getColumnSchema(String columnName) { - return this.columnSchemas.get(columnName); - } - - /** - * Refer to RFC 7047 Section 3.2. generate initialization columns in each - * table namely _uuid and _version. - */ - public void generateInitializationColumns() { - columnSchemas - .put("_uuid", - new ColumnSchema("_uuid", - new AtomicColumnType(new UuidBaseType()))); - columnSchemas - .put("_version", - new ColumnSchema("_version", - new AtomicColumnType(new UuidBaseType()))); - } - - @Override - public int hashCode() { - return Objects.hash(name, columnSchemas); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TableSchema) { - final TableSchema other = (TableSchema) obj; - return Objects.equals(this.name, other.name) - && Objects.equals(this.columnSchemas, other.columnSchemas); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("name", name) - .add("columnSchemas", columnSchemas).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/package-info.java deleted file mode 100644 index 9a27037c..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/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. - */ - -/** - * OVSDB schema. - */ -package org.onosproject.ovsdb.rfc.schema; diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/AtomicColumnType.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/AtomicColumnType.java deleted file mode 100644 index 881755ae..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/AtomicColumnType.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.ovsdb.rfc.schema.type; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * The "atomic-type" specifies the type of data stored in this column. Refer - * to RFC 7047 Section 3.2. - */ -public final class AtomicColumnType implements ColumnType { - private final BaseType baseType; - private final int min; - private final int max; - - /** - * Constructs a AtomicColumnType object. - * @param baseType BaseType entity - */ - public AtomicColumnType(BaseType baseType) { - checkNotNull(baseType, "BaseType cannot be null"); - this.baseType = baseType; - this.min = 1; - this.max = 1; - } - - /** - * Constructs a AtomicColumnType object. - * @param baseType BaseType entity - * @param min min constraint - * @param max max constraint - */ - public AtomicColumnType(BaseType baseType, int min, int max) { - checkNotNull(baseType, "BaseType cannot be null"); - this.baseType = baseType; - this.min = min; - this.max = max; - } - - /** - * Get baseType. - * @return baseType - */ - public BaseType baseType() { - return baseType; - } - - /** - * Get min. - * @return min - */ - public int min() { - return min; - } - - /** - * Get max. - * @return max - */ - public int max() { - return max; - } - - @Override - public int hashCode() { - return Objects.hash(baseType, min, max); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof AtomicColumnType) { - final AtomicColumnType other = (AtomicColumnType) obj; - return Objects.equals(this.baseType, other.baseType) - && Objects.equals(this.min, other.min) - && Objects.equals(this.max, other.max); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("baseType", baseType).add("min", min) - .add("max", max).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseType.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseType.java deleted file mode 100644 index d2614c12..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseType.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.schema.type; - -/** - * One of the strings "integer", "real", "boolean", "string", or "uuid", - * representing the specified scalar type. Refer to RFC 7047 Section 3.2. - */ -public interface BaseType { - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseTypeFactory.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseTypeFactory.java deleted file mode 100644 index 86dbb2e6..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseTypeFactory.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.schema.type; - -import java.util.Set; - -import org.onosproject.ovsdb.rfc.exception.AbnormalJsonNodeException; -import org.onosproject.ovsdb.rfc.schema.type.UuidBaseType.RefType; -import org.onosproject.ovsdb.rfc.utils.ObjectMapperUtil; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.collect.Sets; - -/** - * BaseType Factory class. - */ -public final class BaseTypeFactory { - - /** - * Constructs a BaseTypeFactory object. This class should not be - * instantiated. - */ - private BaseTypeFactory() { - } - - /** - * Create a BaseType from the JsonNode. - * @param baseTypeJson the BaseType JsonNode - * @param keyorval the key node or value node - * @return BaseType - */ - public static BaseType getBaseTypeFromJson(JsonNode baseTypeJson, String keyorval) { - if (baseTypeJson.isValueNode()) { - String type = baseTypeJson.asText().trim(); - return fromTypeStr(type); - } else { - if (!baseTypeJson.has(keyorval)) { - String message = "Abnormal BaseType JsonNode, it should contain 'key' or 'value' node but was not found" - + ObjectMapperUtil.convertToString(baseTypeJson); - throw new AbnormalJsonNodeException(message); - } - return fromJsonNode(baseTypeJson.get(keyorval)); - } - } - - /** - * Get BaseType by the type value of JsonNode. - * @param type the type value of JsonNode - * @return BaseType - */ - private static BaseType fromTypeStr(String type) { - switch (type) { - case "boolean": - return new BooleanBaseType(); - case "integer": - return new IntegerBaseType(); - case "real": - return new RealBaseType(); - case "string": - return new StringBaseType(); - case "uuid": - return new UuidBaseType(); - default: - return null; - } - } - - /** - * json like "string" or json like {"type" : "string", "enum": ["set", - * ["access", "native-tagged"]]}" for key or value. - * @param type JsonNode - */ - private static BaseType fromJsonNode(JsonNode type) { - if (type.isTextual()) { - return fromTypeStr(type.asText()); - } else if (type.isObject() && type.has("type")) { - String typeStr = type.get("type").asText(); - switch (typeStr) { - case "boolean": - return new BooleanBaseType(); - case "integer": - return getIntegerBaseType(type); - case "real": - return getRealBaseType(type); - case "string": - return getStringBaseType(type); - case "uuid": - return getUuidBaseType(type); - default: - return null; - } - } - return null; - } - - /** - * Get IntegerBaseType by the type value of JsonNode which contains the - * constraints. - * @param type the type value of JsonNode - * @return IntegerBaseType - */ - private static IntegerBaseType getIntegerBaseType(JsonNode type) { - int min = Integer.MIN_VALUE; - int max = Integer.MAX_VALUE; - Set enums = Sets.newHashSet(); - JsonNode node = type.get("minInteger"); - if (node != null) { - min = node.asInt(); - } - node = type.get("maxInteger"); - if (node != null) { - max = node.asInt(); - } - if (type.has("enum")) { - JsonNode anEnum = type.get("enum").get(1); - for (JsonNode n : anEnum) { - enums.add(n.asInt()); - } - } - return new IntegerBaseType(min, max, enums); - } - - /** - * Get RealBaseType by the type value of JsonNode which contains the - * constraints. - * @param type the type value of JsonNode - * @return RealBaseType - */ - private static RealBaseType getRealBaseType(JsonNode type) { - double min = Double.MIN_VALUE; - double max = Double.MAX_VALUE; - Set enums = Sets.newHashSet(); - JsonNode node = type.get("minReal"); - if (node != null) { - min = node.asDouble(); - } - node = type.get("maxReal"); - if (node != null) { - max = node.asDouble(); - } - if (type.has("enum")) { - JsonNode anEnum = type.get("enum").get(1); - for (JsonNode n : anEnum) { - enums.add(n.asDouble()); - } - } - return new RealBaseType(min, max, enums); - } - - /** - * Get StringBaseType by the type value of JsonNode which contains the - * constraints. - * @param type the type value of JsonNode - * @return StringBaseType - */ - private static StringBaseType getStringBaseType(JsonNode type) { - int minLength = Integer.MIN_VALUE; - int maxLength = Integer.MAX_VALUE; - Set enums = Sets.newHashSet(); - JsonNode node = type.get("minLength"); - if (node != null) { - minLength = node.asInt(); - } - node = type.get("maxLength"); - if (node != null) { - maxLength = node.asInt(); - } - if (type.has("enum")) { - JsonNode enumVal = type.get("enum"); - if (enumVal.isArray()) { - JsonNode anEnum = enumVal.get(1); - for (JsonNode n : anEnum) { - enums.add(n.asText()); - } - } else if (enumVal.isTextual()) { - enums.add(enumVal.asText()); - } - } - return new StringBaseType(minLength, maxLength, enums); - } - - /** - * Get UuidBaseType by the type value of JsonNode which contains the - * constraints. - * @param type the type value of JsonNode - * @return UuidBaseType - */ - private static UuidBaseType getUuidBaseType(JsonNode type) { - String refTable = null; - String refType = RefType.STRONG.refType(); - JsonNode node = type.get("refTable"); - if (node != null) { - refTable = node.asText(); - } - node = type.get("refType"); - if (node != null) { - refType = node.asText(); - } - return new UuidBaseType(refTable, refType); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BooleanBaseType.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BooleanBaseType.java deleted file mode 100644 index d42337a5..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BooleanBaseType.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.schema.type; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * One of the strings "integer", "real", "boolean", "string", or "uuid", - * representing the specified scalar type. Refer to RFC 7047 Section 3.2. - * Because BooleanBaseType has no constraint conditions, and in order to be - * consistent with other BaseType, so this class is empty except for the - * toString method. - */ -public final class BooleanBaseType implements BaseType { - - @Override - public String toString() { - return toStringHelper(this).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnType.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnType.java deleted file mode 100644 index 20f1bbac..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnType.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.schema.type; - -/** - * The "type" specifies the type of data stored in this column. Refer to RFC - * 7047 Section 3.2. - */ -public interface ColumnType { - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java deleted file mode 100644 index 47b34a6b..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.schema.type; - -import org.onosproject.ovsdb.rfc.exception.AbnormalJsonNodeException; -import org.onosproject.ovsdb.rfc.utils.ObjectMapperUtil; - -import com.fasterxml.jackson.databind.JsonNode; - -/** - * ColumnType Factory class. - */ -public final class ColumnTypeFactory { - - /** - * Constructs a ColumnTypeFactory object. This class should not be - * instantiated. - */ - private ColumnTypeFactory() { - } - - /** - * Those Json's key/value pairs. - */ - public enum Type { - KEY("key"), VALUE("value"); - - private final String type; - - private Type(String type) { - this.type = type; - } - - /** - * Returns the type for Type. - * @return the type - */ - public String type() { - return type; - } - } - - /** - * JsonNode like - * "flow_tables":{"type":{"key":{"maxInteger":254,"minInteger":0,"type": - * "integer"},"min":0,"value":{"type":"uuid","refTable":"Flow_Table"},"max": - * "unlimited"}}. - * @param columnTypeJson the ColumnType JsonNode - * @return ColumnType - */ - public static ColumnType getColumnTypeFromJson(JsonNode columnTypeJson) { - if (!columnTypeJson.isObject() || !columnTypeJson.has(Type.VALUE.type())) { - return createAtomicColumnType(columnTypeJson); - } else if (!columnTypeJson.isValueNode() && columnTypeJson.has(Type.VALUE.type())) { - return createKeyValuedColumnType(columnTypeJson); - } - String message = "Abnormal ColumnType JsonNode, it should be AtomicColumnType or KeyValuedColumnType" - + ObjectMapperUtil.convertToString(columnTypeJson); - throw new AbnormalJsonNodeException(message); - } - - /** - * Create AtomicColumnType entity. - * @param json JsonNode - * @return AtomicColumnType entity - */ - private static AtomicColumnType createAtomicColumnType(JsonNode json) { - BaseType baseType = BaseTypeFactory.getBaseTypeFromJson(json, Type.KEY.type()); - int min = 1; - int max = 1; - JsonNode node = json.get("min"); - if (node != null && node.isNumber()) { - min = node.asInt(); - } - node = json.get("max"); - if (node != null) { - if (node.isNumber()) { - max = node.asInt(); - } else if (node.isTextual() && "unlimited".equals(node.asText())) { - max = Integer.MAX_VALUE; - } - } - return new AtomicColumnType(baseType, min, max); - } - - /** - * Create KeyValuedColumnType entity. - * @param json JsonNode - * @return KeyValuedColumnType entity - */ - private static KeyValuedColumnType createKeyValuedColumnType(JsonNode json) { - BaseType keyType = BaseTypeFactory.getBaseTypeFromJson(json, Type.KEY.type()); - BaseType valueType = BaseTypeFactory.getBaseTypeFromJson(json, Type.VALUE.type()); - int min = 1; - int max = 1; - JsonNode node = json.get("min"); - if (node != null && node.isNumber()) { - min = node.asInt(); - } - node = json.get("max"); - if (node != null) { - if (node.isNumber()) { - max = node.asInt(); - } else if (node.isTextual() && "unlimited".equals(node.asText())) { - max = Integer.MAX_VALUE; - } - } - return new KeyValuedColumnType(keyType, valueType, min, max); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/IntegerBaseType.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/IntegerBaseType.java deleted file mode 100644 index 91939515..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/IntegerBaseType.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.ovsdb.rfc.schema.type; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; -import java.util.Set; - -import com.google.common.collect.Sets; - -/** - * One of the strings "integer", "real", "boolean", "string", or "uuid", - * representing the specified scalar type. Refer to RFC 7047 Section 3.2. - */ -public final class IntegerBaseType implements BaseType { - private final int min; - private final int max; - private final Set enums; - - /** - * Constructs a IntegerBaseType object. - */ - public IntegerBaseType() { - this.min = Integer.MIN_VALUE; - this.max = Integer.MAX_VALUE; - this.enums = Sets.newHashSet(); - } - - /** - * Constructs a IntegerBaseType object. - * @param min min constraint - * @param max max constraint - * @param enums enums constraint - */ - public IntegerBaseType(int min, int max, Set enums) { - this.min = min; - this.max = max; - this.enums = enums; - } - - /** - * Get min. - * @return min - */ - public int min() { - return min; - } - - /** - * Get max. - * @return max - */ - public int max() { - return max; - } - - /** - * Get enums. - * @return enums - */ - public Set enums() { - return enums; - } - - @Override - public int hashCode() { - return Objects.hash(min, max, enums); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IntegerBaseType) { - final IntegerBaseType other = (IntegerBaseType) obj; - return Objects.equals(this.enums, other.enums) - && Objects.equals(this.min, other.min) - && Objects.equals(this.max, other.max); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("min", min).add("max", max) - .add("enums", enums).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/KeyValuedColumnType.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/KeyValuedColumnType.java deleted file mode 100644 index 8407457a..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/KeyValuedColumnType.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.ovsdb.rfc.schema.type; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * a JSON object that describes the type of a database column, with key and - * value. Refer to RFC 7047 Section 3.2. - */ -public final class KeyValuedColumnType implements ColumnType { - private final BaseType keyType; - private final BaseType valueType; - private final int min; - private final int max; - - /** - * Constructs a KeyValuedColumnType object. - * @param keyType BaseType entity - * @param valueType BaseType entity - * @param min min constraint - * @param max max constraint - */ - public KeyValuedColumnType(BaseType keyType, BaseType valueType, int min, - int max) { - checkNotNull(keyType, "keyType cannot be null"); - checkNotNull(valueType, "valueType cannot be null"); - this.keyType = keyType; - this.valueType = valueType; - this.min = min; - this.max = max; - } - - /** - * Get keyType. - * @return keyType - */ - public BaseType keyType() { - return keyType; - } - - /** - * Get valueType. - * @return valueType - */ - public BaseType valueType() { - return valueType; - } - - /** - * Get min. - * @return min - */ - public int min() { - return min; - } - - /** - * Get max. - * @return max - */ - public int max() { - return max; - } - - @Override - public int hashCode() { - return Objects.hash(keyType, valueType, min, max); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof KeyValuedColumnType) { - final KeyValuedColumnType other = (KeyValuedColumnType) obj; - return Objects.equals(this.keyType, other.keyType) - && Objects.equals(this.valueType, other.valueType) - && Objects.equals(this.min, other.min) - && Objects.equals(this.max, other.max); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("keyType", keyType) - .add("valueType", valueType).add("min", min).add("max", max) - .toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/RealBaseType.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/RealBaseType.java deleted file mode 100644 index 6704e30a..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/RealBaseType.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.ovsdb.rfc.schema.type; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; -import java.util.Set; - -import com.google.common.collect.Sets; - -/** - * One of the strings "integer", "real", "boolean", "string", or "uuid", - * representing the specified scalar type. Refer to RFC 7047 Section 3.2. - */ -public final class RealBaseType implements BaseType { - private final double min; - private final double max; - private final Set enums; - - /** - * Constructs a RealBaseType object. - */ - public RealBaseType() { - this.min = Double.MIN_VALUE; - this.max = Double.MAX_VALUE; - this.enums = Sets.newHashSet(); - } - - /** - * Constructs a RealBaseType object. - * @param min min constraint - * @param max max constraint - * @param enums enums constraint - */ - public RealBaseType(double min, double max, Set enums) { - this.min = min; - this.max = max; - this.enums = enums; - } - - /** - * Get min. - * @return min - */ - public double getMin() { - return min; - } - - /** - * Get max. - * @return max - */ - public double getMax() { - return max; - } - - /** - * Get enums. - * @return enums - */ - public Set getEnums() { - return enums; - } - - @Override - public int hashCode() { - return Objects.hash(min, max, enums); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof RealBaseType) { - final RealBaseType other = (RealBaseType) obj; - return Objects.equals(this.enums, other.enums) - && Objects.equals(this.min, other.min) - && Objects.equals(this.max, other.max); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("min", min).add("max", max) - .add("enums", enums).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/StringBaseType.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/StringBaseType.java deleted file mode 100644 index 96d2f739..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/StringBaseType.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.ovsdb.rfc.schema.type; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; -import java.util.Set; - -import com.google.common.collect.Sets; - -/** - * One of the strings "integer", "real", "boolean", "string", or "uuid", - * representing the specified scalar type. Refer to RFC 7047 Section 3.2. - */ -public final class StringBaseType implements BaseType { - private final int minLength; - private final int maxLength; - private final Set enums; - - /** - * Constructs a StringBaseType object. - */ - public StringBaseType() { - this.minLength = Integer.MIN_VALUE; - this.maxLength = Integer.MAX_VALUE; - this.enums = Sets.newHashSet(); - } - - /** - * Constructs a StringBaseType object. - * @param minLength minLength constraint - * @param maxLength maxLength constraint - * @param enums enums constraint - */ - public StringBaseType(int minLength, int maxLength, Set enums) { - this.minLength = minLength; - this.maxLength = maxLength; - this.enums = enums; - } - - /** - * Get minLength. - * @return minLength - */ - public int getMinLength() { - return minLength; - } - - /** - * Get maxLength. - * @return maxLength - */ - public int getMaxLength() { - return maxLength; - } - - /** - * Get enums. - * @return enums - */ - public Set getEnums() { - return enums; - } - - @Override - public int hashCode() { - return Objects.hash(minLength, maxLength, enums); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof StringBaseType) { - final StringBaseType other = (StringBaseType) obj; - return Objects.equals(this.enums, other.enums) - && Objects.equals(this.minLength, other.minLength) - && Objects.equals(this.maxLength, other.maxLength); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("minLength", minLength) - .add("maxLength", maxLength).add("enums", enums).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/UuidBaseType.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/UuidBaseType.java deleted file mode 100644 index 46e0d9fa..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/UuidBaseType.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.ovsdb.rfc.schema.type; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * One of the strings "integer", "real", "boolean", "string", or "uuid", - * representing the specified scalar type. Refer to RFC 7047 Section 3.2. - */ -public final class UuidBaseType implements BaseType { - /** - * RefType is strong or weak. refer to base-type of RFC 7047 Section 3.2. - */ - public enum RefType { - STRONG("strong"), WEAK("weak"); - - private String refType; - - private RefType(String refType) { - this.refType = refType; - } - - /** - * Returns the refType for RefType. - * @return the refType - */ - public String refType() { - return refType; - } - } - - private final String refTable; - private final String refType; - - /** - * Constructs a UuidBaseType object. - */ - public UuidBaseType() { - this.refTable = null; - this.refType = RefType.STRONG.refType(); - } - - /** - * Constructs a UuidBaseType object. - * @param refTable refTable constraint - * @param refType refType constraint - */ - public UuidBaseType(String refTable, String refType) { - checkNotNull(refType, "refType cannot be null"); - this.refTable = refTable; - this.refType = refType; - } - - /** - * Get refTable. - * @return refTable - */ - public String getRefTable() { - return refTable; - } - - /** - * Get refType. - * @return refType - */ - public String getRefType() { - return refType; - } - - @Override - public int hashCode() { - return Objects.hash(refTable, refType); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof UuidBaseType) { - final UuidBaseType other = (UuidBaseType) obj; - return Objects.equals(this.refTable, other.refTable) - && Objects.equals(this.refType, other.refType); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("refTable", refTable) - .add("refType", refType).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/package-info.java deleted file mode 100644 index eade2e28..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/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. - */ - -/** - * OVSDB schema types. - */ -package org.onosproject.ovsdb.rfc.schema.type; diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Bridge.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Bridge.java deleted file mode 100644 index 0b5ffeff..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Bridge.java +++ /dev/null @@ -1,560 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.OvsdbSet; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -import java.util.Map; -import java.util.Set; - -/** - * This class provides operations of Bridge Table. - */ -public class Bridge extends AbstractOvsdbTableService { - - /** - * Bridge table column name. - */ - public enum BridgeColumn { - NAME("name"), DATAPATHTYPE("datapath_type"), DATAPATHID("datapath_id"), - STPENABLE("stpenable"), PORTS("ports"), MIRRORS("mirrors"), - NETFLOW("netflow"), SFLOW("sflow"), IPFIX("ipfix"), - CONTROLLER("controller"), PROTOCOLS("protocols"), - FAILMODE("fail_mode"), STATUS("status"), OTHERCONFIG("other_config"), - EXTERNALIDS("external_ids"), FLOODVLANS("flood_vlans"), - FLOWTABLES("flow_tables"); - - private final String columnName; - - private BridgeColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for BridgeColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a Bridge object. Generate Bridge Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Bridge(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.BRIDGE, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "name" from the Row entity of - * attributes. - * @return the Column entity which column name is "name" - */ - public Column getNameColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.NAME - .columnName(), - "getNameColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "name" to the Row entity of - * attributes. - * @param name the column data which column name is "name" - */ - public void setName(String name) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.NAME - .columnName(), - "setName", - VersionNum.VERSION100); - super.setDataHandler(columndesc, name); - } - - /** - * Get the column data which column name is "name" from the Row entity of - * attributes. - * @return the column data which column name is "name" - */ - public String getName() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.NAME - .columnName(), - "getName", - VersionNum.VERSION100); - return (String) super.getDataHandler(columndesc); - } - - /** - * Get the Column entity which column name is "datapath_type" from the Row - * entity of attributes. - * @return the Column entity which column name is "datapath_type" - */ - public Column getDatapathTypeColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.DATAPATHTYPE - .columnName(), - "getDatapathTypeColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "datapath_type" to the Row - * entity of attributes. - * @param datapathType the column data which column name is "datapath_type" - */ - public void setDatapathType(String datapathType) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.DATAPATHTYPE - .columnName(), - "setDatapathType", - VersionNum.VERSION100); - super.setDataHandler(columndesc, datapathType); - } - - /** - * Get the Column entity which column name is "datapath_id" from the Row - * entity of attributes. - * @return the Column entity which column name is "datapath_id" - */ - public Column getDatapathIdColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.DATAPATHID - .columnName(), - "getDatapathIdColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "datapath_id" to the Row entity - * of attributes. - * @param datapathId the column data which column name is "datapath_id" - */ - public void setDatapathId(Set datapathId) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.DATAPATHID - .columnName(), - "setDatapathId", - VersionNum.VERSION100); - super.setDataHandler(columndesc, datapathId); - } - - /** - * Get the Column entity which column name is "stpenable" from the Row - * entity of attributes. - * @return the Column entity which column name is "stpenable" - */ - public Column getStpEnableColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.STPENABLE - .columnName(), - "getStpEnableColumn", - VersionNum.VERSION620); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "stpenable" to the Row entity of - * attributes. - * @param stpenable the column data which column name is "stpenable" - */ - public void setStpEnable(Boolean stpenable) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.STPENABLE - .columnName(), - "setStpEnable", - VersionNum.VERSION620); - super.setDataHandler(columndesc, stpenable); - } - - /** - * Get the Column entity which column name is "ports" from the Row entity of - * attributes. - * @return the Column entity which column name is "ports" - */ - public Column getPortsColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.PORTS - .columnName(), - "getPortsColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "ports" to the Row entity of - * attributes. - * @param ports the column data which column name is "ports" - */ - public void setPorts(Set ports) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.PORTS - .columnName(), - "setPorts", - VersionNum.VERSION100); - super.setDataHandler(columndesc, ports); - } - - /** - * Get the Column entity which column name is "mirrors" from the Row entity - * of attributes. - * @return the Column entity which column name is "mirrors" - */ - public Column getMirrorsColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.MIRRORS - .columnName(), - "getMirrorsColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "mirrors" to the Row entity of - * attributes. - * @param mirrors the column data which column name is "mirrors" - */ - public void setMirrors(Set mirrors) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.MIRRORS - .columnName(), - "setMirrors", - VersionNum.VERSION100); - super.setDataHandler(columndesc, mirrors); - } - - /** - * Get the Column entity which column name is "netflow" from the Row entity - * of attributes. - * @return the Column entity which column name is "netflow" - */ - public Column getNetflowColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.NETFLOW - .columnName(), - "getNetflowColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "netflow" to the Row entity of - * attributes. - * @param netflow the column data which column name is "netflow" - */ - public void setNetflow(Set netflow) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.NETFLOW - .columnName(), - "setNetflow", - VersionNum.VERSION100); - super.setDataHandler(columndesc, netflow); - } - - /** - * Get the Column entity which column name is "sflow" from the Row entity of - * attributes. - * @return the Column entity which column name is "sflow" - */ - public Column getSflowColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.SFLOW - .columnName(), - "getSflowColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "sflow" to the Row entity of - * attributes. - * @param sflow the column data which column name is "sflow" - */ - public void setSflow(Set sflow) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.SFLOW - .columnName(), - "setSflow", - VersionNum.VERSION100); - super.setDataHandler(columndesc, sflow); - } - - /** - * Get the Column entity which column name is "ipfix" from the Row entity of - * attributes. - * @return the Column entity which column name is "ipfix" - */ - public Column getIpfixColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.IPFIX - .columnName(), - "getIpfixColumn", - VersionNum.VERSION710); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "ipfix" to the Row entity of - * attributes. - * @param ipfix the column data which column name is "ipfix" - */ - public void setIpfix(Set ipfix) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.IPFIX - .columnName(), - "setIpfix", - VersionNum.VERSION710); - super.setDataHandler(columndesc, ipfix); - } - - /** - * Get the Column entity which column name is "controller" from the Row - * entity of attributes. - * @return the Column entity which column name is "controller" - */ - public Column getControllerColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.CONTROLLER - .columnName(), - "getControllerColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "controller" to the Row entity - * of attributes. - * @param controller the column data which column name is "controller" - */ - public void setController(OvsdbSet controller) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.CONTROLLER - .columnName(), - "setController", - VersionNum.VERSION100); - super.setDataHandler(columndesc, controller); - } - - /** - * Get the Column entity which column name is "protocols" from the Row - * entity of attributes. - * @return the Column entity which column name is "protocols" - */ - public Column getProtocolsColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.PROTOCOLS - .columnName(), - "getProtocolsColumn", - VersionNum.VERSION6111); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "protocols" to the Row entity of - * attributes. - * @param protocols the column data which column name is "protocols" - */ - public void setProtocols(Set protocols) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.PROTOCOLS - .columnName(), - "setProtocols", - VersionNum.VERSION6111); - super.setDataHandler(columndesc, protocols); - } - - /** - * Get the Column entity which column name is "fail_mode" from the Row - * entity of attributes. - * @return the Column entity which column name is "fail_mode" - */ - public Column getFailModeColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.FAILMODE - .columnName(), - "getFailModeColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "fail_mode" to the Row entity of - * attributes. - * @param failMode the column data which column name is "fail_mode" - */ - public void setFailMode(Set failMode) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.FAILMODE - .columnName(), - "setFailMode", - VersionNum.VERSION100); - super.setDataHandler(columndesc, failMode); - } - - /** - * Get the Column entity which column name is "status" from the Row entity - * of attributes. - * @return the Column entity which column name is "status" - */ - public Column getStatusColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.STATUS - .columnName(), - "getStatusColumn", - VersionNum.VERSION620); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "status" to the Row entity of - * attributes. - * @param status the column data which column name is "status" - */ - public void setStatus(Map status) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.STATUS - .columnName(), - "setStatus", - VersionNum.VERSION620); - super.setDataHandler(columndesc, status); - } - - /** - * Get the Column entity which column name is "other_config" from the Row - * entity of attributes. - * @return the Column entity which column name is "other_config" - */ - public Column getOtherConfigColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.OTHERCONFIG - .columnName(), - "getOtherConfigColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "other_config" to the Row entity - * of attributes. - * @param otherConfig the column data which column name is "other_config" - */ - public void setOtherConfig(Map otherConfig) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.OTHERCONFIG - .columnName(), - "setOtherConfig", - VersionNum.VERSION100); - super.setDataHandler(columndesc, otherConfig); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity which column name is "external_ids" - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.EXTERNALIDS - .columnName(), - "getExternalIdsColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.EXTERNALIDS - .columnName(), - "setExternalIds", - VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } - - /** - * Get the Column entity which column name is "flood_vlans" from the Row - * entity of attributes. - * @return the Column entity which column name is "flood_vlans" - */ - public Column getFloodVlansColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.FLOODVLANS - .columnName(), - "getFloodVlansColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "flood_vlans" to the Row entity - * of attributes. - * @param vlans the column data which column name is "flood_vlans" - */ - public void setFloodVlans(Set vlans) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.FLOODVLANS - .columnName(), - "setFloodVlans", - VersionNum.VERSION100); - super.setDataHandler(columndesc, vlans); - } - - /** - * Get the Column entity which column name is "flow_tables" from the Row - * entity of attributes. - * @return the Column entity which column name is "flow_tables" - */ - public Column getFlowTablesColumn() { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.FLOWTABLES - .columnName(), - "getFlowTablesColumn", - VersionNum.VERSION650); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "flow_tables" to the Row entity - * of attributes. - * @param flowTables the column data which column name is "flow_tables" - */ - public void setFlowTables(Map flowTables) { - ColumnDescription columndesc = new ColumnDescription( - BridgeColumn.FLOWTABLES - .columnName(), - "setFlowTables", - VersionNum.VERSION650); - super.setDataHandler(columndesc, flowTables); - } - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Controller.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Controller.java deleted file mode 100644 index 912526cc..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Controller.java +++ /dev/null @@ -1,556 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Controller Table. - */ -public class Controller extends AbstractOvsdbTableService { - - /** - * Controller table column name. - */ - public enum ControllerColumn { - TARGET("target"), BURSTLIMIT("controller_burst_limit"), - RATELIMIT("controller_rate_limit"), CONNECTIONMODE("connection_mode"), - ENABLEASYNCMESSAGES("enable_async_messages"), - EXTERNALIDS("external_ids"), LOCALNETMASK("local_netmask"), - LOCALGATEWAY("local_gateway"), STATUS("status"), ROLE("role"), - INACTIVITYPROBE("inactivity_probe"), ISCONNECTED("is_connected"), - OTHERCONFIG("other_config"), MAXBACKOFF("max_backoff"), - LOCALIP("local_ip"), - DISCOVERUPDATERESOLVCONF("discover_update_resolv_conf"), - DISCOVERACCEPTREGEX("discover_accept_regex"); - - private final String columnName; - - private ControllerColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for ControllerColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a Controller object. Generate Controller Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Controller(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.CONTROLLER, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "target" from the Row entity - * of attributes. - * @return the Column entity which column name is "target" - */ - public Column getTargetColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.TARGET - .columnName(), - "getTargetColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "target" to the Row entity of - * attributes. - * @param target the column data which column name is "target" - */ - public void setTarget(String target) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.TARGET - .columnName(), - "setTarget", - VersionNum.VERSION100); - super.setDataHandler(columndesc, target); - } - - /** - * Get the Column entity which column name is "controller_burst_limit" from - * the Row entity of attributes. - * @return the Column entity which column name is "controller_burst_limit" - */ - public Column getBurstLimitColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.BURSTLIMIT - .columnName(), - "getBurstLimitColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "controller_burst_limit" to the - * Row entity of attributes. - * @param burstLimit the column data which column name is - * "controller_burst_limit" - */ - public void setBurstLimit(Long burstLimit) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.BURSTLIMIT - .columnName(), - "setBurstLimit", - VersionNum.VERSION100); - super.setDataHandler(columndesc, burstLimit); - } - - /** - * Get the Column entity which column name is "controller_rate_limit" from - * the Row entity of attributes. - * @return the Column entity which column name is "controller_rate_limit" - */ - public Column getRateLimitColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.RATELIMIT - .columnName(), - "getRateLimitColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "controller_rate_limit" to the - * Row entity of attributes. - * @param rateLimit the column data which column name is - * "controller_rate_limit" - */ - public void setRateLimit(Long rateLimit) { - ColumnDescription columndesc = new ColumnDescription( - "controller_rate_limit", - "setRateLimit", - VersionNum.VERSION100); - super.setDataHandler(columndesc, rateLimit); - } - - /** - * Get the Column entity which column name is "connection_mode" from the Row - * entity of attributes. - * @return the Column entity which column name is "connection_mode" - */ - public Column getConnectionModeColumn() { - ColumnDescription columndesc = new ColumnDescription( - "connection_mode", - "getConnectionModeColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "connection_mode" to the Row - * entity of attributes. - * @param connectionMode the column data which column name is - * "connection_mode" - */ - public void setConnectionMode(Set connectionMode) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.RATELIMIT - .columnName(), - "setConnectionMode", - VersionNum.VERSION100); - super.setDataHandler(columndesc, connectionMode); - } - - /** - * Get the Column entity which column name is "enable_async_messages" from - * the Row entity of attributes. - * @return the Column entity which column name is "enable_async_messages" - */ - public Column getEnableAsyncMessagesColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.ENABLEASYNCMESSAGES - .columnName(), - "getEnableAsyncMessagesColumn", - VersionNum.VERSION670); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "enable_async_messages" to the - * Row entity of attributes. - * @param enableAsyncMessages the column data which column name is - * "enable_async_messages" - */ - public void setEnableAsyncMessages(Set enableAsyncMessages) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.ENABLEASYNCMESSAGES - .columnName(), - "setEnableAsyncMessages", - VersionNum.VERSION670); - super.setDataHandler(columndesc, enableAsyncMessages); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity which column name is "external_ids" - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.EXTERNALIDS - .columnName(), - "getExternalIdsColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.EXTERNALIDS - .columnName(), - "setExternalIds", - VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } - - /** - * Get the Column entity which column name is "local_netmask" from the Row - * entity of attributes. - * @return the Column entity which column name is "local_netmask" - */ - public Column getLocalNetmaskColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.LOCALNETMASK - .columnName(), - "getLocalNetmaskColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "local_netmask" to the Row - * entity of attributes. - * @param localNetmask the column data which column name is "local_netmask" - */ - public void setLocalNetmask(Set localNetmask) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.LOCALNETMASK - .columnName(), - "setLocalNetmask", - VersionNum.VERSION100); - super.setDataHandler(columndesc, localNetmask); - } - - /** - * Get the Column entity which column name is "local_gateway" from the Row - * entity of attributes. - * @return the Column entity which column name is "local_gateway" - */ - public Column getLocalGatewayColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.LOCALGATEWAY - .columnName(), - "getLocalGatewayColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "local_gateway" to the Row - * entity of attributes. - * @param localGateway the column data which column name is "local_gateway" - */ - public void setLocalGateway(Set localGateway) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.LOCALGATEWAY - .columnName(), - "setLocalGateway", - VersionNum.VERSION100); - super.setDataHandler(columndesc, localGateway); - } - - /** - * Get the Column entity which column name is "status" from the Row entity - * of attributes. - * @return the Column entity which column name is "status" - */ - public Column getStatusColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.STATUS - .columnName(), - "getStatusColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "status" to the Row entity of - * attributes. - * @param status the column data which column name is "status" - */ - public void setStatus(Map status) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.STATUS - .columnName(), - "setStatus", - VersionNum.VERSION100); - super.setDataHandler(columndesc, status); - } - - /** - * Get the Column entity which column name is "role" from the Row entity of - * attributes. - * @return the Column entity which column name is "role" - */ - public Column getRoleColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.ROLE - .columnName(), - "getRoleColumn", - VersionNum.VERSION110); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "role" to the Row entity of - * attributes. - * @param role the column data which column name is "role" - */ - public void setRole(Set role) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.ROLE - .columnName(), - "setRole", - VersionNum.VERSION110); - super.setDataHandler(columndesc, role); - } - - /** - * Get the Column entity which column name is "inactivity_probe" from the - * Row entity of attributes. - * @return the Column entity which column name is "inactivity_probe" - */ - public Column getInactivityProbeColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.INACTIVITYPROBE - .columnName(), - "getInactivityProbeColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "inactivity_probe" to the Row - * entity of attributes. - * @param inactivityProbe the column data which column name is - * "inactivity_probe" - */ - public void setInactivityProbe(Set inactivityProbe) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.INACTIVITYPROBE - .columnName(), - "setInactivityProbe", - VersionNum.VERSION100); - super.setDataHandler(columndesc, inactivityProbe); - } - - /** - * Get the Column entity which column name is "is_connected" from the Row - * entity of attributes. - * @return the Column entity which column name is "is_connected" - */ - public Column getIsConnectedColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.ISCONNECTED - .columnName(), - "getIsConnectedColumn", - VersionNum.VERSION110); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "is_connected" to the Row entity - * of attributes. - * @param isConnected the column data which column name is "is_connected" - */ - public void setIsConnected(Boolean isConnected) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.ISCONNECTED - .columnName(), - "setIsConnected", - VersionNum.VERSION110); - super.setDataHandler(columndesc, isConnected); - } - - /** - * Get the Column entity which column name is "other_config" from the Row - * entity of attributes. - * @return the Column entity which column name is "other_config" - */ - public Column getOtherConfigColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.OTHERCONFIG - .columnName(), - "getOtherConfigColumn", - VersionNum.VERSION680); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "other_config" to the Row entity - * of attributes. - * @param otherConfig the column data which column name is "other_config" - */ - public void setOtherConfig(Map otherConfig) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.OTHERCONFIG - .columnName(), - "setOtherConfig", - VersionNum.VERSION680); - super.setDataHandler(columndesc, otherConfig); - } - - /** - * Get the Column entity which column name is "max_backoff" from the Row - * entity of attributes. - * @return the Column entity which column name is "max_backoff" - */ - public Column getMaxBackoffColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.MAXBACKOFF - .columnName(), - "getMaxBackoffColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "max_backoff" to the Row entity - * of attributes. - * @param maxBackoff the column data which column name is "max_backoff" - */ - public void setMaxBackoff(Long maxBackoff) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.MAXBACKOFF - .columnName(), - "setMaxBackoff", - VersionNum.VERSION100); - super.setDataHandler(columndesc, maxBackoff); - } - - /** - * Get the Column entity which column name is "local_ip" from the Row entity - * of attributes. - * @return the Column entity which column name is "local_ip" - */ - public Column getLocalIpColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.LOCALIP - .columnName(), - "getLocalIpColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "local_ip" to the Row entity of - * attributes. - * @param localIp the column data which column name is "local_ip" - */ - public void setLocalIp(Set localIp) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.LOCALIP - .columnName(), - "setLocalIp", - VersionNum.VERSION100); - super.setDataHandler(columndesc, localIp); - } - - /** - * Get the Column entity which column name is "discover_update_resolv_conf" - * from the Row entity of attributes. - * @return the Column entity which column name is - * "discover_update_resolv_conf" - */ - public Column getDiscoverUpdateResolvConfColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.DISCOVERUPDATERESOLVCONF - .columnName(), - "getDiscoverUpdateResolvConfColumn", - VersionNum.VERSION100, - VersionNum.VERSION300); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "discover_update_resolv_conf" to - * the Row entity of attributes. - * @param discoverUpdateResolvConf the column data which column name is - * "discover_update_resolv_conf" - */ - public void setDiscoverUpdateResolvConf(Set discoverUpdateResolvConf) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.DISCOVERUPDATERESOLVCONF - .columnName(), - "setDiscoverUpdateResolvConf", - VersionNum.VERSION100, - VersionNum.VERSION300); - super.setDataHandler(columndesc, discoverUpdateResolvConf); - } - - /** - * Get the Column entity which column name is "discover_accept_regex" from - * the Row entity of attributes. - * @return the Column entity which column name is "discover_accept_regex" - */ - public Column getDiscoverAcceptRegexColumn() { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.DISCOVERACCEPTREGEX - .columnName(), - "getDiscoverAcceptRegexColumn", - VersionNum.VERSION100, - VersionNum.VERSION300); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "discover_accept_regex" to the - * Row entity of attributes. - * @param discoverAcceptRegex the column data which column name is - * "discover_accept_regex" - */ - public void setDiscoverAcceptRegex(Set discoverAcceptRegex) { - ColumnDescription columndesc = new ColumnDescription( - ControllerColumn.DISCOVERACCEPTREGEX - .columnName(), - "setDiscoverAcceptRegex", - VersionNum.VERSION100, - VersionNum.VERSION300); - super.setDataHandler(columndesc, discoverAcceptRegex); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowSampleCollectorSet.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowSampleCollectorSet.java deleted file mode 100644 index 05a0354f..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowSampleCollectorSet.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import java.util.Map; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of FlowSampleCollectorSet Table. - */ -public class FlowSampleCollectorSet extends AbstractOvsdbTableService { - /** - * FlowSampleCollectorSet table column name. - */ - public enum FlowSampleCollectorSetColumn { - ID("id"), BRIDGE("bridge"), IPFIX("ipfix"), EXTERNALIDS("external_ids"); - - private final String columnName; - - private FlowSampleCollectorSetColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for FlowSampleCollectorSetColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a FlowSampleCollectorSet object. Generate - * FlowSampleCollectorSet Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public FlowSampleCollectorSet(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.FLOWSAMPLECOLLECTORSET, VersionNum.VERSION710); - } - - /** - * Get the Column entity which column name is "id" from the Row entity of - * attributes. - * @return the Column entity which column name is "id" - */ - public Column getIdColumn() { - ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.ID.columnName(), - "getIdColumn", VersionNum.VERSION710); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "id" to the Row entity of - * attributes. - * @param id the column data which column name is "id" - */ - public void setId(Long id) { - ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.ID.columnName(), - "setId", VersionNum.VERSION710); - super.setDataHandler(columndesc, id); - } - - /** - * Get the Column entity which column name is "bridge" from the Row entity - * of attributes. - * @return the Column entity which column name is "bridge" - */ - public Column getBridgeColumn() { - ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.BRIDGE.columnName(), - "getBridgeColumn", VersionNum.VERSION710); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "bridge" to the Row entity of - * attributes. - * @param bridge the column data which column name is "bridge" - */ - public void setBridge(UUID bridge) { - ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.BRIDGE.columnName(), - "setBridge", VersionNum.VERSION710); - super.setDataHandler(columndesc, bridge); - } - - /** - * Get the Column entity which column name is "ipfix" from the Row entity of - * attributes. - * @return the Column entity which column name is "ipfix" - */ - public Column getIpfixColumn() { - ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.IPFIX.columnName(), - "getIpfixColumn", VersionNum.VERSION710); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "ipfix" to the Row entity of - * attributes. - * @param ipfix the column data which column name is "ipfix" - */ - public void setIpfix(UUID ipfix) { - ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.IPFIX.columnName(), - "setIpfix", VersionNum.VERSION710); - super.setDataHandler(columndesc, ipfix); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity which column name is "external_ids" - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.EXTERNALIDS - .columnName(), - "getExternalIdsColumn", VersionNum.VERSION710); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.EXTERNALIDS - .columnName(), - "setExternalIds", VersionNum.VERSION710); - super.setDataHandler(columndesc, externalIds); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowTable.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowTable.java deleted file mode 100644 index ed1c217a..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowTable.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of FlowTable Table. - */ -public class FlowTable extends AbstractOvsdbTableService { - /** - * FlowTable table column name. - */ - public enum FlowTableColumn { - FLOWLIMIT("flow_limit"), OVERFLOWPOLICY("overflow_policy"), GROUPS("groups"), NAME("name"), - PREFIXES("prefixes"), EXTERNALIDS("external_ids"); - - private final String columnName; - - private FlowTableColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for FlowTableColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a FlowTable object. Generate FlowTable Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public FlowTable(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.FLWTABLE, VersionNum.VERSION650); - } - - /** - * Get the Column entity which column name is "flow_limit" from the Row - * entity of attributes. - * @return the Column entity which column name is "flow_limit" - */ - public Column getFlowLimitColumn() { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.FLOWLIMIT.columnName(), - "getFlowLimitColumn", VersionNum.VERSION650); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "flow_limit" to the Row entity - * of attributes. - * @param flowLimit the column data which column name is "flow_limit" - */ - public void setFlowLimit(Set flowLimit) { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.FLOWLIMIT.columnName(), - "setFlowLimit", VersionNum.VERSION650); - super.setDataHandler(columndesc, flowLimit); - } - - /** - * Get the Column entity which column name is "overflow_policy" from the Row - * entity of attributes. - * @return the Column entity which column name is "overflow_policy" - */ - public Column getOverflowPolicyColumn() { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.OVERFLOWPOLICY.columnName(), - "getOverflowPolicyColumn", VersionNum.VERSION650); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "overflow_policy" to the Row - * entity of attributes. - * @param overflowPolicy the column data which column name is - * "overflow_policy" - */ - public void setOverflowPolicy(Set overflowPolicy) { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.OVERFLOWPOLICY.columnName(), - "setOverflowPolicy", VersionNum.VERSION650); - super.setDataHandler(columndesc, overflowPolicy); - } - - /** - * Get the Column entity which column name is "groups" from the Row entity - * of attributes. - * @return the Column entity which column name is "groups" - */ - public Column getGroupsColumn() { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.GROUPS.columnName(), - "getGroupsColumn", VersionNum.VERSION650); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "groups" to the Row entity of - * attributes. - * @param groups the column data which column name is "groups" - */ - public void setGroups(Set groups) { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.GROUPS.columnName(), - "setGroups", VersionNum.VERSION650); - super.setDataHandler(columndesc, groups); - } - - /** - * Get the Column entity which column name is "name" from the Row entity of - * attributes. - * @return the Column entity which column name is "name" - */ - public Column getNameColumn() { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.NAME.columnName(), - "getNameColumn", VersionNum.VERSION650); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "name" to the Row entity of - * attributes. - * @param name the column data which column name is "name" - */ - public void setName(Set name) { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.NAME.columnName(), - "setName", - VersionNum.VERSION650); - super.setDataHandler(columndesc, name); - } - - /** - * Get the Column entity which column name is "prefixes" from the Row entity - * of attributes. - * @return the Column entity which column name is "prefixes" - */ - public Column getPrefixesColumn() { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.PREFIXES.columnName(), - "getPrefixesColumn", VersionNum.VERSION740); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "prefixes" to the Row entity of - * attributes. - * @param prefixes the column data which column name is "prefixes" - */ - public void setPrefixes(Set prefixes) { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.PREFIXES.columnName(), - "setPrefixes", VersionNum.VERSION740); - super.setDataHandler(columndesc, prefixes); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity which column name is "external_ids" - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.EXTERNALIDS.columnName(), - "getExternalIdsColumn", VersionNum.VERSION750); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.EXTERNALIDS.columnName(), - "setExternalIds", VersionNum.VERSION750); - super.setDataHandler(columndesc, externalIds); - } - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Interface.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Interface.java deleted file mode 100644 index ee946287..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Interface.java +++ /dev/null @@ -1,1024 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Interface Table. - */ -public class Interface extends AbstractOvsdbTableService { - - /** - * Interface table column name. - */ - public enum InterfaceColumn { - NAME("name"), TYPE("type"), OPTIONS("options"), - INGRESSPOLICINGRATE("ingress_policing_rate"), - INGRESSPOLICINGBURST("ingress_policing_burst"), MACINUSE("mac_in_use"), - MAC("mac"), IFINDEX("ifindex"), EXTERNALIDS("external_ids"), - OFPORT("ofport"), OFPORTREQUEST("ofport_request"), BFD("bfd"), - BFDSTATUS("bfd_status"), MONITOR("monitor"), CFMMPID("cfm_mpid"), - CFMREMOTEMPID("cfm_remote_mpid"), CFMREMOTEMPIDS("cfm_remote_mpids"), - CFMFLAPCOUNT("cfm_flap_count"), CFMFAULT("cfm_fault"), - CFMFAULTSTATUS("cfm_fault_status"), - CFMREMOTEOPSTATE("cfm_remote_opstate"), CFMHEALTH("cfm_health"), - LACPCURRENT("lacp_current"), OTHERCONFIG("other_config"), - STATISTICS("statistics"), STATUS("status"), ADMINSTATE("admin_state"), - LINKSTATE("link_state"), LINKRESETS("link_resets"), - LINKSPEED("link_speed"), DUPLEX("duplex"), MTU("mtu"), ERROR("error"); - - private final String columnName; - - private InterfaceColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for InterfaceColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a Interface object. Generate Interface Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Interface(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.INTERFACE, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "name" from the Row entity of - * attributes. - * @return the Column entity which column name is "name" - */ - public Column getNameColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.NAME - .columnName(), - "getNameColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "name" to the Row entity of - * attributes. - * @param name the column data which column name is "name" - */ - public void setName(String name) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.NAME - .columnName(), - "setName", - VersionNum.VERSION100); - super.setDataHandler(columndesc, name); - } - - /** - * Get the column data which column name is "name" from the Row entity of - * attributes. - * @return the column data which column name is "name" - */ - public String getName() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.NAME - .columnName(), - "getName", - VersionNum.VERSION100); - return (String) super.getDataHandler(columndesc); - } - - /** - * Get the Column entity which column name is "type" from the Row entity of - * attributes. - * @return the Column entity which column name is "type" - */ - public Column getTypeColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.TYPE - .columnName(), - "getTypeColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "type" to the Row entity of - * attributes. - * @param type the column data which column name is "type" - */ - public void setType(String type) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.TYPE - .columnName(), - "setType", - VersionNum.VERSION100); - super.setDataHandler(columndesc, type); - } - - /** - * Get the Column entity which column name is "options" from the Row entity - * of attributes. - * @return the Column entity which column name is "options" - */ - public Column getOptionsColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.OPTIONS - .columnName(), - "getOptionsColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "options" to the Row entity of - * attributes. - * @param options the column data which column name is "options" - */ - public void setOptions(Map options) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.OPTIONS - .columnName(), - "setOptions", - VersionNum.VERSION100); - super.setDataHandler(columndesc, options); - } - - /** - * Get the Column entity which column name is "ingress_policing_rate" from - * the Row entity of attributes. - * @return the Column entity which column name is "ingress_policing_rate" - */ - public Column getIngressPolicingRateColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.INGRESSPOLICINGRATE - .columnName(), - "getIngressPolicingRateColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "ingress_policing_rate" to the - * Row entity of attributes. - * @param ingressPolicingRate the column data which column name is - * "ingress_policing_rate" - */ - public void setIngressPolicingRate(Set ingressPolicingRate) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.INGRESSPOLICINGRATE - .columnName(), - "setIngressPolicingRate", - VersionNum.VERSION100); - super.setDataHandler(columndesc, ingressPolicingRate); - } - - /** - * Get the Column entity which column name is "ingress_policing_burst" from - * the Row entity of attributes. - * @return the Column entity which column name is "ingress_policing_burst" - */ - public Column getIngressPolicingBurstColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.INGRESSPOLICINGBURST - .columnName(), - "getIngressPolicingBurstColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "ingress_policing_burst" to the - * Row entity of attributes. - * @param ingressPolicingBurst the column data which column name is - * "ingress_policing_burst" - */ - public void setIngressPolicingBurst(Set ingressPolicingBurst) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.INGRESSPOLICINGBURST - .columnName(), - "setIngressPolicingBurst", - VersionNum.VERSION100); - super.setDataHandler(columndesc, ingressPolicingBurst); - } - - /** - * Get the Column entity which column name is "mac_in_use" from the Row - * entity of attributes. - * @return the Column entity which column name is "mac_in_use" - */ - public Column getMacInUseColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.MACINUSE - .columnName(), - "getMacInUseColumn", - VersionNum.VERSION710); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "mac_in_use" to the Row entity - * of attributes. - * @param macInUse the column data which column name is "mac_in_use" - */ - public void setMacInUse(Set macInUse) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.MACINUSE - .columnName(), - "setMacInUse", - VersionNum.VERSION710); - super.setDataHandler(columndesc, macInUse); - } - - /** - * Get the Column entity which column name is "mac" from the Row entity of - * attributes. - * @return the Column entity which column name is "mac" - */ - public Column getMacColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.MAC - .columnName(), - "getMacColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "mac" to the Row entity of - * attributes. - * @param mac the column data which column name is "mac" - */ - public void setMac(Set mac) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.MAC - .columnName(), - "setMac", - VersionNum.VERSION100); - super.setDataHandler(columndesc, mac); - } - - /** - * Get the Column entity which column name is "ifindex" from the Row entity - * of attributes. - * @return the Column entity which column name is "ifindex" - */ - public Column getIfIndexColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.IFINDEX - .columnName(), - "getIfIndexColumn", - VersionNum.VERSION721); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "ifindex" to the Row entity of - * attributes. - * @param ifIndex the column data which column name is "ifindex" - */ - public void setIfIndex(Long ifIndex) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.IFINDEX - .columnName(), - "setIfIndex", - VersionNum.VERSION721); - super.setDataHandler(columndesc, ifIndex); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity which column name is "external_ids" - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.EXTERNALIDS - .columnName(), - "getExternalIdsColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.EXTERNALIDS - .columnName(), - "setExternalIds", - VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } - - /** - * Get the Column entity which column name is "ofport" from the Row entity - * of attributes. - * @return the Column entity which column name is "ofport" - */ - public Column getOpenFlowPortColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.OFPORT - .columnName(), - "getOpenFlowPortColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "ofport" to the Row entity of - * attributes. - * @param openFlowPort the column data which column name is "ofport" - */ - public void setOpenFlowPort(Set openFlowPort) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.OFPORT - .columnName(), - "setOpenFlowPort", - VersionNum.VERSION100); - super.setDataHandler(columndesc, openFlowPort); - } - - /** - * Get the Column entity which column name is "ofport_request" from the Row - * entity of attributes. - * @return the Column entity which column name is "ofport_request" - */ - public Column getOpenFlowPortRequestColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.OFPORTREQUEST - .columnName(), - "getOpenFlowPortRequestColumn", - VersionNum.VERSION620); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "ofport_request" to the Row - * entity of attributes. - * @param openFlowPortRequest the column data which column name is - * "ofport_request" - */ - public void setOpenFlowPortRequest(String openFlowPortRequest) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.OFPORTREQUEST - .columnName(), - "setOpenFlowPortRequest", - VersionNum.VERSION620); - super.setDataHandler(columndesc, openFlowPortRequest); - } - - /** - * Get the Column entity which column name is "bfd" from the Row entity of - * attributes. - * @return the Column entity which column name is "bfd" - */ - public Column getBfdColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.BFD - .columnName(), - "getBfdColumn", - VersionNum.VERSION720); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "bfd" to the Row entity of - * attributes. - * @param bfd the column data which column name is "bfd" - */ - public void setBfd(Map bfd) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.BFD - .columnName(), - "setBfd", - VersionNum.VERSION720); - super.setDataHandler(columndesc, bfd); - } - - /** - * Get the Column entity which column name is "bfd_status" from the Row - * entity of attributes. - * @return the Column entity which column name is "bfd_status" - */ - public Column getBfdStatusColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.BFDSTATUS - .columnName(), - "getBfdStatusColumn", - VersionNum.VERSION720); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "bfd_status" to the Row entity - * of attributes. - * @param bfdStatus the column data which column name is "bfd_status" - */ - public void setBfdStatus(Map bfdStatus) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.BFDSTATUS - .columnName(), - "setBfdStatus", - VersionNum.VERSION720); - super.setDataHandler(columndesc, bfdStatus); - } - - /** - * Get the Column entity which column name is "monitor" from the Row entity - * of attributes. - * @return the Column entity which column name is "monitor" - */ - public Column getMonitorColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.MONITOR - .columnName(), - "getMonitorColumn", - VersionNum.VERSION100, - VersionNum.VERSION350); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "monitor" to the Row entity of - * attributes. - * @param monitor the column data which column name is "monitor" - */ - public void setMonitor(String monitor) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.MONITOR - .columnName(), - "setMonitor", - VersionNum.VERSION100, - VersionNum.VERSION350); - super.setDataHandler(columndesc, monitor); - } - - /** - * Get the Column entity which column name is "cfm_mpid" from the Row entity - * of attributes. - * @return the Column entity which column name is "cfm_mpid" - */ - public Column getCfmMpidColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMMPID - .columnName(), - "getCfmMpidColumn", - VersionNum.VERSION400); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "cfm_mpid" to the Row entity of - * attributes. - * @param cfmMpid the column data which column name is "cfm_mpid" - */ - public void setCfmMpid(Set cfmMpid) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMMPID - .columnName(), - "setCfmMpid", - VersionNum.VERSION400); - super.setDataHandler(columndesc, cfmMpid); - } - - /** - * Get the Column entity which column name is "cfm_remote_mpid" from the Row - * entity of attributes. - * @return the Column entity which column name is "cfm_remote_mpid" - */ - public Column getCfmRemoteMpidColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMREMOTEMPID - .columnName(), - "getCfmRemoteMpidColumn", - VersionNum.VERSION400, - VersionNum.VERSION520); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "cfm_remote_mpid" to the Row - * entity of attributes. - * @param cfmRemoteMpid the column data which column name is - * "cfm_remote_mpid" - */ - public void setCfmRemoteMpid(Set cfmRemoteMpid) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMREMOTEMPID - .columnName(), - "setCfmRemoteMpid", - VersionNum.VERSION400, - VersionNum.VERSION520); - super.setDataHandler(columndesc, cfmRemoteMpid); - } - - /** - * Get the Column entity which column name is "cfm_remote_mpids" from the - * Row entity of attributes. - * @return the Column entity which column name is "cfm_remote_mpids" - */ - public Column getCfmRemoteMpidsColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMREMOTEMPIDS - .columnName(), - "getCfmRemoteMpidsColumn", - VersionNum.VERSION600); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "cfm_remote_mpids" to the Row - * entity of attributes. - * @param cfmRemoteMpids the column data which column name is - * "cfm_remote_mpids" - */ - public void setCfmRemoteMpids(Set cfmRemoteMpids) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMREMOTEMPIDS - .columnName(), - "setCfmRemoteMpids", - VersionNum.VERSION600); - super.setDataHandler(columndesc, cfmRemoteMpids); - } - - /** - * Get the Column entity which column name is "cfm_flap_count" from the Row - * entity of attributes. - * @return the Column entity which column name is "cfm_flap_count" - */ - public Column getCfmFlapCountColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMFLAPCOUNT - .columnName(), - "getCfmFlapCountColumn", - VersionNum.VERSION730); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "cfm_flap_count" to the Row - * entity of attributes. - * @param cfmFlapCount the column data which column name is "cfm_flap_count" - */ - public void setCfmFlapCount(Set cfmFlapCount) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMFLAPCOUNT - .columnName(), - "setCfmFlapCount", - VersionNum.VERSION730); - super.setDataHandler(columndesc, cfmFlapCount); - } - - /** - * Get the Column entity which column name is "cfm_fault" from the Row - * entity of attributes. - * @return the Column entity which column name is "cfm_fault" - */ - public Column getCfmFaultColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMFAULT - .columnName(), - "getCfmFaultColumn", - VersionNum.VERSION400); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "cfm_fault" to the Row entity of - * attributes. - * @param cfmFault the column data which column name is "cfm_fault" - */ - public void setCfmFault(Set cfmFault) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMFAULT - .columnName(), - "setCfmFault", - VersionNum.VERSION400); - super.setDataHandler(columndesc, cfmFault); - } - - /** - * Get the Column entity which column name is "cfm_fault_status" from the - * Row entity of attributes. - * @return the Column entity which column name is "cfm_fault_status" - */ - public Column getCfmFaultStatusColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMFAULTSTATUS - .columnName(), - "getCfmFaultStatusColumn", - VersionNum.VERSION660); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "cfm_fault_status" to the Row - * entity of attributes. - * @param cfmFaultStatus the column data which column name is - * "cfm_fault_status" - */ - public void setCfmFaultStatus(Set cfmFaultStatus) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMFAULTSTATUS - .columnName(), - "setCfmFaultStatus", - VersionNum.VERSION660); - super.setDataHandler(columndesc, cfmFaultStatus); - } - - /** - * Get the Column entity which column name is "cfm_remote_opstate" from the - * Row entity of attributes. - * @return the Column entity which column name is "cfm_remote_opstate" - */ - public Column getCfmRemoteOpStateColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMREMOTEOPSTATE - .columnName(), - "getCfmRemoteOpStateColumn", - VersionNum.VERSION6100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "cfm_remote_opstate" to the Row - * entity of attributes. - * @param cfmRemoteOpState the column data which column name is - * "cfm_remote_opstate" - */ - public void setCfmRemoteOpState(Set cfmRemoteOpState) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMREMOTEOPSTATE - .columnName(), - "setCfmRemoteOpState", - VersionNum.VERSION6100); - super.setDataHandler(columndesc, cfmRemoteOpState); - } - - /** - * Get the Column entity which column name is "cfm_health" from the Row - * entity of attributes. - * @return the Column entity which column name is "cfm_health" - */ - public Column getCfmHealthColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMHEALTH - .columnName(), - "getCfmHealthColumn", - VersionNum.VERSION690); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "cfm_health" to the Row entity - * of attributes. - * @param cfmHealth the column data which column name is "cfm_health" - */ - public void setCfmHealth(Set cfmHealth) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.CFMHEALTH - .columnName(), - "setCfmHealth", - VersionNum.VERSION690); - super.setDataHandler(columndesc, cfmHealth); - } - - /** - * Get the Column entity which column name is "lacp_current" from the Row - * entity of attributes. - * @return the Column entity which column name is "lacp_current" - */ - public Column getLacpCurrentColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.LACPCURRENT - .columnName(), - "getLacpCurrentColumn", - VersionNum.VERSION330); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "lacp_current" to the Row entity - * of attributes. - * @param lacpCurrent the column data which column name is "lacp_current" - */ - public void setLacpCurrent(Set lacpCurrent) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.LACPCURRENT - .columnName(), - "setLacpCurrent", - VersionNum.VERSION330); - super.setDataHandler(columndesc, lacpCurrent); - } - - /** - * Get the Column entity which column name is "other_config" from the Row - * entity of attributes. - * @return the Column entity which column name is "other_config" - */ - public Column getOtherConfigColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.OTHERCONFIG - .columnName(), - "getOtherConfigColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "other_config" to the Row entity - * of attributes. - * @param otherConfig the column data which column name is "other_config" - */ - public void setOtherConfig(Map otherConfig) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.OTHERCONFIG - .columnName(), - "setOtherConfig", - VersionNum.VERSION100); - super.setDataHandler(columndesc, otherConfig); - } - - /** - * Get the Column entity which column name is "statistics" from the Row - * entity of attributes. - * @return the Column entity which column name is "statistics" - */ - public Column getStatisticsColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.STATISTICS - .columnName(), - "getStatisticsColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "statistics" to the Row entity - * of attributes. - * @param statistics the column data which column name is "statistics" - */ - public void setStatistics(Map statistics) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.STATISTICS - .columnName(), - "setStatistics", - VersionNum.VERSION100); - super.setDataHandler(columndesc, statistics); - } - - /** - * Get the Column entity which column name is "status" from the Row entity - * of attributes. - * @return the Column entity which column name is "status" - */ - public Column getStatusColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.STATUS - .columnName(), - "getStatusColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "status" to the Row entity of - * attributes. - * @param status the column data which column name is "status" - */ - public void setStatus(Map status) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.STATUS - .columnName(), - "setStatus", - VersionNum.VERSION100); - super.setDataHandler(columndesc, status); - } - - /** - * Get the Column entity which column name is "admin_state" from the Row - * entity of attributes. - * @return the Column entity which column name is "admin_state" - */ - public Column getAdminStateColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.ADMINSTATE - .columnName(), - "getAdminStateColumn", - VersionNum.VERSION106); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "admin_state" to the Row entity - * of attributes. - * @param adminState the column data which column name is "admin_state" - */ - public void setAdminState(Set adminState) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.ADMINSTATE - .columnName(), - "setAdminState", - VersionNum.VERSION106); - super.setDataHandler(columndesc, adminState); - } - - /** - * Get the Column entity which column name is "link_state" from the Row - * entity of attributes. - * @return the Column entity which column name is "link_state" - */ - public Column getLinkStateColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.LINKSTATE - .columnName(), - "getLinkStateColumn", - VersionNum.VERSION106); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "link_state" to the Row entity - * of attributes. - * @param linkState the column data which column name is "link_state" - */ - public void setLinkState(Map linkState) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.LINKSTATE - .columnName(), - "setLinkState", - VersionNum.VERSION106); - super.setDataHandler(columndesc, linkState); - } - - /** - * Get the Column entity which column name is "link_resets" from the Row - * entity of attributes. - * @return the Column entity which column name is "link_resets" - */ - public Column getLinkResetsColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.LINKRESETS - .columnName(), - "getLinkResetsColumn", - VersionNum.VERSION620); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "link_resets" to the Row entity - * of attributes. - * @param linkResets the column data which column name is "link_resets" - */ - public void setLinkResets(Set linkResets) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.LINKRESETS - .columnName(), - "setLinkResets", - VersionNum.VERSION620); - super.setDataHandler(columndesc, linkResets); - } - - /** - * Get the Column entity which column name is "link_speed" from the Row - * entity of attributes. - * @return the Column entity which column name is "link_speed" - */ - public Column getLinkSpeedColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.LINKSPEED - .columnName(), - "getLinkSpeedColumn", - VersionNum.VERSION106); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "link_speed" to the Row entity - * of attributes. - * @param linkSpeed the column data which column name is "link_speed" - */ - public void setLinkSpeed(Set linkSpeed) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.LINKSPEED - .columnName(), - "setLinkSpeed", - VersionNum.VERSION106); - super.setDataHandler(columndesc, linkSpeed); - } - - /** - * Get the Column entity which column name is "duplex" from the Row entity - * of attributes. - * @return the Column entity which column name is "duplex" - */ - public Column getDuplexColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.DUPLEX - .columnName(), - "getDuplexColumn", - VersionNum.VERSION106); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "duplex" to the Row entity of - * attributes. - * @param duplex the column data which column name is "duplex" - */ - public void setDuplex(Set duplex) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.DUPLEX - .columnName(), - "setDuplex", - VersionNum.VERSION106); - super.setDataHandler(columndesc, duplex); - } - - /** - * Get the Column entity which column name is "mtu" from the Row entity of - * attributes. - * @return the Column entity which column name is "mtu" - */ - public Column getMtuColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.MTU - .columnName(), - "getMtuColumn", - VersionNum.VERSION106); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "mtu" to the Row entity of - * attributes. - * @param mtu the column data which column name is "mtu" - */ - public void setMtu(Set mtu) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.MTU - .columnName(), - "setMtu", - VersionNum.VERSION106); - super.setDataHandler(columndesc, mtu); - } - - /** - * Get the Column entity which column name is "error" from the Row entity of - * attributes. - * @return the Column entity which column name is "error" - */ - public Column getErrorColumn() { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.ERROR - .columnName(), - "getErrorColumn", - VersionNum.VERSION770); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "error" to the Row entity of - * attributes. - * @param error the column data which column name is "error" - */ - public void setError(Set error) { - ColumnDescription columndesc = new ColumnDescription( - InterfaceColumn.ERROR - .columnName(), - "setError", - VersionNum.VERSION770); - super.setDataHandler(columndesc, error); - } - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ipfix.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ipfix.java deleted file mode 100644 index c29f2e01..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ipfix.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.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Ipfix Table. - */ -public class Ipfix extends AbstractOvsdbTableService { - /** - * Ipfix table column name. - */ - public enum IpfixColumn { - TARGETS("targets"), SAMPLING("sampling"), OBSDOMAINID("obs_domain_id"), OBSPOINTID("obs_point_id"), - CACHEACTIVETIMEOUT("cache_active_timeout"), EXTERNALIDS("external_ids"), - CACHEMAXFLOWS("cache_max_flows"); - - private final String columnName; - - private IpfixColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for IpfixColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a Ipfix object. Generate Ipfix Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Ipfix(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.IPFIX, VersionNum.VERSION710); - } - - /** - * Get the Column entity which column name is "targets" from the Row entity - * of attributes. - * @return the Column entity which column name is "targets" - */ - public Column getTargetsColumn() { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.TARGETS.columnName(), - "getTargetsColumn", VersionNum.VERSION710); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "targets" to the Row entity of - * attributes. - * @param targets the column data which column name is "targets" - */ - public void setTargets(Set targets) { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.TARGETS.columnName(), - "setTargets", - VersionNum.VERSION710); - super.setDataHandler(columndesc, targets); - } - - /** - * Get the Column entity which column name is "sampling" from the Row entity - * of attributes. - * @return the Column entity which column name is "sampling" - */ - public Column getSamplingColumn() { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.SAMPLING.columnName(), - "getSamplingColumn", VersionNum.VERSION710); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "sampling" to the Row entity of - * attributes. - * @param sampling the column data which column name is "sampling" - */ - public void setSampling(Set sampling) { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.SAMPLING.columnName(), - "setSampling", VersionNum.VERSION710); - super.setDataHandler(columndesc, sampling); - } - - /** - * Get the Column entity which column name is "obs_domain_id" from the Row - * entity of attributes. - * @return the Column entity which column name is "obs_domain_id" - */ - public Column getObsDomainIdColumn() { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.OBSDOMAINID.columnName(), - "getObsDomainIdColumn", VersionNum.VERSION710); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "obs_domain_id" to the Row - * entity of attributes. - * @param obsdomainid the column data which column name is "obs_domain_id" - */ - public void setObsDomainId(Set obsdomainid) { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.OBSDOMAINID.columnName(), - "setObsDomainId", VersionNum.VERSION710); - super.setDataHandler(columndesc, obsdomainid); - } - - /** - * Get the Column entity which column name is "obs_point_id" from the Row - * entity of attributes. - * @return the Column entity which column name is "obs_point_id" - */ - public Column getObsPointIdColumn() { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.OBSPOINTID.columnName(), - "getObsPointIdColumn", VersionNum.VERSION710); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "obs_point_id" to the Row entity - * of attributes. - * @param obsPointId the column data which column name is "obs_point_id" - */ - public void setObsPointId(Set obsPointId) { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.OBSPOINTID.columnName(), - "setObsPointId", VersionNum.VERSION710); - super.setDataHandler(columndesc, obsPointId); - } - - /** - * Get the Column entity which column name is "cache_active_timeout" from - * the Row entity of attributes. - * @return the Column entity which column name is "cache_active_timeout" - */ - public Column getCacheActiveTimeoutColumn() { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.CACHEACTIVETIMEOUT.columnName(), - "getCacheActiveTimeoutColumn", - VersionNum.VERSION730); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "cache_active_timeout" to the - * Row entity of attributes. - * @param cacheActiveTimeout the column data which column name is - * "cache_active_timeout" - */ - public void setCacheActiveTimeout(Set cacheActiveTimeout) { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.CACHEACTIVETIMEOUT.columnName(), - "setCacheActiveTimeout", VersionNum.VERSION730); - super.setDataHandler(columndesc, cacheActiveTimeout); - } - - /** - * Get the Column entity which column name is "cache_max_flows" from the Row - * entity of attributes. - * @return the Column entity which column name is "cache_max_flows" - */ - public Column getCacheMaxFlowsColumn() { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.CACHEMAXFLOWS.columnName(), - "getCacheMaxFlowsColumn", VersionNum.VERSION730); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "cache_max_flows" to the Row - * entity of attributes. - * @param cacheMaxFlows the column data which column name is - * "cache_max_flows" - */ - public void setCacheMaxFlows(Set cacheMaxFlows) { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.CACHEMAXFLOWS.columnName(), - "setCacheMaxFlows", VersionNum.VERSION730); - super.setDataHandler(columndesc, cacheMaxFlows); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity which column name is "external_ids" - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.EXTERNALIDS.columnName(), - "getExternalIdsColumn", VersionNum.VERSION710); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription(IpfixColumn.EXTERNALIDS.columnName(), - "setExternalIds", VersionNum.VERSION710); - super.setDataHandler(columndesc, externalIds); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Manager.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Manager.java deleted file mode 100644 index d0c2638f..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Manager.java +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Manager Table. - */ -public class Manager extends AbstractOvsdbTableService { - /** - * Manager table column name. - */ - public enum ManagerColumn { - TARGET("target"), ISCONNECTED("is_connected"), CONNECTIONMODE("connection_mode"), - EXTERNALIDS("external_ids"), STATUS("status"), INACTIVITYPROBE("inactivity_probe"), - OTHERCONFIG("other_config"), MAXBACKOFF("max_backoff"); - - private final String columnName; - - private ManagerColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for ManagerColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a Manager object. Generate Manager Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Manager(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.MANAGER, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "target" from the Row entity - * of attributes. - * @return the Column entity which column name is "target" - */ - public Column getTargetColumn() { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.TARGET.columnName(), - "getTargetColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "target" to the Row entity of - * attributes. - * @param target the column data which column name is "target" - */ - public void setTarget(Set target) { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.TARGET.columnName(), - "setTarget", - VersionNum.VERSION100); - super.setDataHandler(columndesc, target); - } - - /** - * Get the Column entity which column name is "is_connected" from the Row - * entity of attributes. - * @return the Column entity which column name is "is_connected" - */ - public Column getIsConnectedColumn() { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.ISCONNECTED.columnName(), - "getIsConnectedColumn", VersionNum.VERSION110); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "is_connected" to the Row entity - * of attributes. - * @param isConnected the column data which column name is "is_connected" - */ - public void setIsConnected(Boolean isConnected) { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.ISCONNECTED.columnName(), - "setIsConnected", VersionNum.VERSION110); - super.setDataHandler(columndesc, isConnected); - } - - /** - * Get the Column entity which column name is "other_config" from the Row - * entity of attributes. - * @return the Column entity which column name is "other_config" - */ - public Column getOtherConfigColumn() { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.OTHERCONFIG.columnName(), - "getOtherConfigColumn", VersionNum.VERSION680); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "other_config" to the Row entity - * of attributes. - * @param otherConfig the column data which column name is "other_config" - */ - public void setOtherConfig(Map otherConfig) { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.OTHERCONFIG.columnName(), - "setOtherConfig", VersionNum.VERSION680); - super.setDataHandler(columndesc, otherConfig); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity which column name is "external_ids" - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.EXTERNALIDS.columnName(), - "getExternalIdsColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.EXTERNALIDS.columnName(), - "setExternalIds", VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } - - /** - * Get the Column entity which column name is "max_backoff" from the Row - * entity of attributes. - * @return the Column entity which column name is "max_backoff" - */ - public Column getMaxBackoffColumn() { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.MAXBACKOFF.columnName(), - "getMaxBackoffColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "max_backoff" to the Row entity - * of attributes. - * @param maxBackoff the column data which column name is "max_backoff" - */ - public void setMaxBackoff(Set maxBackoff) { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.MAXBACKOFF.columnName(), - "setMaxBackoff", VersionNum.VERSION100); - super.setDataHandler(columndesc, maxBackoff); - } - - /** - * Get the Column entity which column name is "status" from the Row entity - * of attributes. - * @return the Column entity which column name is "status" - */ - public Column getStatusColumn() { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.STATUS.columnName(), - "getStatusColumn", VersionNum.VERSION110); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "status" to the Row entity of - * attributes. - * @param status the column data which column name is "status" - */ - public void setStatus(Map status) { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.STATUS.columnName(), - "setStatus", - VersionNum.VERSION110); - super.setDataHandler(columndesc, status); - } - - /** - * Get the Column entity which column name is "inactivity_probe" from the - * Row entity of attributes. - * @return the Column entity which column name is "inactivity_probe" - */ - public Column getInactivityProbeColumn() { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.INACTIVITYPROBE.columnName(), - "getInactivityProbeColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "inactivity_probe" to the Row - * entity of attributes. - * @param inactivityProbe the column data which column name is - * "inactivity_probe" - */ - public void setInactivityProbe(Set inactivityProbe) { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.INACTIVITYPROBE.columnName(), - "setInactivityProbe", VersionNum.VERSION100); - super.setDataHandler(columndesc, inactivityProbe); - } - - /** - * Get the Column entity which column name is "connection_mode" from the Row - * entity of attributes. - * @return the Column entity which column name is "connection_mode" - */ - public Column getConnectionModeColumn() { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.CONNECTIONMODE.columnName(), - "getConnectionModeColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "connection_mode" to the Row - * entity of attributes. - * @param connectionMode the column data which column name is - * "connection_mode" - */ - public void setConnectionMode(Set connectionMode) { - ColumnDescription columndesc = new ColumnDescription(ManagerColumn.CONNECTIONMODE.columnName(), - "setConnectionMode", VersionNum.VERSION100); - super.setDataHandler(columndesc, connectionMode); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Mirror.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Mirror.java deleted file mode 100644 index ec022fee..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Mirror.java +++ /dev/null @@ -1,277 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Mirror Table. - */ -public class Mirror extends AbstractOvsdbTableService { - /** - * Mirror table column name. - */ - public enum MirrorColumn { - NAME("name"), SELECTSRCPORT("select_src_port"), SELECTDSTPORT("select_dst_port"), - SELECTVLAN("select_vlan"), OUTPUTPORT("output_port"), EXTERNALIDS("external_ids"), - OUTPUTVLAN("output_vlan"), STATISTICS("statistics"), SELECTALL("select_all"); - - private final String columnName; - - private MirrorColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for MirrorColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a Mirror object. Generate Mirror Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Mirror(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.MIRROR, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "name" from the Row entity of - * attributes. - * @return the Column entity which column name is "name" - */ - public Column getNameColumn() { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.NAME.columnName(), - "getNameColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "name" to the Row entity of - * attributes. - * @param name the column data which column name is "name" - */ - public void setName(Set name) { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.NAME.columnName(), - "setName", - VersionNum.VERSION100); - super.setDataHandler(columndesc, name); - } - - /** - * Get the column data which column name is "name" from the Row entity of - * attributes. - * @return the column data which column name is "name" - */ - public Set getName() { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.NAME.columnName(), - "getName", - VersionNum.VERSION100); - return (Set) super.getDataHandler(columndesc); - } - - /** - * Get the Column entity which column name is "select_src_port" from the Row - * entity of attributes. - * @return the Column entity which column name is "select_src_port" - */ - public Column getSelectSrcPortColumn() { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTSRCPORT.columnName(), - "getSelectSrcPortColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "select_src_port" to the Row - * entity of attributes. - * @param selectSrcPort the column data which column name is - * "select_src_port" - */ - public void setSelectSrcPort(Set selectSrcPort) { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTSRCPORT.columnName(), - "setSelectSrcPort", VersionNum.VERSION100); - super.setDataHandler(columndesc, selectSrcPort); - } - - /** - * Get the Column entity which column name is "select_dst_port" from the Row - * entity of attributes. - * @return the Column entity which column name is "select_dst_port" - */ - public Column getSelectDstPortColumn() { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTDSTPORT.columnName(), - "getSelectDstPortColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "select_dst_port" to the Row - * entity of attributes. - * @param selectDstPrt the column data which column name is - * "select_dst_port" - */ - public void setSelectDstPort(Set selectDstPrt) { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTDSTPORT.columnName(), - "setSelectDstPort", VersionNum.VERSION100); - super.setDataHandler(columndesc, selectDstPrt); - } - - /** - * Get the Column entity which column name is "select_vlan" from the Row - * entity of attributes. - * @return the Column entity which column name is "select_vlan" - */ - public Column getSelectVlanColumn() { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTVLAN.columnName(), - "getSelectVlanColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "select_vlan" to the Row entity - * of attributes. - * @param selectVlan the column data which column name is "select_vlan" - */ - public void setSelectVlan(Set selectVlan) { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTVLAN.columnName(), - "setSelectVlan", VersionNum.VERSION100); - super.setDataHandler(columndesc, selectVlan); - } - - /** - * Get the Column entity which column name is "output_port" from the Row - * entity of attributes. - * @return the Column entity which column name is "output_port" - */ - public Column getOutputPortColumn() { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.OUTPUTPORT.columnName(), - "getOutputPortColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "output_port" to the Row entity - * of attributes. - * @param outputPort the column data which column name is "output_port" - */ - public void setOutputPort(Set outputPort) { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.OUTPUTPORT.columnName(), - "setOutputPort", VersionNum.VERSION100); - super.setDataHandler(columndesc, outputPort); - } - - /** - * Get the Column entity which column name is "output_vlan" from the Row - * entity of attributes. - * @return the Column entity which column name is "output_vlan" - */ - public Column getOutputVlanColumn() { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.OUTPUTVLAN.columnName(), - "getOutputVlanColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "output_vlan" to the Row entity - * of attributes. - * @param outputVlan the column data which column name is "output_vlan" - */ - public void setOutputVlan(Set outputVlan) { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.OUTPUTVLAN.columnName(), - "setOutputVlan", VersionNum.VERSION100); - super.setDataHandler(columndesc, outputVlan); - } - - /** - * Get the Column entity which column name is "statistics" from the Row - * entity of attributes. - * @return the Column entity which column name is "statistics" - */ - public Column getStatisticsColumn() { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.STATISTICS.columnName(), - "getStatisticsColumn", VersionNum.VERSION640); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "statistics" to the Row entity - * of attributes. - * @param statistics the column data which column name is "statistics" - */ - public void setStatistics(Map statistics) { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.STATISTICS.columnName(), - "setStatistics", VersionNum.VERSION640); - super.setDataHandler(columndesc, statistics); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity which column name is "external_ids" - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.EXTERNALIDS.columnName(), - "getExternalIdsColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.EXTERNALIDS.columnName(), - "setExternalIds", VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } - - /** - * Get the Column entity which column name is "select_all" from the Row - * entity of attributes. - * @return the Column entity which column name is "select_all" - */ - public Column getSelectAllColumn() { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTALL.columnName(), - "getSelectAllColumn", VersionNum.VERSION620); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "select_all" to the Row entity - * of attributes. - * @param selectAll the column data which column name is "select_all" - */ - public void setSelectAll(Boolean selectAll) { - ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTALL.columnName(), - "setSelectAll", VersionNum.VERSION620); - super.setDataHandler(columndesc, selectAll); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Netflow.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Netflow.java deleted file mode 100644 index 98c3de55..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Netflow.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Netflow Table. - */ -public class Netflow extends AbstractOvsdbTableService { - /** - * Netflow table column name. - */ - public enum NetflowColumn { - TARGETS("targets"), ACTIVETIMEOUT("active_timeout"), ENGINETYPE("engine_type"), - EXTERNALIDS("external_ids"), ADDIDTOINTERFACE("add_id_to_interface"), ENGINEID("engine_id"); - - private final String columnName; - - private NetflowColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for NetflowColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a NetFlow object. Generate Netflow Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Netflow(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.NETFLOW, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "targets" from the Row entity - * of attributes. - * @return the Column entity - */ - public Column getTargetsColumn() { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.TARGETS.columnName(), - "getTargetsColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "targets" to the Row entity of - * attributes. - * @param targets the column data which column name is "targets" - */ - public void setTargets(Set targets) { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.TARGETS.columnName(), - "setTargets", VersionNum.VERSION100); - super.setDataHandler(columndesc, targets); - } - - /** - * Get the Column entity which column name is "active_timeout" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getActiveTimeoutColumn() { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.ACTIVETIMEOUT.columnName(), - "getActiveTimeoutColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "active_timeout" to the Row - * entity of attributes. - * @param activeTimeout the column data which column name is - * "active_timeout" - */ - public void setActiveTimeout(Long activeTimeout) { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.ACTIVETIMEOUT.columnName(), - "setActiveTimeout", VersionNum.VERSION100); - super.setDataHandler(columndesc, activeTimeout); - } - - /** - * Get the Column entity which column name is "engine_type" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getEngineTypeColumn() { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.ENGINETYPE.columnName(), - "getEngineTypeColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "engine_type" to the Row entity - * of attributes. - * @param engineType the column data which column name is "engine_type" - */ - public void setEngineType(Set engineType) { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.ENGINETYPE.columnName(), - "setEngineType", VersionNum.VERSION100); - super.setDataHandler(columndesc, engineType); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.EXTERNALIDS.columnName(), - "getExternalIdsColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.EXTERNALIDS.columnName(), - "setExternalIds", VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } - - /** - * Get the Column entity which column name is "add_id_to_interface" from the - * Row entity of attributes. - * @return the Column entity - */ - public Column getAddIdToInterfaceColumn() { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.ADDIDTOINTERFACE.columnName(), - "getAddIdToInterfaceColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "add_id_to_interface" to the Row - * entity of attributes. - * @param addIdToInterface the column data which column name is - * "add_id_to_interface" - */ - public void setAddIdToInterface(Boolean addIdToInterface) { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.ADDIDTOINTERFACE.columnName(), - "setAddIdToInterface", VersionNum.VERSION100); - super.setDataHandler(columndesc, addIdToInterface); - } - - /** - * Get the Column entity which column name is "engine_id" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getEngineIdColumn() { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.ENGINETYPE.columnName(), - "getEngineIdColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "engine_id" to the Row entity of - * attributes. - * @param engineId the column data which column name is "engine_id" - */ - public void setEngineId(Set engineId) { - ColumnDescription columndesc = new ColumnDescription(NetflowColumn.ENGINETYPE.columnName(), - "setEngineId", VersionNum.VERSION100); - super.setDataHandler(columndesc, engineId); - } - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OpenVSwitch.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OpenVSwitch.java deleted file mode 100644 index 9d20b982..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OpenVSwitch.java +++ /dev/null @@ -1,466 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Open_vSwitch Table. - */ -public class OpenVSwitch extends AbstractOvsdbTableService { - - /** - * OpenVSwitch table column name. - */ - public enum OpenVSwitchColumn { - BRIDGES("bridges"), MANAGERS("managers"), - MANAGEROPTIONS("manager_options"), SSL("ssl"), - OTHERCONFIG("other_config"), EXTERNALIDS("external_ids"), - NEXTCFG("next_cfg"), CURCFG("cur_cfg"), CAPABILITIES("capabilities"), - STATISTICS("statistics"), OVSVERSION("ovs_version"), - DBVERSION("db_version"), SYSTEMTYPE("system_type"), - SYSTEMVERSION("system_version"); - - private final String columnName; - - private OpenVSwitchColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for OpenVSwitchColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a OpenVSwitch object. Generate Open_vSwitch Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public OpenVSwitch(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.OPENVSWITCH, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "bridges" from the Row entity - * of attributes. - * @return the Column entity which column name is "bridges" - */ - public Column getBridgesColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.BRIDGES - .columnName(), - "getBridgesColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "bridges" to the Row entity of - * attributes. - * @param bridges the column data which column name is "bridges" - */ - public void setBridges(Set bridges) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.BRIDGES - .columnName(), - "setBridges", - VersionNum.VERSION100); - super.setDataHandler(columndesc, bridges); - } - - /** - * Get the Column entity which column name is "managers" from the Row entity - * of attributes. - * @return the Column entity which column name is "managers" - */ - public Column getManagersColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.MANAGERS - .columnName(), - "getManagersColumn", - VersionNum.VERSION100, - VersionNum.VERSION200); - return (Column) super.getDataHandler(columndesc); - } - - /** - * Add a Column entity which column name is "managers" to the Row entity of - * attributes. - * @param managers the column data which column name is "managers" - */ - public void setManagers(Set managers) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.MANAGERS - .columnName(), - "setManagers", - VersionNum.VERSION100, - VersionNum.VERSION200); - super.setDataHandler(columndesc, managers); - } - - /** - * Get the Column entity which column name is "manager_options" from the Row - * entity of attributes. - * @return the Column entity which column name is "manager_options" - */ - public Column getManagerOptionsColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.MANAGEROPTIONS - .columnName(), - "getManagerOptionsColumn", - VersionNum.VERSION100); - return (Column) super.getDataHandler(columndesc); - } - - /** - * Add a Column entity which column name is "manager_options" to the Row - * entity of attributes. - * @param managerOptions the column data which column name is - * "manager_options" - */ - public void setManagerOptions(Set managerOptions) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.MANAGEROPTIONS - .columnName(), - "setManagerOptions", - VersionNum.VERSION100); - super.setDataHandler(columndesc, managerOptions); - } - - /** - * Get the Column entity which column name is "ssl" from the Row entity of - * attributes. - * @return the Column entity which column name is "ssl" - */ - public Column getSslColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.SSL - .columnName(), - "getSslColumn", - VersionNum.VERSION100); - return (Column) super.getDataHandler(columndesc); - } - - /** - * Add a Column entity which column name is "ssl" to the Row entity of - * attributes. - * @param ssl the column data which column name is "ssl" - */ - public void setSsl(Set ssl) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.SSL - .columnName(), - "setSsl", - VersionNum.VERSION100); - super.setDataHandler(columndesc, ssl); - } - - /** - * Get the Column entity which column name is "other_config" from the Row - * entity of attributes. - * @return the Column entity which column name is "other_config" - */ - public Column getOtherConfigColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.OTHERCONFIG - .columnName(), - "getOtherConfigColumn", - VersionNum.VERSION510); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "other_config" to the Row entity - * of attributes. - * @param otherConfig the column data which column name is "other_config" - */ - public void setOtherConfig(Map otherConfig) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.OTHERCONFIG - .columnName(), - "setOtherConfig", - VersionNum.VERSION510); - super.setDataHandler(columndesc, otherConfig); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity which column name is "external_ids" - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.EXTERNALIDS - .columnName(), - "getExternalIdsColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.EXTERNALIDS - .columnName(), - "setExternalIds", - VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } - - /** - * Get the Column entity which column name is "next_cfg" from the Row entity - * of attributes. - * @return the Column entity which column name is "next_cfg" - */ - public Column getNextConfigColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.NEXTCFG - .columnName(), - "getNextConfigColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "next_cfg" to the Row entity of - * attributes. - * @param nextConfig the column data which column name is "next_cfg" - */ - public void setNextConfig(Long nextConfig) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.NEXTCFG - .columnName(), - "setNextConfig", - VersionNum.VERSION100); - super.setDataHandler(columndesc, nextConfig); - } - - /** - * Get the Column entity which column name is "cur_cfg" from the Row entity - * of attributes. - * @return the Column entity which column name is "cur_cfg" - */ - public Column getCurrentConfigColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.CURCFG - .columnName(), - "getCurrentConfigColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "cur_cfg" to the Row entity of - * attributes. - * @param currentConfig the column data which column name is "cur_cfg" - */ - public void setCurrentConfig(Long currentConfig) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.CURCFG - .columnName(), - "setCurrentConfig", - VersionNum.VERSION100); - super.setDataHandler(columndesc, currentConfig); - } - - /** - * Get the Column entity which column name is "capabilities" from the Row - * entity of attributes. - * @return the Column entity which column name is "capabilities" - */ - public Column getCapabilitiesColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.CAPABILITIES - .columnName(), - "getCapabilitiesColumn", - VersionNum.VERSION100, - VersionNum.VERSION670); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "capabilities" to the Row entity - * of attributes. - * @param capabilities the column data which column name is "capabilities" - */ - public void setCapabilities(Map capabilities) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.CAPABILITIES - .columnName(), - "setCapabilities", - VersionNum.VERSION100, - VersionNum.VERSION670); - super.setDataHandler(columndesc, capabilities); - } - - /** - * Get the Column entity which column name is "statistics" from the Row - * entity of attributes. - * @return the Column entity which column name is "statistics" - */ - public Column getStatisticsColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.STATISTICS - .columnName(), - "getStatisticsColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "statistics" to the Row entity - * of attributes. - * @param statistics the column data which column name is "statistics" - */ - public void setStatistics(Map statistics) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.STATISTICS - .columnName(), - "setStatistics", - VersionNum.VERSION100); - super.setDataHandler(columndesc, statistics); - } - - /** - * Get the Column entity which column name is "ovs_version" from the Row - * entity of attributes. - * @return the Column entity which column name is "ovs_version" - */ - public Column getOvsVersionColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.OVSVERSION - .columnName(), - "getOvsVersionColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "ovs_version" to the Row entity - * of attributes. - * @param ovsVersion the column data which column name is "ovs_version" - */ - public void setOvsVersion(Set ovsVersion) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.OVSVERSION - .columnName(), - "setOvsVersion", - VersionNum.VERSION100); - super.setDataHandler(columndesc, ovsVersion); - } - - /** - * Get the Column entity which column name is "db_version" from the Row - * entity of attributes. - * @return the Column entity which column name is "db_version" - */ - public Column getDbVersionColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.DBVERSION - .columnName(), - "getDbVersionColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "db_version" to the Row entity - * of attributes. - * @param dbVersion the column data which column name is "db_version" - */ - public void setDbVersion(Set dbVersion) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.DBVERSION - .columnName(), - "setDbVersion", - VersionNum.VERSION100); - super.setDataHandler(columndesc, dbVersion); - } - - /** - * Get the Column entity which column name is "system_type" from the Row - * entity of attributes. - * @return the Column entity which column name is "system_type" - */ - public Column getSystemTypeColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.SYSTEMTYPE - .columnName(), - "getSystemTypeColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "system_type" to the Row entity - * of attributes. - * @param systemType the column data which column name is "system_type" - */ - public void setSystemType(Set systemType) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.SYSTEMTYPE - .columnName(), - "setSystemType", - VersionNum.VERSION100); - super.setDataHandler(columndesc, systemType); - } - - /** - * Get the Column entity which column name is "system_version" from the Row - * entity of attributes. - * @return the Column entity which column name is "system_version" - */ - public Column getSystemVersionColumn() { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.SYSTEMVERSION - .columnName(), - "getSystemVersionColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "system_version" to the Row - * entity of attributes. - * @param systemVersion the column data which column name is - * "system_version" - */ - public void setSystemVersion(Set systemVersion) { - ColumnDescription columndesc = new ColumnDescription( - OpenVSwitchColumn.SYSTEMVERSION - .columnName(), - "setSystemVersion", - VersionNum.VERSION100); - super.setDataHandler(columndesc, systemVersion); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OvsdbTable.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OvsdbTable.java deleted file mode 100644 index 2bfe2e79..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OvsdbTable.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.ovsdb.rfc.table; - -/** - * Ovsdb table name. Refer to RFC7047's Section 9.2. - */ -public enum OvsdbTable { - INTERFACE("Interface"), BRIDGE("Bridge"), CONTROLLER("Controller"), - PORT("Port"), OPENVSWITCH("Open_vSwitch"), FLWTABLE("Flow_Table"), - QOS("Qos"), QUEUE("Queue"), MIRROR("Mirror"), MANAGER("Manager"), - NETFLOW("NetFlow"), SSL("SSL"), SFLOW("sFlow"), IPFIX("IPFIX"), - FLOWSAMPLECOLLECTORSET("Flow_Sample_Collector_Set"); - - private final String tableName; - - private OvsdbTable(String tableName) { - this.tableName = tableName; - } - - /** - * Returns the table name for OvsdbTable. - * @return the table name - */ - public String tableName() { - return tableName; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Port.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Port.java deleted file mode 100644 index 1e1ab7d7..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Port.java +++ /dev/null @@ -1,590 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Port Table. - */ -public class Port extends AbstractOvsdbTableService { - - /** - * Port table column name. - */ - public enum PortColumn { - NAME("name"), INTERFACES("interfaces"), TRUNKS("trunks"), TAG("tag"), - VLANMODE("vlan_mode"), QOS("qos"), MAC("mac"), BONDTYPE("bond_type"), - BONDMODE("bond_mode"), LACP("lacp"), BONDUPDELAY("bond_updelay"), - BONDDOWNDELAY("bond_downdelay"), BONDFAKEIFACE("bond_fake_iface"), - FAKEBRIDGE("fake_bridge"), STATUS("status"), STATISTICS("statistics"), - OTHERCONFIG("other_config"), EXTERNALIDS("external_ids"); - - private final String columnName; - - private PortColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for PortColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a Port object. Generate Port Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Port(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.PORT, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "name" from the Row entity of - * attributes. - * @return the Column entity - */ - public Column getNameColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.NAME - .columnName(), - "getNameColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "name" to the Row entity of - * attributes. - * @param name the column data which column name is "name" - */ - public void setName(String name) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.NAME - .columnName(), - "setName", - VersionNum.VERSION100); - super.setDataHandler(columndesc, name); - } - - /** - * Get the Column entity which column name is "name" from the Row entity of - * attributes. - * @return the Column entity - */ - public String getName() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.NAME - .columnName(), - "getName", - VersionNum.VERSION100); - return (String) super.getDataHandler(columndesc); - } - - /** - * Get the Column entity which column name is "interfaces" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getInterfacesColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.INTERFACES - .columnName(), - "getInterfacesColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "interfaces" to the Row entity - * of attributes. - * @param interfaces the column data which column name is "interfaces" - */ - public void setInterfaces(Set interfaces) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.INTERFACES - .columnName(), - "setInterfaces", - VersionNum.VERSION100); - super.setDataHandler(columndesc, interfaces); - } - - /** - * Get the Column entity which column name is "trunks" from the Row entity - * of attributes. - * @return the Column entity - */ - public Column getTrunksColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.TRUNKS - .columnName(), - "getTrunksColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "trunks" to the Row entity of - * attributes. - * @param trunks the column data which column name is "trunks" - */ - public void setTrunks(Set trunks) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.TRUNKS - .columnName(), - "setTrunks", - VersionNum.VERSION100); - super.setDataHandler(columndesc, trunks); - } - - /** - * Get the Column entity which column name is "tag" from the Row entity of - * attributes. - * @return the Column entity - */ - public Column getTagColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.TAG - .columnName(), - "getTagColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "tag" to the Row entity of - * attributes. - * @param tag the column data which column name is "tag" - */ - public void setTag(Set tag) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.TAG - .columnName(), - "setTag", - VersionNum.VERSION100); - super.setDataHandler(columndesc, tag); - } - - /** - * Get the Column entity which column name is "vlan_mode" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getVlanModeColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.VLANMODE - .columnName(), - "getVlanModeColumn", - VersionNum.VERSION610); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "vlan_mode" to the Row entity of - * attributes. - * @param vlanMode the column data which column name is "vlan_mode" - */ - public void setVlanMode(Set vlanMode) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.VLANMODE - .columnName(), - "setVlanMode", - VersionNum.VERSION610); - super.setDataHandler(columndesc, vlanMode); - } - - /** - * Get the Column entity which column name is "qos" from the Row entity of - * attributes. - * @return the Column entity - */ - public Column getQosColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.QOS - .columnName(), - "getQosColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "qos" to the Row entity of - * attributes. - * @param qos the column data which column name is "qos" - */ - public void setQos(Set qos) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.QOS - .columnName(), - "setQos", - VersionNum.VERSION100); - super.setDataHandler(columndesc, qos); - } - - /** - * Get the Column entity which column name is "mac" from the Row entity of - * attributes. - * @return the Column entity - */ - public Column getMacColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.MAC - .columnName(), - "getMacColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "mac" to the Row entity of - * attributes. - * @param mac the column data which column name is "mac" - */ - public void setMac(Set mac) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.MAC - .columnName(), - "setMac", - VersionNum.VERSION100); - super.setDataHandler(columndesc, mac); - } - - /** - * Get the Column entity which column name is "bond_type" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getBondTypeColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.BONDTYPE - .columnName(), - "getBondTypeColumn", - VersionNum.VERSION102, - VersionNum.VERSION103); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "bond_type" to the Row entity of - * attributes. - * @param bondtype the column data which column name is "bond_type" - */ - public void setBondType(Set bondtype) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.BONDTYPE - .columnName(), - "setBondType", - VersionNum.VERSION102, - VersionNum.VERSION103); - super.setDataHandler(columndesc, bondtype); - } - - /** - * Get the Column entity which column name is "bond_mode" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getBondModeColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.BONDMODE - .columnName(), - "getBondModeColumn", - VersionNum.VERSION104); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "bond_mode" to the Row entity of - * attributes. - * @param bondmode the column data which column name is "bond_mode" - */ - public void setBondMode(Set bondmode) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.BONDMODE - .columnName(), - "setBondMode", - VersionNum.VERSION104); - super.setDataHandler(columndesc, bondmode); - } - - /** - * Get the Column entity which column name is "lacp" from the Row entity of - * attributes. - * @return the Column entity - */ - public Column getLacpColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.LACP - .columnName(), - "getLacpColumn", - VersionNum.VERSION130); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "lacp" to the Row entity of - * attributes. - * @param lacp the column data which column name is "lacp" - */ - public void setLacp(Set lacp) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.LACP - .columnName(), - "setLacp", - VersionNum.VERSION130); - super.setDataHandler(columndesc, lacp); - } - - /** - * Get the Column entity which column name is "bond_updelay" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getBondUpDelayColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.BONDUPDELAY - .columnName(), - "getBondUpDelayColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "bond_updelay" to the Row entity - * of attributes. - * @param bondUpDelay the column data which column name is "bond_updelay" - */ - public void setBondUpDelay(Set bondUpDelay) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.BONDUPDELAY - .columnName(), - "setBondUpDelay", - VersionNum.VERSION100); - super.setDataHandler(columndesc, bondUpDelay); - } - - /** - * Get the Column entity which column name is "bond_downdelay" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getBondDownDelayColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.BONDDOWNDELAY - .columnName(), - "getBondDownDelayColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "bond_downdelay" to the Row - * entity of attributes. - * @param bondDownDelay the column data which column name is - * "bond_downdelay" - */ - public void setBondDownDelay(Set bondDownDelay) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.BONDDOWNDELAY - .columnName(), - "setBondDownDelay", - VersionNum.VERSION100); - super.setDataHandler(columndesc, bondDownDelay); - } - - /** - * Get the Column entity which column name is "bond_fake_iface" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getBondFakeInterfaceColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.BONDFAKEIFACE - .columnName(), - "getBondFakeInterfaceColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "bond_fake_iface" to the Row - * entity of attributes. - * @param bondFakeInterface the column data which column name is - * "bond_fake_iface" - */ - public void setBondFakeInterface(Set bondFakeInterface) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.BONDFAKEIFACE - .columnName(), - "setBondFakeInterface", - VersionNum.VERSION100); - super.setDataHandler(columndesc, bondFakeInterface); - } - - /** - * Get the Column entity which column name is "fake_bridge" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getFakeBridgeColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.FAKEBRIDGE - .columnName(), - "getFakeBridgeColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "fake_bridge" to the Row entity - * of attributes. - * @param fakeBridge the column data which column name is "fake_bridge" - */ - public void setFakeBridge(Set fakeBridge) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.FAKEBRIDGE - .columnName(), - "setFakeBridge", - VersionNum.VERSION100); - super.setDataHandler(columndesc, fakeBridge); - } - - /** - * Get the Column entity which column name is "status" from the Row entity - * of attributes. - * @return the Column entity - */ - public Column getStatusColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.STATUS - .columnName(), - "getStatusColumn", - VersionNum.VERSION620); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "status" to the Row entity of - * attributes. - * @param status the column data which column name is "status" - */ - public void setStatus(Map status) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.STATUS - .columnName(), - "setStatus", - VersionNum.VERSION620); - super.setDataHandler(columndesc, status); - } - - /** - * Get the Column entity which column name is "statistics" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getStatisticsColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.STATISTICS - .columnName(), - "getStatisticsColumn", - VersionNum.VERSION630); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "statistics" to the Row entity - * of attributes. - * @param statistics the column data which column name is "statistics" - */ - public void setStatistics(Map statistics) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.STATISTICS - .columnName(), - "setStatistics", - VersionNum.VERSION630); - super.setDataHandler(columndesc, statistics); - } - - /** - * Get the Column entity which column name is "other_config" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getOtherConfigColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.OTHERCONFIG - .columnName(), - "getOtherConfigColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "other_config" to the Row entity - * of attributes. - * @param otherConfig the column data which column name is "other_config" - */ - public void setOtherConfig(Map otherConfig) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.OTHERCONFIG - .columnName(), - "setOtherConfig", - VersionNum.VERSION100); - super.setDataHandler(columndesc, otherConfig); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.EXTERNALIDS - .columnName(), - "getExternalIdsColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription( - PortColumn.EXTERNALIDS - .columnName(), - "setExternalIds", - VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Qos.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Qos.java deleted file mode 100644 index a40aa30c..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Qos.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.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Qos Table. - */ -public class Qos extends AbstractOvsdbTableService { - /** - * Qos table column name. - */ - public enum QosColumn { - QUEUES("queues"), TYPE("type"), OTHERCONFIG("other_config"), EXTERNALIDS("external_ids"); - - private final String columnName; - - private QosColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for QosColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a Qos object. Generate Qos Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Qos(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.QOS, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "queues" from the Row entity - * of attributes. - * @return the Column entity - */ - public Column getQueuesColumn() { - ColumnDescription columndesc = new ColumnDescription(QosColumn.QUEUES.columnName(), - "getQueuesColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "queues" to the Row entity of - * attributes. - * @param queues the column data which column name is "queues" - */ - public void setQueues(Map queues) { - ColumnDescription columndesc = new ColumnDescription(QosColumn.QUEUES.columnName(), "setQueues", - VersionNum.VERSION100); - super.setDataHandler(columndesc, queues); - } - - /** - * Get the Column entity which column name is "type" from the Row entity of - * attributes. - * @return the Column entity - */ - public Column getTypeColumn() { - ColumnDescription columndesc = new ColumnDescription(QosColumn.TYPE.columnName(), "getTypeColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "type" to the Row entity of - * attributes. - * @param type the column data which column name is "type" - */ - public void setType(Set type) { - ColumnDescription columndesc = new ColumnDescription(QosColumn.TYPE.columnName(), "setType", - VersionNum.VERSION100); - super.setDataHandler(columndesc, type); - } - - /** - * Get the Column entity which column name is "other_config" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getOtherConfigColumn() { - ColumnDescription columndesc = new ColumnDescription(QosColumn.OTHERCONFIG.columnName(), - "getOtherConfigColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "other_config" to the Row entity - * of attributes. - * @param otherConfig the column data which column name is "other_config" - */ - public void setOtherConfig(Map otherConfig) { - ColumnDescription columndesc = new ColumnDescription(QosColumn.OTHERCONFIG.columnName(), - "setOtherConfig", VersionNum.VERSION100); - super.setDataHandler(columndesc, otherConfig); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription(QosColumn.EXTERNALIDS.columnName(), - "getExternalIdsColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription(QosColumn.EXTERNALIDS.columnName(), - "setExternalIds", VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Queue.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Queue.java deleted file mode 100644 index a89abafc..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Queue.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.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Queue Table. - */ -public class Queue extends AbstractOvsdbTableService { - /** - * Queue table column name. - */ - public enum QueueColumn { - DSCP("dscp"), OTHERCONFIG("other_config"), EXTERNALIDS("external_ids"); - - private final String columnName; - - private QueueColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for QueueColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a Queue object. Generate Queue Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Queue(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.QUEUE, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "dscp" from the Row entity of - * attributes. - * @return the Column entity - */ - public Column getDscpColumn() { - ColumnDescription columndesc = new ColumnDescription(QueueColumn.DSCP.columnName(), "getDscpColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "dscp" to the Row entity of - * attributes. - * @param dscp the column data which column name is "dscp" - */ - public void setDscp(Set dscp) { - ColumnDescription columndesc = new ColumnDescription(QueueColumn.DSCP.columnName(), "setDscp", - VersionNum.VERSION100); - super.setDataHandler(columndesc, dscp); - } - - /** - * Get the Column entity which column name is "other_config" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getOtherConfigColumn() { - ColumnDescription columndesc = new ColumnDescription(QueueColumn.OTHERCONFIG.columnName(), - "getOtherConfigColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "other_config" to the Row entity - * of attributes. - * @param otherConfig the column data which column name is "other_config" - */ - public void setOtherConfig(Map otherConfig) { - ColumnDescription columndesc = new ColumnDescription(QueueColumn.OTHERCONFIG.columnName(), - "setOtherConfig", VersionNum.VERSION100); - super.setDataHandler(columndesc, otherConfig); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription(QueueColumn.EXTERNALIDS.columnName(), - "getExternalIdsColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription(QueueColumn.EXTERNALIDS.columnName(), - "setExternalIds", VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Sflow.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Sflow.java deleted file mode 100644 index 142f66e3..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Sflow.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Sflow Table. - */ -public class Sflow extends AbstractOvsdbTableService { - /** - * Sflow table column name. - */ - public enum SflowColumn { - TARGETS("targets"), AGENT("agent"), EXTERNALIDS("external_ids"), HAEDER("header"), - POLLING("polling"), SAMPLING("sampling"); - - private final String columnName; - - private SflowColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for SflowColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a Sflow object. Generate Sflow Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Sflow(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.SFLOW, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "targets" from the Row entity - * of attributes. - * @return the Column entity - */ - public Column getTargetsColumn() { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.TARGETS.columnName(), - "getTargetsColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "targets" to the Row entity of - * attributes. - * @param targets the column data which column name is "targets" - */ - public void setTargets(Set targets) { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.TARGETS.columnName(), "setTargets", - VersionNum.VERSION100); - super.setDataHandler(columndesc, targets); - } - - /** - * Get the Column entity which column name is "agent" from the Row entity of - * attributes. - * @return the Column entity - */ - public Column getAgentColumn() { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.AGENT.columnName(), - "getAgentColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "agent" to the Row entity of - * attributes. - * @param agent the column data which column name is "agent" - */ - public void setAgent(Set agent) { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.AGENT.columnName(), "setAgent", - VersionNum.VERSION100); - super.setDataHandler(columndesc, agent); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.EXTERNALIDS.columnName(), - "getExternalIdsColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.EXTERNALIDS.columnName(), - "setExternalIds", VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } - - /** - * Get the Column entity which column name is "header" from the Row entity - * of attributes. - * @return the Column entity - */ - public Column getHeaderColumn() { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.HAEDER.columnName(), - "getHeaderColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "header" to the Row entity of - * attributes. - * @param header the column data which column name is "header" - */ - public void setHeader(Set header) { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.HAEDER.columnName(), "setHeader", - VersionNum.VERSION100); - super.setDataHandler(columndesc, header); - } - - /** - * Get the Column entity which column name is "polling" from the Row entity - * of attributes. - * @return the Column entity - */ - public Column getPollingColumn() { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.POLLING.columnName(), - "getPollingColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "polling" to the Row entity of - * attributes. - * @param polling the column data which column name is "polling" - */ - public void setPolling(Set polling) { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.POLLING.columnName(), "setPolling", - VersionNum.VERSION100); - super.setDataHandler(columndesc, polling); - } - - /** - * Get the Column entity which column name is "sampling" from the Row entity - * of attributes. - * @return the Column entity - */ - public Column getSamplingColumn() { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.SAMPLING.columnName(), - "getSamplingColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "sampling" to the Row entity of - * attributes. - * @param sampling the column data which column name is "sampling" - */ - public void setSampling(Set sampling) { - ColumnDescription columndesc = new ColumnDescription(SflowColumn.SAMPLING.columnName(), - "setSampling", VersionNum.VERSION100); - super.setDataHandler(columndesc, sampling); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ssl.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ssl.java deleted file mode 100644 index 188dee52..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ssl.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -import java.util.Map; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService; -import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription; - -/** - * This class provides operations of Ssl Table. - */ -public class Ssl extends AbstractOvsdbTableService { - /** - * Ssl table column name. - */ - public enum SslColumn { - CACERT("ca_cert"), EXTERNALIDS("external_ids"), BOOTSTRAPCACERT("bootstrap_ca_cert"), - CERTIFICATE("certificate"), PRIVATEKEY("private_key"); - - private final String columnName; - - private SslColumn(String columnName) { - this.columnName = columnName; - } - - /** - * Returns the table column name for SslColumn. - * @return the table column name - */ - public String columnName() { - return columnName; - } - } - - /** - * Constructs a Ssl object. Generate Ssl Table Description. - * @param dbSchema DatabaseSchema - * @param row Row - */ - public Ssl(DatabaseSchema dbSchema, Row row) { - super(dbSchema, row, OvsdbTable.SSL, VersionNum.VERSION100); - } - - /** - * Get the Column entity which column name is "ca_cert" from the Row entity - * of attributes. - * @return the Column entity - */ - public Column getCaCertColumn() { - ColumnDescription columndesc = new ColumnDescription(SslColumn.CACERT.columnName(), - "getCaCertColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "ca_cert" to the Row entity of - * attributes. - * @param caCert the column data which column name is "ca_cert" - */ - public void setCaCert(String caCert) { - ColumnDescription columndesc = new ColumnDescription(SslColumn.CACERT.columnName(), "setCaCert", - VersionNum.VERSION100); - super.setDataHandler(columndesc, caCert); - } - - /** - * Get the Column entity which column name is "external_ids" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getExternalIdsColumn() { - ColumnDescription columndesc = new ColumnDescription(SslColumn.EXTERNALIDS.columnName(), - "getExternalIdsColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "external_ids" to the Row entity - * of attributes. - * @param externalIds the column data which column name is "external_ids" - */ - public void setExternalIds(Map externalIds) { - ColumnDescription columndesc = new ColumnDescription(SslColumn.EXTERNALIDS.columnName(), - "setExternalIds", VersionNum.VERSION100); - super.setDataHandler(columndesc, externalIds); - } - - /** - * Get the Column entity which column name is "bootstrap_ca_cert" from the - * Row entity of attributes. - * @return the Column entity - */ - public Column getBootstrapCaCertColumn() { - ColumnDescription columndesc = new ColumnDescription(SslColumn.BOOTSTRAPCACERT.columnName(), - "getBootstrapCaCertColumn", - VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "bootstrap_ca_cert" to the Row - * entity of attributes. - * @param bootstrapCaCert the column data which column name is - * "bootstrap_ca_cert" - */ - public void setBootstrapCaCert(Boolean bootstrapCaCert) { - ColumnDescription columndesc = new ColumnDescription(SslColumn.BOOTSTRAPCACERT.columnName(), - "setBootstrapCaCert", VersionNum.VERSION100); - super.setDataHandler(columndesc, bootstrapCaCert); - } - - /** - * Get the Column entity which column name is "certificate" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getCertificateColumn() { - ColumnDescription columndesc = new ColumnDescription(SslColumn.CERTIFICATE.columnName(), - "getCertificateColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "certificate" to the Row entity - * of attributes. - * @param certificate the column data which column name is "certificate" - */ - public void setCertificate(String certificate) { - ColumnDescription columndesc = new ColumnDescription(SslColumn.CERTIFICATE.columnName(), - "setCertificate", VersionNum.VERSION100); - super.setDataHandler(columndesc, certificate); - } - - /** - * Get the Column entity which column name is "private_key" from the Row - * entity of attributes. - * @return the Column entity - */ - public Column getPrivateKeyColumn() { - ColumnDescription columndesc = new ColumnDescription(SslColumn.PRIVATEKEY.columnName(), - "getPrivateKeyColumn", VersionNum.VERSION100); - return (Column) super.getColumnHandler(columndesc); - } - - /** - * Add a Column entity which column name is "private_key" to the Row entity - * of attributes. - * @param privatekey the column data which column name is "private_key" - */ - public void setPrivateKey(String privatekey) { - ColumnDescription columndesc = new ColumnDescription(SslColumn.PRIVATEKEY.columnName(), - "setPrivateKey", VersionNum.VERSION100); - super.setDataHandler(columndesc, privatekey); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/TableGenerator.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/TableGenerator.java deleted file mode 100644 index f5bd860d..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/TableGenerator.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.ovsdb.rfc.table; - -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; - -/** - * Table generator. - */ -public final class TableGenerator { - - /** - * Constructs a TableGenerator object. Utility classes should not have a - * public or default constructor, otherwise it will compile failed. This - * class should not be instantiated. - */ - private TableGenerator() { - } - - /** - * Create table. - * @param dbSchema DatabaseSchema entity - * @param tableName table name - * @return Object table entity - */ - //FIXME change the name, it creates a row object, such as a controller. - public static Object createTable(DatabaseSchema dbSchema, - OvsdbTable tableName) { - Row row = new Row(); - return generateTable(dbSchema, row, tableName); - } - - /** - * Get table from Row. - * @param dbSchema DatabaseSchema entity - * @param row Row entity - * @param tableName table name - * @return Object table entity - */ - public static Object getTable(DatabaseSchema dbSchema, Row row, - OvsdbTable tableName) { - return generateTable(dbSchema, row, tableName); - } - - /** - * Generate the table by table name. - * @param dbSchema DatabaseSchema entity - * @param row Row entity - * @param tableName table name - * @return Object Table entity - */ - private static Object generateTable(DatabaseSchema dbSchema, Row row, - OvsdbTable tableName) { - switch (tableName) { - case INTERFACE: - return new Interface(dbSchema, row); - case BRIDGE: - return new Bridge(dbSchema, row); - case CONTROLLER: - return new Controller(dbSchema, row); - case OPENVSWITCH: - return new OpenVSwitch(dbSchema, row); - case PORT: - return new Port(dbSchema, row); - case FLWTABLE: - return new FlowTable(dbSchema, row); - case QOS: - return new Qos(dbSchema, row); - case QUEUE: - return new Queue(dbSchema, row); - case MIRROR: - return new Mirror(dbSchema, row); - case MANAGER: - return new Manager(dbSchema, row); - case NETFLOW: - return new Netflow(dbSchema, row); - case SSL: - return new Ssl(dbSchema, row); - case SFLOW: - return new Sflow(dbSchema, row); - case IPFIX: - return new Ipfix(dbSchema, row); - case FLOWSAMPLECOLLECTORSET: - return new FlowSampleCollectorSet(dbSchema, row); - default: - return null; - } - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/VersionNum.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/VersionNum.java deleted file mode 100644 index 8b356420..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/VersionNum.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.table; - -/** - * The version number of tables and columns. - */ -public enum VersionNum { - VERSION100("1.0.0"), VERSION102("1.0.2"), VERSION103("1.0.3"), - VERSION104("1.0.4"), VERSION106("1.0.6"), VERSION110("1.1.0"), - VERSION130("1.3.0"), VERSION200("2.0.0"), VERSION300("3.0.0"), - VERSION330("3.3.0"), VERSION350("3.5.0"), VERSION400("4.0.0"), - VERSION510("5.1.0"), VERSION520("5.2.0"), VERSION600("6.0.0"), - VERSION610("6.1.0"), VERSION620("6.2.0"), VERSION630("6.3.0"), - VERSION640("6.4.0"), VERSION650("6.5.0"), VERSION660("6.6.0"), - VERSION670("6.7.0"), VERSION680("6.8.0"), VERSION690("6.9.0"), - VERSION6100("6.10.0"), VERSION6111("6.11.1"), VERSION710("7.1.0"), - VERSION720("7.2.0"), VERSION721("7.2.1"), VERSION730("7.3.0"), - VERSION740("7.4.0"), VERSION750("7.5.0"), VERSION770("7.7.0"); - - private final String versionNum; - - private VersionNum(String versionNum) { - this.versionNum = versionNum; - } - - /** - * Returns the version number for VersionNum. - * @return the version number - */ - public String versionNum() { - return versionNum; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/package-info.java deleted file mode 100644 index e235b168..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/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. - */ - -/** - * OVSDB table definitions. - */ -package org.onosproject.ovsdb.rfc.table; diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/AbstractOvsdbTableService.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/AbstractOvsdbTableService.java deleted file mode 100644 index af1a01d6..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/AbstractOvsdbTableService.java +++ /dev/null @@ -1,284 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.tableservice; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.ovsdb.rfc.exception.ColumnSchemaNotFoundException; -import org.onosproject.ovsdb.rfc.exception.TableSchemaNotFoundException; -import org.onosproject.ovsdb.rfc.exception.VersionMismatchException; -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.schema.ColumnSchema; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.schema.TableSchema; -import org.onosproject.ovsdb.rfc.table.OvsdbTable; -import org.onosproject.ovsdb.rfc.table.VersionNum; -import org.onosproject.ovsdb.rfc.utils.VersionUtil; - -/** - * Representation of conversion between Ovsdb table and Row. - */ -public abstract class AbstractOvsdbTableService implements OvsdbTableService { - - private final DatabaseSchema dbSchema; - private final Row row; - private final TableDescription tableDesc; - - /** - * Constructs a AbstractOvsdbTableService object. - * @param dbSchema DatabaseSchema entity - * @param row Row entity - * @param table table name - * @param formVersion the initial version - */ - public AbstractOvsdbTableService(DatabaseSchema dbSchema, Row row, OvsdbTable table, - VersionNum formVersion) { - checkNotNull(dbSchema, "database schema cannot be null"); - checkNotNull(row, "row cannot be null"); - checkNotNull(table, "table cannot be null"); - checkNotNull(formVersion, "the initial version cannot be null"); - this.dbSchema = dbSchema; - row.setTableName(table.tableName()); - this.row = row; - TableDescription tableDesc = new TableDescription(table, formVersion); - this.tableDesc = tableDesc; - } - - /** - * Check whether the parameter of dbSchema is valid and check whether the - * table is existent in Database Schema. - */ - private boolean isValid() { - if (dbSchema == null) { - return false; - } - if (!dbSchema.name().equalsIgnoreCase(tableDesc.database())) { - return false; - } - checkTableSchemaVersion(); - return true; - } - - /** - * Check the table version. - */ - private void checkTableSchemaVersion() { - String fromVersion = tableDesc.fromVersion(); - String untilVersion = tableDesc.untilVersion(); - String schemaVersion = dbSchema.version(); - checkVersion(schemaVersion, fromVersion, untilVersion); - } - - /** - * Check the column version. - * @param columnDesc ColumnDescription entity - */ - private void checkColumnSchemaVersion(ColumnDescription columnDesc) { - String fromVersion = columnDesc.fromVersion(); - String untilVersion = columnDesc.untilVersion(); - String schemaVersion = dbSchema.version(); - checkVersion(schemaVersion, fromVersion, untilVersion); - } - - /** - * Check whether the DatabaseSchema version between the initial version and - * the end of the version. - * @param schemaVersion DatabaseSchema version - * @param fromVersion The initial version - * @param untilVersion The end of the version - * @throws VersionMismatchException this is a version mismatch exception - */ - private void checkVersion(String schemaVersion, String fromVersion, String untilVersion) { - VersionUtil.versionMatch(fromVersion); - VersionUtil.versionMatch(untilVersion); - if (!fromVersion.equals(VersionUtil.DEFAULT_VERSION_STRING)) { - if (VersionUtil.versionCompare(schemaVersion, fromVersion) < 0) { - String message = VersionMismatchException.createFromMessage(schemaVersion, - fromVersion); - throw new VersionMismatchException(message); - } - } - if (!untilVersion.equals(VersionUtil.DEFAULT_VERSION_STRING)) { - if (VersionUtil.versionCompare(untilVersion, schemaVersion) < 0) { - String message = VersionMismatchException.createToMessage(schemaVersion, - untilVersion); - throw new VersionMismatchException(message); - } - } - } - - /** - * Returns TableSchema from dbSchema by table name. - * @return TableSchema - */ - private TableSchema getTableSchema() { - String tableName = tableDesc.name(); - return dbSchema.getTableSchema(tableName); - } - - /** - * Returns ColumnSchema from TableSchema by column name. - * @param columnName column name - * @return ColumnSchema - */ - private ColumnSchema getColumnSchema(String columnName) { - TableSchema tableSchema = getTableSchema(); - if (tableSchema == null) { - String message = TableSchemaNotFoundException.createMessage(tableDesc.name(), - dbSchema.name()); - throw new TableSchemaNotFoundException(message); - } - ColumnSchema columnSchema = tableSchema.getColumnSchema(columnName); - if (columnSchema == null) { - String message = ColumnSchemaNotFoundException.createMessage(columnName, - tableSchema.name()); - throw new ColumnSchemaNotFoundException(message); - } - return columnSchema; - } - - @Override - public Column getColumnHandler(ColumnDescription columnDesc) { - if (!isValid()) { - return null; - } - String columnName = columnDesc.name(); - checkColumnSchemaVersion(columnDesc); - ColumnSchema columnSchema = getColumnSchema(columnName); - if (row == null) { - return null; - } - return row.getColumn(columnSchema.name()); - } - - @Override - public Object getDataHandler(ColumnDescription columnDesc) { - if (!isValid()) { - return null; - } - String columnName = columnDesc.name(); - checkColumnSchemaVersion(columnDesc); - ColumnSchema columnSchema = getColumnSchema(columnName); - if (row == null || row.getColumn(columnSchema.name()) == null) { - return null; - } - return row.getColumn(columnSchema.name()).data(); - } - - @Override - public void setDataHandler(ColumnDescription columnDesc, Object obj) { - if (!isValid()) { - return; - } - String columnName = columnDesc.name(); - checkColumnSchemaVersion(columnDesc); - ColumnSchema columnSchema = getColumnSchema(columnName); - Column column = new Column(columnSchema.name(), obj); - row.addColumn(columnName, column); - } - - @Override - public UUID getTableUuid() { - if (!isValid()) { - return null; - } - ColumnDescription columnDesc = new ColumnDescription("_uuid", "getTableUuid"); - return (UUID) getDataHandler(columnDesc); - } - - @Override - public Column getTableUuidColumn() { - if (!isValid()) { - return null; - } - ColumnDescription columnDesc = new ColumnDescription("_uuid", "getTableUuidColumn"); - return getColumnHandler(columnDesc); - } - - @Override - public UUID getTableVersion() { - if (!isValid()) { - return null; - } - ColumnDescription columnDesc = new ColumnDescription("_version", "getTableVersion"); - return (UUID) getDataHandler(columnDesc); - } - - @Override - public Column getTableVersionColumn() { - if (!isValid()) { - return null; - } - ColumnDescription columnDesc = new ColumnDescription("_version", "getTableVersionColumn"); - return getColumnHandler(columnDesc); - } - - /** - * Get DatabaseSchema entity. - * @return DatabaseSchema entity - */ - public DatabaseSchema dbSchema() { - return dbSchema; - } - - /** - * Get Row entity. - * @return Row entity - */ - public Row getRow() { - if (!isValid()) { - return null; - } - return this.row; - } - - /** - * Get TableDescription entity. - * @return TableDescription entity - */ - public TableDescription tableDesc() { - return tableDesc; - } - - @Override - public int hashCode() { - return row.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof AbstractOvsdbTableService) { - final AbstractOvsdbTableService other = (AbstractOvsdbTableService) obj; - return Objects.equals(this.row, other.row); - } - return false; - } - - @Override - public String toString() { - TableSchema schema = getTableSchema(); - String tableName = schema.name(); - return toStringHelper(this).add("tableName", tableName).add("row", row).toString(); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/ColumnDescription.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/ColumnDescription.java deleted file mode 100644 index 910b3296..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/ColumnDescription.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.ovsdb.rfc.tableservice; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.ovsdb.rfc.table.VersionNum; -import org.onosproject.ovsdb.rfc.utils.VersionUtil; - -/** - * Column description. - */ -public class ColumnDescription { - - // The column name - private final String name; - // The method name - private final String method; - // The initial version - private final String fromVersion; - // The end of the version - private final String untilVersion; - - /** - * Constructs a MonitorRequest object. - * @param name column name - * @param method method name - */ - public ColumnDescription(String name, String method) { - checkNotNull(name, "name cannot be null"); - checkNotNull(method, "method cannot be null"); - this.name = name; - this.method = method; - this.fromVersion = VersionUtil.DEFAULT_VERSION_STRING; - this.untilVersion = VersionUtil.DEFAULT_VERSION_STRING; - } - - /** - * Constructs a MonitorRequest object. - * @param name column name - * @param method method name - * @param fromVersion the initial version - */ - public ColumnDescription(String name, String method, VersionNum fromVersion) { - checkNotNull(name, "name cannot be null"); - checkNotNull(method, "method cannot be null"); - checkNotNull(fromVersion, "the initial version cannot be null"); - this.name = name; - this.method = method; - this.fromVersion = fromVersion.versionNum(); - this.untilVersion = VersionUtil.DEFAULT_VERSION_STRING; - } - - /** - * Constructs a MonitorRequest object. - * @param name column name - * @param method method name - * @param fromVersion the initial version - * @param untilVersion the end of the version - */ - public ColumnDescription(String name, String method, VersionNum fromVersion, - VersionNum untilVersion) { - checkNotNull(name, "name cannot be null"); - checkNotNull(method, "method cannot be null"); - checkNotNull(fromVersion, "the initial version cannot be null"); - checkNotNull(untilVersion, "the end of the version cannot be null"); - this.name = name; - this.method = method; - this.fromVersion = fromVersion.versionNum(); - this.untilVersion = untilVersion.versionNum(); - } - - /** - * Returns the column name. - * @return the column name - */ - public String name() { - return name; - } - - /** - * Returns the method name. - * @return the method name - */ - public String method() { - return method; - } - - /** - * Returns the initial version. - * @return the initial version - */ - public String fromVersion() { - return fromVersion; - } - - /** - * Returns the end of the version. - * @return the end of the version - */ - public String untilVersion() { - return untilVersion; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/OvsdbTableService.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/OvsdbTableService.java deleted file mode 100644 index 58b656ef..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/OvsdbTableService.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.tableservice; - -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.UUID; - -/** - * Representation of conversion between Ovsdb table and Row. - */ -public interface OvsdbTableService { - - /** - * Get Column from row. - * @param columndesc Column description - * @return Column - */ - public Column getColumnHandler(ColumnDescription columndesc); - - /** - * Get Data from row. - * @param columndesc Column description - * @return Object column data - */ - public Object getDataHandler(ColumnDescription columndesc); - - /** - * Set column data of row. - * @param columndesc Column description - * @param obj column data - */ - public void setDataHandler(ColumnDescription columndesc, Object obj); - - /** - * Returns UUID which column name is _uuid. - * @return UUID - */ - public UUID getTableUuid(); - - /** - * Returns UUID Column which column name is _uuid. - * @return UUID Column - */ - public Column getTableUuidColumn(); - - /** - * Returns UUID which column name is _version. - * @return UUID - */ - public UUID getTableVersion(); - - /** - * Returns UUID Column which column name is _version. - * @return UUID Column - */ - public Column getTableVersionColumn(); -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/TableDescription.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/TableDescription.java deleted file mode 100644 index d120cab8..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/TableDescription.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.ovsdb.rfc.tableservice; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.ovsdb.rfc.table.OvsdbTable; -import org.onosproject.ovsdb.rfc.table.VersionNum; -import org.onosproject.ovsdb.rfc.utils.VersionUtil; - -/** - * Table description. - */ -public class TableDescription { - - // The table name - private final String name; - // The database name - private final String database = "Open_vSwitch"; - // The initial version - private final String fromVersion; - // The end of the version - private final String untilVersion; - - /** - * Constructs a MonitorRequest object. - * @param table OvsdbTable entity - */ - public TableDescription(OvsdbTable table) { - checkNotNull(table, "table cannot be null"); - this.name = table.tableName(); - this.fromVersion = VersionUtil.DEFAULT_VERSION_STRING; - this.untilVersion = VersionUtil.DEFAULT_VERSION_STRING; - } - - /** - * Constructs a MonitorRequest object. - * @param table OvsdbTable entity - * @param fromVersion the initial version - */ - public TableDescription(OvsdbTable table, VersionNum fromVersion) { - checkNotNull(table, "table cannot be null"); - checkNotNull(fromVersion, "the initial version cannot be null"); - this.name = table.tableName(); - this.fromVersion = fromVersion.versionNum(); - this.untilVersion = VersionUtil.DEFAULT_VERSION_STRING; - } - - /** - * Constructs a MonitorRequest object. - * @param table OvsdbTable entity - * @param fromVersion the initial version - * @param untilVersion the end of the version - */ - public TableDescription(OvsdbTable table, VersionNum fromVersion, VersionNum untilVersion) { - checkNotNull(table, "table cannot be null"); - checkNotNull(fromVersion, "the initial version cannot be null"); - checkNotNull(untilVersion, "the end of the version cannot be null"); - this.name = table.tableName(); - this.fromVersion = fromVersion.versionNum(); - this.untilVersion = untilVersion.versionNum(); - } - - /** - * Returns the column name. - * @return the column name - */ - public String name() { - return name; - } - - /** - * Returns the database name. - * @return the database name - */ - public String database() { - return database; - } - - /** - * Returns the initial version. - * @return the initial version - */ - public String fromVersion() { - return fromVersion; - } - - /** - * Returns the end of the version. - * @return the end of the version - */ - public String untilVersion() { - return untilVersion; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/package-info.java deleted file mode 100644 index cc607da7..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/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. - */ - -/** - * OVSDB table service definitions. - */ -package org.onosproject.ovsdb.rfc.tableservice; diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ConditionUtil.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ConditionUtil.java deleted file mode 100644 index 527b8bfe..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ConditionUtil.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.utils; - -import org.onosproject.ovsdb.rfc.notation.Condition; -import org.onosproject.ovsdb.rfc.notation.Condition.Function; - -/** - * Condition utility class. - */ -public final class ConditionUtil { - - /** - * Constructs a ConditionUtil object. Utility classes should not have a - * public or default constructor, otherwise IDE will compile unsuccessfully. This - * class should not be instantiated. - */ - private ConditionUtil() { - } - - /** - * Returns a Condition that means Function.EQUALS . - * @param columnName column name - * @param data column value - * @return Condition - */ - public static Condition equals(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Condition(columnName, Function.EQUALS, value); - } - - /** - * Returns a Condition that means Function.NOT_EQUALS . - * @param columnName column name - * @param data column value - * @return Condition - */ - public static Condition unEquals(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Condition(columnName, Function.NOT_EQUALS, value); - } - - /** - * Returns a Condition that means Function.GREATER_THAN . - * @param columnName column name - * @param data column value - * @return Condition - */ - public static Condition greaterThan(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Condition(columnName, Function.GREATER_THAN, value); - } - - /** - * Returns a Condition that means Function.GREATER_THAN_OR_EQUALS . - * @param columnName column name - * @param data column value - * @return Condition - */ - public static Condition greaterThanOrEquals(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Condition(columnName, Function.GREATER_THAN_OR_EQUALS, value); - } - - /** - * Returns a Condition that means Function.LESS_THAN . - * @param columnName column name - * @param data column value - * @return Condition - */ - public static Condition lesserThan(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Condition(columnName, Function.LESS_THAN, value); - } - - /** - * Returns a Condition that means Function.LESS_THAN_OR_EQUALS . - * @param columnName column name - * @param data column value - * @return Condition - */ - public static Condition lesserThanOrEquals(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Condition(columnName, Function.LESS_THAN_OR_EQUALS, value); - } - - /** - * Returns a Condition that means Function.INCLUDES . - * @param columnName column name - * @param data column value - * @return Condition - */ - public static Condition includes(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Condition(columnName, Function.INCLUDES, value); - } - - /** - * Returns a Condition that means Function.EXCLUDES . - * @param columnName column name - * @param data column value - * @return Condition - */ - public static Condition excludes(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Condition(columnName, Function.EXCLUDES, value); - } - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java deleted file mode 100644 index 1dcf48f3..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java +++ /dev/null @@ -1,319 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.utils; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import org.onosproject.ovsdb.rfc.exception.AbnormalJsonNodeException; -import org.onosproject.ovsdb.rfc.exception.UnsupportedException; -import org.onosproject.ovsdb.rfc.jsonrpc.Callback; -import org.onosproject.ovsdb.rfc.jsonrpc.JsonRpcResponse; -import org.onosproject.ovsdb.rfc.message.OperationResult; -import org.onosproject.ovsdb.rfc.message.RowUpdate; -import org.onosproject.ovsdb.rfc.message.TableUpdate; -import org.onosproject.ovsdb.rfc.message.TableUpdates; -import org.onosproject.ovsdb.rfc.message.UpdateNotification; -import org.onosproject.ovsdb.rfc.notation.Column; -import org.onosproject.ovsdb.rfc.notation.Row; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.operations.Operation; -import org.onosproject.ovsdb.rfc.schema.ColumnSchema; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.schema.TableSchema; -import org.onosproject.ovsdb.rfc.schema.type.ColumnTypeFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -/** - * JsonNode utility class. convert JsonNode into Object. - */ -public final class FromJsonUtil { - - private static final Logger log = LoggerFactory.getLogger(FromJsonUtil.class); - - /** - * Constructs a FromJsonUtil object. Utility classes should not have a - * public or default constructor, otherwise IDE will compile unsuccessfully. - * This class should not be instantiated. - */ - private FromJsonUtil() { - } - - /** - * Verify whether the jsonNode is normal. - * @param jsonNode JsonNode - * @param nodeStr the node name of JsonNode - */ - private static void validateJsonNode(JsonNode jsonNode, String nodeStr) { - if (!jsonNode.isObject() || !jsonNode.has(nodeStr)) { - String message = "Abnormal DatabaseSchema JsonNode, it should contain " + nodeStr - + " node but was not found"; - throw new AbnormalJsonNodeException(message); - } - } - - /** - * convert JsonNode into DatabaseSchema. - * @param dbName database name - * @param dbJson the JsonNode of get_schema result - * @return DatabaseSchema - * @throws AbnormalJsonNodeException this is an abnormal JsonNode exception - */ - public static DatabaseSchema jsonNodeToDbSchema(String dbName, JsonNode dbJson) { - validateJsonNode(dbJson, "tables"); - validateJsonNode(dbJson, "version"); - String dbVersion = dbJson.get("version").asText(); - Map tables = new HashMap<>(); - Iterator> tablesIter = dbJson.get("tables").fields(); - while (tablesIter.hasNext()) { - Map.Entry table = tablesIter.next(); - tables.put(table.getKey(), jsonNodeToTableSchema(table.getKey(), table.getValue())); - } - return new DatabaseSchema(dbName, dbVersion, tables); - } - - /** - * convert JsonNode into TableSchema. - * @param tableName table name - * @param tableJson table JsonNode - * @return TableSchema - * @throws AbnormalJsonNodeException this is an abnormal JsonNode exception - */ - private static TableSchema jsonNodeToTableSchema(String tableName, JsonNode tableJson) { - validateJsonNode(tableJson, "columns"); - Map columns = new HashMap<>(); - Iterator> columnsIter = tableJson.get("columns").fields(); - while (columnsIter.hasNext()) { - Map.Entry column = columnsIter.next(); - columns.put(column.getKey(), jsonNodeToColumnSchema(column.getKey(), column.getValue())); - } - return new TableSchema(tableName, columns); - } - - /** - * convert JsonNode into ColumnSchema. - * @param name column name - * @param columnJson column JsonNode - * @return ColumnSchema - * @throws AbnormalJsonNodeException this is an abnormal JsonNode exception - */ - private static ColumnSchema jsonNodeToColumnSchema(String name, JsonNode columnJson) { - validateJsonNode(columnJson, "type"); - return new ColumnSchema(name, ColumnTypeFactory.getColumnTypeFromJson(columnJson - .get("type"))); - } - - /** - * convert JsonNode into the returnType of methods in OvsdbRPC class. - * @param resultJsonNode the result JsonNode - * @param methodName the method name of methods in OvsdbRPC class - * @param objectMapper ObjectMapper entity - * @return Object - * @throws UnsupportedException this is an unsupported exception - */ - private static Object convertResultType(JsonNode resultJsonNode, String methodName, - ObjectMapper objectMapper) { - switch (methodName) { - case "getSchema": - case "monitor": - return resultJsonNode; - case "echo": - case "listDbs": - return objectMapper.convertValue(resultJsonNode, objectMapper.getTypeFactory() - .constructParametricType(List.class, String.class)); - case "transact": - return objectMapper.convertValue(resultJsonNode, objectMapper.getTypeFactory() - .constructParametricType(List.class, JsonNode.class)); - default: - throw new UnsupportedException("does not support this rpc method" + methodName); - } - } - - /** - * convert JsonNode into the returnType of methods in OvsdbRPC class. - * @param jsonNode the result JsonNode - * @param methodName the method name of methods in OvsdbRPC class - * @return Object - */ - public static Object jsonResultParser(JsonNode jsonNode, String methodName) { - ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper(); - JsonNode error = jsonNode.get("error"); - if (error != null && !error.isNull()) { - log.error("jsonRpcResponse error : {}", error.toString()); - } - JsonNode resultJsonNode = jsonNode.get("result"); - Object result = convertResultType(resultJsonNode, methodName, objectMapper); - return result; - } - - /** - * When monitor the ovsdb tables, if a table update, ovs send update - * notification, then call callback function. - * @param jsonNode the result JsonNode - * @param callback the callback function - * @throws UnsupportedException this is an unsupported exception - */ - public static void jsonCallbackRequestParser(JsonNode jsonNode, Callback callback) { - ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper(); - JsonNode params = jsonNode.get("params"); - Object param = null; - String methodName = jsonNode.get("method").asText(); - switch (methodName) { - case "update": - param = objectMapper.convertValue(params, UpdateNotification.class); - callback.update((UpdateNotification) param); - break; - default: - throw new UnsupportedException("does not support this callback method: " + methodName); - } - } - - /** - * Ovs send echo request to keep the heart, need we return echo result. - * @param jsonNode the result JsonNode - * @return JsonRpcResponse String - */ - public static String getEchoRequestStr(JsonNode jsonNode) { - ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper(); - String str = null; - if (jsonNode.get("method").asText().equals("echo")) { - JsonRpcResponse response = new JsonRpcResponse(jsonNode.get("id").asText()); - try { - str = objectMapper.writeValueAsString(response); - } catch (JsonProcessingException e) { - log.error("JsonProcessingException while converting JsonNode into string: ", e); - } - } - return str; - } - - /** - * Convert the List of Operation result into List of OperationResult . - * @param input the List of JsonNode - * @param operations the List of Operation - * @return the List of OperationResult - */ - public static List jsonNodeToOperationResult(List input, - List operations) { - ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper(false); - List operationResults = new ArrayList(); - for (int i = 0; i < input.size(); i++) { - JsonNode jsonNode = input.get(i); - Operation operation = operations.get(i); - if (jsonNode != null && jsonNode.size() > 0) { - if (i >= operations.size() || operation.getOp() != "select") { - OperationResult or = objectMapper.convertValue(jsonNode, OperationResult.class); - operationResults.add(or); - } else { - List rows = createRows(operation.getTableSchema(), jsonNode); - OperationResult or = new OperationResult(rows); - operationResults.add(or); - } - } - } - return operationResults; - } - - /** - * Convert Operation JsonNode into Rows. - * @param tableSchema TableSchema entity - * @param rowsNode JsonNode - * @return ArrayList the List of Row - */ - private static ArrayList createRows(TableSchema tableSchema, JsonNode rowsNode) { - validateJsonNode(rowsNode, "rows"); - ArrayList rows = Lists.newArrayList(); - for (JsonNode rowNode : rowsNode.get("rows")) { - rows.add(createRow(tableSchema, null, rowNode)); //FIXME null will throw exception - } - return rows; - } - - /** - * convert the params of Update Notification into TableUpdates. - * @param updatesJson the params of Update Notification - * @param dbSchema DatabaseSchema entity - * @return TableUpdates - */ - public static TableUpdates jsonNodeToTableUpdates(JsonNode updatesJson, DatabaseSchema dbSchema) { - Map tableUpdateMap = Maps.newHashMap(); - Iterator> tableUpdatesItr = updatesJson.fields(); - while (tableUpdatesItr.hasNext()) { - Map.Entry entry = tableUpdatesItr.next(); - TableSchema tableSchema = dbSchema.getTableSchema(entry.getKey()); - TableUpdate tableUpdate = jsonNodeToTableUpdate(tableSchema, entry.getValue()); - tableUpdateMap.put(entry.getKey(), tableUpdate); - } - return TableUpdates.tableUpdates(tableUpdateMap); - } - - /** - * convert the params of Update Notification into TableUpdate. - * @param tableSchema TableSchema entity - * @param updateJson the table-update in params of Update Notification - * @return TableUpdate - */ - public static TableUpdate jsonNodeToTableUpdate(TableSchema tableSchema, JsonNode updateJson) { - Map rows = Maps.newHashMap(); - Iterator> tableUpdateItr = updateJson.fields(); - while (tableUpdateItr.hasNext()) { - Map.Entry oldNewRow = tableUpdateItr.next(); - String uuidStr = oldNewRow.getKey(); - UUID uuid = UUID.uuid(uuidStr); - JsonNode newR = oldNewRow.getValue().get("new"); - JsonNode oldR = oldNewRow.getValue().get("old"); - Row newRow = newR != null ? createRow(tableSchema, uuid, newR) : null; - Row oldRow = oldR != null ? createRow(tableSchema, uuid, oldR) : null; - RowUpdate rowUpdate = new RowUpdate(uuid, oldRow, newRow); - rows.put(uuid, rowUpdate); - } - return TableUpdate.tableUpdate(rows); - } - - /** - * Convert Operation JsonNode into Row. - * @param tableSchema TableSchema entity - * @param rowNode JsonNode - * @return Row - */ - private static Row createRow(TableSchema tableSchema, UUID uuid, JsonNode rowNode) { - if (tableSchema == null) { - return null; - } - Map columns = Maps.newHashMap(); - Iterator> rowIter = rowNode.fields(); - while (rowIter.hasNext()) { - Map.Entry next = rowIter.next(); - ColumnSchema columnSchema = tableSchema.getColumnSchema(next.getKey()); - if (columnSchema != null) { - String columnName = columnSchema.name(); - Object obj = TransValueUtil.getValueFromJson(next.getValue(), columnSchema.type()); - columns.put(columnName, new Column(columnName, obj)); - } - } - return new Row(tableSchema.name(), uuid, columns); - } - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.java deleted file mode 100644 index 2a88199d..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.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.ovsdb.rfc.utils; - -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufInputStream; - -import java.io.IOException; -import java.util.List; -import java.util.Stack; - -import org.onosproject.ovsdb.rfc.exception.UnsupportedException; -import org.onosproject.ovsdb.rfc.jsonrpc.JsonReadContext; - -import com.fasterxml.jackson.core.JsonEncoding; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.io.IOContext; -import com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper; -import com.fasterxml.jackson.core.util.BufferRecycler; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.MappingJsonFactory; - -/** - * Decoder utility class. - */ -public final class JsonRpcReaderUtil { - - /** - * Constructs a JsonRpcReaderUtil object. Utility classes should not have a - * public or default constructor, otherwise IDE will compile unsuccessfully. - * This class should not be instantiated. - */ - private JsonRpcReaderUtil() { - } - - /** - * Decode the bytes to Json object. - * @param in input of bytes - * @param out ouput of Json object list - * @param jrContext context for the last decoding process - * @throws IOException IOException - * @throws JsonParseException JsonParseException - */ - public static void readToJsonNode(ByteBuf in, List out, JsonReadContext jrContext) - throws JsonParseException, IOException { - int lastReadBytes = jrContext.getLastReadBytes(); - if (lastReadBytes == 0) { - if (in.readableBytes() < 4) { - return; - } - checkEncoding(in); - } - - int i = lastReadBytes + in.readerIndex(); - Stack bufStack = jrContext.getBufStack(); - for (; i < in.writerIndex(); i++) { - byte b = in.getByte(i); - switch (b) { - case '{': - if (!isDoubleQuote(bufStack)) { - bufStack.push(b); - jrContext.setStartMatch(true); - } - break; - case '}': - if (!isDoubleQuote(bufStack)) { - bufStack.pop(); - } - break; - case '"': - if (in.getByte(i - 1) != '\\') { - if (!bufStack.isEmpty() && bufStack.peek() != '"') { - bufStack.push(b); - } else { - bufStack.pop(); - } - } - break; - default: - break; - } - - if (jrContext.isStartMatch() && bufStack.isEmpty()) { - ByteBuf buf = in.readSlice(i - in.readerIndex() + 1); - JsonParser jf = new MappingJsonFactory().createParser(new ByteBufInputStream(buf)); - JsonNode jsonNode = jf.readValueAsTree(); - out.add(jsonNode); - lastReadBytes = 0; - jrContext.setLastReadBytes(lastReadBytes); - break; - } - } - - if (i >= in.writerIndex()) { - lastReadBytes = in.readableBytes(); - jrContext.setLastReadBytes(lastReadBytes); - } - } - - /** - * Filter the invalid characters before decoding. - * @param in input of bytes - * @param lastReadBytes the bytes for last decoding incomplete record - */ - private static void fliterCharaters(ByteBuf in) { - while (in.isReadable()) { - int ch = in.getByte(in.readerIndex()); - if ((ch != ' ') && (ch != '\n') && (ch != '\t') && (ch != '\r')) { - break; - } else { - in.readByte(); - } - } - } - - /** - * Check whether the peek of the stack element is double quote. - * @param jrContext context for the last decoding process - * @return boolean - */ - private static boolean isDoubleQuote(Stack bufStack) { - if (!bufStack.isEmpty() && bufStack.peek() == '"') { - return true; - } - return false; - } - - /** - * Check whether the encoding is valid. - * @param in input of bytes - * @throws IOException this is an IO exception - * @throws UnsupportedException this is an unsupported exception - */ - private static void checkEncoding(ByteBuf in) throws IOException { - int inputStart = 0; - int inputLength = 4; - fliterCharaters(in); - byte[] buff = new byte[4]; - in.getBytes(in.readerIndex(), buff); - ByteSourceJsonBootstrapper strapper = new ByteSourceJsonBootstrapper(new IOContext(new BufferRecycler(), - null, - false), - buff, inputStart, - inputLength); - JsonEncoding jsonEncoding = strapper.detectEncoding(); - if (!JsonEncoding.UTF8.equals(jsonEncoding)) { - throw new UnsupportedException("Only UTF-8 encoding is supported."); - } - } - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcWriterUtil.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcWriterUtil.java deleted file mode 100644 index 7511c36e..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcWriterUtil.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.utils; - -import java.util.List; - -import org.onosproject.ovsdb.rfc.jsonrpc.JsonRpcRequest; -import org.onosproject.ovsdb.rfc.operations.Operation; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; - -/** - * RPC Methods request utility class. Refer to RFC7047's Section 4.1. - */ -public final class JsonRpcWriterUtil { - - /** - * Constructs a JsonRpcWriterUtil object. Utility classes should not have a - * public or default constructor, otherwise IDE will compile unsuccessfully. - * This class should not be instantiated. - */ - private JsonRpcWriterUtil() { - } - - /** - * Returns string of RPC request. - * @param uuid id of request object - * @param methodName method of request object - * @param params params of request object - * @return RPC Request String - */ - private static String getRequestStr(String uuid, String methodName, - List params) { - JsonRpcRequest request; - if (params != null) { - request = new JsonRpcRequest(uuid, methodName, params); - } else { - request = new JsonRpcRequest(uuid, methodName); - } - String str = ObjectMapperUtil.convertToString(request); - return str; - } - - /** - * Returns string of get_schema request. - * @param uuid id of get_schema request - * @param dbnames params of get_schema request - * @return get_schema Request String - */ - public static String getSchemaStr(String uuid, List dbnames) { - String methodName = "get_schema"; - return getRequestStr(uuid, methodName, dbnames); - } - - /** - * Returns string of echo request. - * @param uuid id of echo request - * @return echo Request String - */ - public static String echoStr(String uuid) { - String methodName = "echo"; - return getRequestStr(uuid, methodName, null); - } - - /** - * Returns string of monitor request. - * @param uuid id of monitor request - * @param monotorId json-value in params of monitor request - * @param dbSchema DatabaseSchema entity - * @return monitor Request String - */ - public static String monitorStr(String uuid, String monotorId, - DatabaseSchema dbSchema) { - String methodName = "monitor"; - return getRequestStr(uuid, methodName, - ParamUtil.getMonitorParams(monotorId, dbSchema)); - } - - /** - * Returns string of list_dbs request. - * @param uuid id of list_dbs request - * @return list_dbs Request String - */ - public static String listDbsStr(String uuid) { - String methodName = "list_dbs"; - return getRequestStr(uuid, methodName, null); - } - - /** - * Returns string of transact request. - * @param uuid id of transact request - * @param dbSchema DatabaseSchema entity - * @param operations operation* in params of transact request - * @return transact Request String - */ - public static String transactStr(String uuid, DatabaseSchema dbSchema, - List operations) { - String methodName = "transact"; - return getRequestStr(uuid, methodName, - ParamUtil.getTransactParams(dbSchema, operations)); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/MutationUtil.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/MutationUtil.java deleted file mode 100644 index 9ec62d31..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/MutationUtil.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.ovsdb.rfc.utils; - -import org.onosproject.ovsdb.rfc.notation.Mutation; -import org.onosproject.ovsdb.rfc.notation.Mutation.Mutator; - -public final class MutationUtil { - - /** - * Constructs a MutationUtil object. Utility classes should not have a - * public or default constructor, otherwise IDE will compile unsuccessfully. This - * class should not be instantiated. - */ - private MutationUtil() { - } - - /** - * Returns a Mutation that means += . - * @param columnName column name - * @param data column value - * @return Mutation - */ - public static Mutation sum(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Mutation(columnName, Mutator.SUM, value); - } - - /** - * Returns a Mutation that means -= . - * @param columnName column name - * @param data column value - * @return Mutation - */ - public static Mutation difference(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Mutation(columnName, Mutator.DIFFERENCE, value); - } - - /** - * Returns a Mutation that means *= . - * @param columnName column name - * @param data column value - * @return Mutation - */ - public static Mutation product(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Mutation(columnName, Mutator.PRODUCT, value); - } - - /** - * Returns a Mutation that means /= . - * @param columnName column name - * @param data column value - * @return Mutation - */ - public static Mutation quotient(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Mutation(columnName, Mutator.QUOTIENT, value); - } - - /** - * Returns a Mutation that means %= . - * @param columnName column name - * @param data column value - * @return Mutation - */ - public static Mutation remainder(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Mutation(columnName, Mutator.REMAINDER, value); - } - - /** - * Returns a Mutation that means insert . - * @param columnName column name - * @param data column value - * @return Mutation - */ - public static Mutation insert(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Mutation(columnName, Mutator.INSERT, value); - } - - /** - * Returns a Mutation that means delete . - * @param columnName column name - * @param data column value - * @return Mutation - */ - public static Mutation delete(String columnName, Object data) { - Object value = TransValueUtil.getFormatData(data); - return new Mutation(columnName, Mutator.DELETE, value); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ObjectMapperUtil.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ObjectMapperUtil.java deleted file mode 100644 index e80a52bc..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ObjectMapperUtil.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.ovsdb.rfc.utils; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; - -/** - * ObjectMapper utility class. - */ -public final class ObjectMapperUtil { - - private static final Logger log = LoggerFactory - .getLogger(ObjectMapperUtil.class); - - /** - * Constructs a ObjectMapperUtil object. Utility classes should not have a - * public or default constructor, otherwise IDE will compile unsuccessfully. This - * class should not be instantiated. - */ - private ObjectMapperUtil() { - } - - /** - * get ObjectMapper entity. - * @return ObjectMapper entity - */ - public static ObjectMapper getObjectMapper() { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, - false); - objectMapper.setSerializationInclusion(Include.NON_NULL); - return objectMapper; - } - - /** - * get ObjectMapper entity. - * @param flag configure - * @return ObjectMapper entity - */ - public static ObjectMapper getObjectMapper(boolean flag) { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, - flag); - return objectMapper; - } - - /** - * get ObjectMapper entity. - * @param flag configure - * @param incl setSerializationInclusion - * @return ObjectMapper entity - */ - public static ObjectMapper getObjectMapper(boolean flag, Include incl) { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, - flag); - objectMapper.setSerializationInclusion(incl); - return objectMapper; - } - - /** - * convert Object into String. - * @param obj Object - * @return String - */ - public static String convertToString(Object obj) { - ObjectMapper objectMapper = new ObjectMapper(); - try { - return objectMapper.writeValueAsString(obj); - } catch (JsonProcessingException e) { - log.error("JsonProcessingException while converting Entity into string", e); - } - return null; - } - -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ParamUtil.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ParamUtil.java deleted file mode 100644 index 486b39b8..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ParamUtil.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.utils; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.message.MonitorRequest; -import org.onosproject.ovsdb.rfc.message.MonitorSelect; -import org.onosproject.ovsdb.rfc.operations.Operation; -import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; -import org.onosproject.ovsdb.rfc.schema.TableSchema; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -/** - * Params utility class. Params of the request object, refer to RFC7047's - * Section 4.1. - */ -public final class ParamUtil { - - /** - * Constructs a ParamUtil object. Utility classes should not have a public - * or default constructor, otherwise IDE will compile unsuccessfully. This - * class should not be instantiated. - */ - private ParamUtil() { - } - - /** - * Returns MonitorRequest, refer to RFC7047's Section 4.1.5. - * @param tableSchema entity - * @return MonitorRequest - */ - private static MonitorRequest getAllColumnsMonitorRequest(TableSchema tableSchema) { - String tableName = tableSchema.name(); - Set columns = tableSchema.getColumnNames(); - MonitorSelect select = new MonitorSelect(true, true, true, true); - MonitorRequest monitorRequest = new MonitorRequest(tableName, columns, select); - return monitorRequest; - } - - /** - * Returns params of monitor method, refer to RFC7047's Section 4.1.5. - * @param monotorId json-value, refer to RFC7047's Section 4.1.5. - * @param dbSchema DatabaseSchema entity - * @return List of Object, the params of monitor request - */ - public static List getMonitorParams(String monotorId, DatabaseSchema dbSchema) { - Set tables = dbSchema.getTableNames(); - Map mrMap = Maps.newHashMap(); - for (String tableName : tables) { - TableSchema tableSchema = dbSchema.getTableSchema(tableName); - MonitorRequest monitorRequest = getAllColumnsMonitorRequest(tableSchema); - mrMap.put(tableName, monitorRequest); - } - return Lists.newArrayList(dbSchema.name(), monotorId, mrMap); - } - - /** - * Returns params of transact method, refer to RFC7047's Section 4.1.3. - * @param dbSchema DatabaseSchema entity - * @param operations operation*, refer to RFC7047's Section 4.1.3. - * @return List of Object, the params of transact request - */ - public static List getTransactParams(DatabaseSchema dbSchema, List operations) { - List lists = Lists.newArrayList(dbSchema.name()); - lists.addAll(operations); - return lists; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/StringEncoderUtil.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/StringEncoderUtil.java deleted file mode 100644 index 0e414d8b..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/StringEncoderUtil.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.ovsdb.rfc.utils; - -import io.netty.handler.codec.string.StringEncoder; -import io.netty.util.CharsetUtil; - -/** - * StringEncoder utility class.Only UTF-8 encoding is supported refer to - * RFC7047's Section 3.1. - */ -public final class StringEncoderUtil { - - /** - * Constructs a StringEncoderUtil object. Utility classes should not have a - * public or default constructor, otherwise IDE will compile unsuccessfully. This - * class should not be instantiated. - */ - private StringEncoderUtil() { - } - - /** - * Returns StringEncoder of UTF_8 . - * @return StringEncoder - */ - public static StringEncoder getEncoder() { - return new StringEncoder(CharsetUtil.UTF_8); - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/TransValueUtil.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/TransValueUtil.java deleted file mode 100644 index 49fbd375..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/TransValueUtil.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ovsdb.rfc.utils; - -import java.util.Map; -import java.util.Set; - -import org.onosproject.ovsdb.rfc.notation.OvsdbMap; -import org.onosproject.ovsdb.rfc.notation.OvsdbSet; -import org.onosproject.ovsdb.rfc.notation.RefTableRow; -import org.onosproject.ovsdb.rfc.notation.UUID; -import org.onosproject.ovsdb.rfc.schema.type.AtomicColumnType; -import org.onosproject.ovsdb.rfc.schema.type.BaseType; -import org.onosproject.ovsdb.rfc.schema.type.BooleanBaseType; -import org.onosproject.ovsdb.rfc.schema.type.ColumnType; -import org.onosproject.ovsdb.rfc.schema.type.IntegerBaseType; -import org.onosproject.ovsdb.rfc.schema.type.KeyValuedColumnType; -import org.onosproject.ovsdb.rfc.schema.type.RealBaseType; -import org.onosproject.ovsdb.rfc.schema.type.StringBaseType; -import org.onosproject.ovsdb.rfc.schema.type.UuidBaseType; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -/** - * Object value utility class. - */ -public final class TransValueUtil { - - /** - * Constructs a TransValueUtil object. Utility classes should not have a - * public or default constructor, otherwise IDE will compile unsuccessfully. - * This class should not be instantiated. - */ - private TransValueUtil() { - } - - /** - * if the type is Set, convert into OvsdbSet, if Map, convert into OvsdbMap. - * @param value Object - * @return Object - */ - public static Object getFormatData(Object value) { - if (value instanceof Map) { - return OvsdbMap.ovsdbMap((Map) value); - } else if (value instanceof Set) { - return OvsdbSet.ovsdbSet((Set) value); - } else { - return value; - } - } - - /** - * Transform JsonNode to corresponding value. - * @param json the ColumnType JsonNode - * @param columnType AtomicColumnType or KeyValuedColumnType - * @return Object OvsdbMap or OvsdbSet - */ - public static Object getValueFromJson(JsonNode json, ColumnType columnType) { - if (columnType instanceof AtomicColumnType) { - AtomicColumnType atoType = (AtomicColumnType) columnType; - return getValueFromAtoType(json, atoType); - } else if (columnType instanceof KeyValuedColumnType) { - KeyValuedColumnType kvType = (KeyValuedColumnType) columnType; - return getValueFromKvType(json, kvType); - } - return null; - } - - /** - * Convert AtomicColumnType JsonNode into OvsdbSet value. - * @param json AtomicColumnType JsonNode - * @param atoType AtomicColumnType entity - * @return Object OvsdbSet or the value of JsonNode - */ - private static Object getValueFromAtoType(JsonNode json, AtomicColumnType atoType) { - BaseType baseType = atoType.baseType(); - // If "min" or "max" is not specified, If "min" is not 1 or "max" is not - // 1, or both, and "value" is not specified, the type is a set of scalar - // type "key". Refer to RFC 7047, Section 3.2 . - if (atoType.min() != atoType.max()) { - Set set = Sets.newHashSet(); - if (json.isArray()) { - if (json.size() == 2) { - if (json.get(0).isTextual() && "set".equals(json.get(0).asText())) { - for (JsonNode node : json.get(1)) { - set.add(transToValue(node, baseType)); - } - } else { - set.add(transToValue(json, baseType)); - } - } - } else { - set.add(transToValue(json, baseType)); - } - return OvsdbSet.ovsdbSet(set); - } else { - return transToValue(json, baseType); - } - } - - /** - * Convert KeyValuedColumnType JsonNode into OvsdbMap value. - * @param json KeyValuedColumnType JsonNode - * @param kvType KeyValuedColumnType entity - * @return Object OvsdbMap - */ - private static Object getValueFromKvType(JsonNode json, KeyValuedColumnType kvType) { - if (json.isArray()) { - if (json.size() == 2) { - if (json.get(0).isTextual() && "map".equals(json.get(0).asText())) { - Map map = Maps.newHashMap(); - for (JsonNode pairNode : json.get(1)) { - if (pairNode.isArray() && json.size() == 2) { - Object key = transToValue(pairNode.get(0), kvType.keyType()); - Object value = transToValue(pairNode.get(1), kvType.valueType()); - map.put(key, value); - } - } - return OvsdbMap.ovsdbMap(map); - } - } - } - return null; - } - - /** - * convert into value. - * @param valueNode the BaseType JsonNode - * @param baseType BooleanBaseType or IntegerBaseType or RealBaseType or - * StringBaseType or UuidBaseType - * @return Object the value of JsonNode - */ - public static Object transToValue(JsonNode valueNode, BaseType baseType) { - if (baseType instanceof BooleanBaseType) { - return valueNode.asBoolean(); - } else if (baseType instanceof IntegerBaseType) { - return valueNode.asInt(); - } else if (baseType instanceof RealBaseType) { - return valueNode.asDouble(); - } else if (baseType instanceof StringBaseType) { - return valueNode.asText(); - } else if (baseType instanceof UuidBaseType) { - if (valueNode.isArray()) { - if (valueNode.size() == 2) { - if (valueNode.get(0).isTextual() - && ("uuid".equals(valueNode.get(0).asText()) || "named-uuid" - .equals(valueNode.get(0).asText()))) { - return UUID.uuid(valueNode.get(1).asText()); - } - } - } else { - return new RefTableRow(((UuidBaseType) baseType).getRefTable(), valueNode); - } - } - return null; - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/VersionUtil.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/VersionUtil.java deleted file mode 100644 index d05d90ed..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/VersionUtil.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.ovsdb.rfc.utils; - -/** - * Version utility class. - */ -public final class VersionUtil { - - /** - * Constructs a VersionUtil object. Utility classes should not have a public - * or default constructor, otherwise IDE will compile unsuccessfully. This - * class should not be instantiated. - */ - private VersionUtil() { - } - - public static final String DEFAULT_VERSION_STRING = "0.0.0"; - private static final String FORMAT = "(\\d+)\\.(\\d+)\\.(\\d+)"; - - /** - * Match version by the format. - * @param version the version String - * @throws IllegalArgumentException this is an illegal argument exception - */ - public static void versionMatch(String version) { - if (!version.matches(FORMAT)) { - throw new IllegalArgumentException("<" + version - + "> does not match format " + FORMAT); - } - } - - /** - * Compare fromVersion and toVersion. - * @param fromVersion the initial version - * @param toVersion the end of the version - * @return an int number - */ - public static int versionCompare(String fromVersion, String toVersion) { - String[] fromArr = fromVersion.split("\\."); - String[] toArr = toVersion.split("\\."); - int fromFirst = Integer.parseInt(fromArr[0]); - int fromMiddle = Integer.parseInt(fromArr[1]); - int fromEnd = Integer.parseInt(fromArr[2]); - int toFirst = Integer.parseInt(toArr[0]); - int toMiddle = Integer.parseInt(toArr[1]); - int toEnd = Integer.parseInt(toArr[2]); - if (fromFirst - toFirst != 0) { - return fromFirst - toFirst; - } else if (fromMiddle - toMiddle != 0) { - return fromMiddle - toMiddle; - } else { - return fromEnd - toEnd; - } - } -} diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/package-info.java deleted file mode 100644 index 0a0a4f78..00000000 --- a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/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. - */ - -/** - * OVSDB utilities. - */ -package org.onosproject.ovsdb.rfc.utils; diff --git a/framework/src/onos/protocols/pcep/api/pom.xml b/framework/src/onos/protocols/pcep/api/pom.xml deleted file mode 100644 index b5b209c2..00000000 --- a/framework/src/onos/protocols/pcep/api/pom.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - 4.0.0 - - - org.onosproject - onos-pcep-controller - 1.4.0-rc1 - ../pom.xml - - - onos-pcep-controller-api - bundle - - ONOS Pcep client controller subsystem API - - - - org.onosproject - onos-app-pcep-api - - - org.onosproject - onos-pcepio - - - io.netty - netty - - - org.onosproject - onos-api - - - org.onosproject - onlab-misc - - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 2.3 - - - - io.netty:netty - com.google.guava:guava - org.slf4j:slfj-api - ch.qos.logback:logback-core - ch.qos.logback:logback-classic - com.google.code.findbugs:annotations - - - - - - package - - shade - - - - - - org.apache.felix - maven-bundle-plugin - - - - org.onosproject.pcep.*,org.onosproject.pcepio.* - - - - - - - - diff --git a/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PccId.java deleted file mode 100755 index 3ff622bf..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClient.java deleted file mode 100755 index 95e7789f..00000000 --- a/framework/src/onos/protocols/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 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/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientController.java deleted file mode 100644 index 37453eac..00000000 --- a/framework/src/onos/protocols/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 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/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepClientListener.java deleted file mode 100755 index e7e0a736..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java deleted file mode 100644 index f7de215a..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepPacketStats.java deleted file mode 100644 index d00cd5a8..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepAgent.java deleted file mode 100755 index 4810417c..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriver.java deleted file mode 100755 index f728de54..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/PcepClientDriverFactory.java deleted file mode 100755 index 6ce75bca..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/driver/package-info.java deleted file mode 100644 index 9d105ff2..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java b/framework/src/onos/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/package-info.java deleted file mode 100644 index a0cb2482..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/ctl/pom.xml b/framework/src/onos/protocols/pcep/ctl/pom.xml deleted file mode 100644 index 0427c237..00000000 --- a/framework/src/onos/protocols/pcep/ctl/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - 4.0.0 - - - org.onosproject - onos-pcep-controller - 1.4.0-rc1 - ../pom.xml - - - onos-pcep-controller-impl - bundle - - ONOS PCEP client controller subsystem API implementation - - - - org.onosproject - onos-pcep-controller-api - - - io.netty - netty - - - org.apache.felix - org.apache.felix.scr.annotations - - - org.osgi - org.osgi.compendium - - - org.onosproject - onlab-misc - - - - - - - org.apache.felix - maven-scr-plugin - - - - - diff --git a/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/Controller.java b/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/Controller.java deleted file mode 100644 index 9c27810c..00000000 --- a/framework/src/onos/protocols/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 getMemory() { - Map 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/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepChannelHandler.java b/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepChannelHandler.java deleted file mode 100644 index bc8721d7..00000000 --- a/framework/src/onos/protocols/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 msglist = (List) 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 tlvList = pOpenmsg.getPcepOpenObject().getOptionalTlv(); - boolean bFoundPceccCapability = false; - boolean bFoundStatefulPceCapability = false; - boolean bFoundPcInstantiationCapability = false; - - ListIterator 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 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 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/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java b/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java deleted file mode 100644 index 00c8c694..00000000 --- a/framework/src/onos/protocols/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 connectedClients = - new ConcurrentHashMap<>(); - - protected PcepClientAgent agent = new PcepClientAgent(); - protected Set pcepClientListener = new HashSet<>(); - - protected Set 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 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/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientImpl.java b/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientImpl.java deleted file mode 100644 index a10ff5c8..00000000 --- a/framework/src/onos/protocols/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 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/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageDecoder.java b/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageDecoder.java deleted file mode 100644 index b1065891..00000000 --- a/framework/src/onos/protocols/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 reader = PcepFactories.getGenericReader(); - List msgList = new LinkedList<>(); - - while (buffer.readableBytes() > 0) { - PcepMessage message = reader.readFrom(buffer); - msgList.add(message); - } - return msgList; - } -} diff --git a/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageEncoder.java b/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepMessageEncoder.java deleted file mode 100644 index ae97221e..00000000 --- a/framework/src/onos/protocols/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 msglist = (List) msg; - - ChannelBuffer buf = ChannelBuffers.dynamicBuffer(); - - for (PcepMessage pm : msglist) { - pm.writeTo(buf); - } - - HexDump.pcepHexDump(buf); - - return buf; - } -} diff --git a/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java b/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java deleted file mode 100644 index f2bc51eb..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPipelineFactory.java b/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPipelineFactory.java deleted file mode 100644 index f32b87a8..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java b/framework/src/onos/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java deleted file mode 100644 index d86eefc3..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/pom.xml b/framework/src/onos/protocols/pcep/pcepio/pom.xml deleted file mode 100755 index 8b2e25b4..00000000 --- a/framework/src/onos/protocols/pcep/pcepio/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - 4.0.0 - - - org.onosproject - onos-pcep-controller - 1.4.0-rc1 - ../pom.xml - - - onos-pcepio - bundle - - ONOS Pcepio Protocol subsystem - - - - - org.onosproject - onos-api - - - org.onosproject - onlab-osgi - - - - com.fasterxml.jackson.core - jackson-databind - - - com.fasterxml.jackson.core - jackson-annotations - - - - org.osgi - org.osgi.core - - - org.apache.karaf.shell - org.apache.karaf.shell.console - - - org.apache.felix - org.apache.felix.scr.annotations - - - - - - - org.apache.felix - maven-bundle-plugin - - - - - diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java deleted file mode 100755 index 85bc33fb..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java deleted file mode 100755 index 25bdf5b6..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java deleted file mode 100644 index 44d09f0d..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java deleted file mode 100755 index 6a2fdc88..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java deleted file mode 100644 index 122b943f..00000000 --- a/framework/src/onos/protocols/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 getMetricObjectList(); - - /** - * Sets PcepMetricObject List. - * - * @param llMetricList list of metric objects - */ - void setMetricObjectList(LinkedList 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 getMetricObjectList(); - - /** - * Sets PcepMetricObject List. - * - * @param llMetricList list of metric objects - * @return Builder object for PcepAttrubute - */ - Builder setMetricObjectList(LinkedList llMetricList); - } -} diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java deleted file mode 100755 index 58d05821..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java deleted file mode 100644 index 00fad800..00000000 --- a/framework/src/onos/protocols/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 getOptionalTlv(); - - /** - * Sets LinkedList of Optional Tlvs in Close Message. - * - * @param llOptionalTlv LinkedList of type PcepValueType - */ - void setOptionalTlv(LinkedList 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 getOptionalTlv(); - - /** - * Sets LinkedList of Optional Tlvs in Close Message. - * - * @param llOptionalTlv list of optional tlv - * @return Builder by setting Optional Tlvs - */ - Builder setOptionalTlv(LinkedList 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java deleted file mode 100755 index 92d43874..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java deleted file mode 100755 index 3af6b759..00000000 --- a/framework/src/onos/protocols/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 getSubObjects(); - - /** - * Sets LinkedList of SubObjects in ERO Object. - * - * @param llSubObjects list of subobjects - */ - void setSubObjects(LinkedList 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 getSubObjects(); - - /** - * Sets LinkedList of SubObjects and returns its builder. - * - * @param llSubObjects list of SubObjects - * @return Builder by setting list of SubObjects - */ - Builder setSubObjects(LinkedList 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java deleted file mode 100755 index b61bfb9f..00000000 --- a/framework/src/onos/protocols/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 getRPObjList(); - - /** - * Sets the RP Objects lists. - * - * @param llRPObjList list of type PcepRPObject - */ - void setRPObjList(LinkedList llRPObjList); - - /** - * Returns the PcepTEObject List. - * - * @return list of type PcepTEObject - */ - LinkedList getTEObjList(); - - /** - * Sets the TE Objects lists. - * - * @param llTEObjList list of type PcepTEObject - */ - void setTEObjList(LinkedList llTEObjList); - - /** - * Returns the PcepErrorObject. - * - * @return list of type PcepErrorObject - */ - LinkedList getErrorObjList(); - - /** - * Sets the Error Objects lists. - * - * @param llErrorObjList list of type PcepErrorObject - */ - void setErrorObjList(LinkedList 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 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 llRPObjList); - - /** - * Returns the PcepTEObject. - * - * @return llTEObjList of type PcepTEObject - */ - LinkedList 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 llTEObjList); - - /** - * Returns the PcepErrorObject. - * - * @return list of type PcepErrorObject - */ - LinkedList 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 llErrorObjList); - } -} diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java deleted file mode 100755 index 0c625a03..00000000 --- a/framework/src/onos/protocols/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 getErrorValue(); - - /** - * Returns Error Type in PCEP-ERROR Object. - * - * @return list of Error Type in PCEP-ERROR Object - */ - LinkedList 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 getPcepErrorList(); - - /** - * Sets PcepError lists and returns its builder. - * - * @param llPcepErrorList list of PcepError - * @return builder by setting list of PcepError. - */ - Builder setPcepErrorList(LinkedList llPcepErrorList); - } -} diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java deleted file mode 100644 index ff06885d..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java deleted file mode 100644 index 16374d5b..00000000 --- a/framework/src/onos/protocols/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 getOptionalTlv(); - - /** - * Sets Optional Tlvs in Error Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList 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 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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java deleted file mode 100644 index 85416f98..00000000 --- a/framework/src/onos/protocols/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 { - - @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 getGenericReader() { - return GENERIC_READER; - } -} diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java deleted file mode 100755 index 1a31e0a3..00000000 --- a/framework/src/onos/protocols/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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java deleted file mode 100755 index 2df7cc9c..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java deleted file mode 100755 index 5ed4e1e3..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java deleted file mode 100755 index 55205299..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java deleted file mode 100755 index d240445e..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java deleted file mode 100755 index 1c29b76a..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java deleted file mode 100755 index ef802780..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java deleted file mode 100755 index 2b061430..00000000 --- a/framework/src/onos/protocols/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 getPcInitiatedLspRequestList(); - - /** - * Sets list of PcInitiatedLspRequestList. - * - * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequestList - */ - void setPcInitiatedLspRequestList(LinkedList 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 getPcInitiatedLspRequestList(); - - /** - * Sets PcInitiatedLspRequestList. - * - * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequestList - * @return builder by setting list of PcInitiatedLspRequestList - */ - Builder setPcInitiatedLspRequestList(LinkedList llPcInitiatedLspRequestList); - } -} diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java deleted file mode 100755 index 675e0557..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java deleted file mode 100755 index a1c1fc59..00000000 --- a/framework/src/onos/protocols/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 getSubObjects(); - - /** - * Sets list of SubObjects. - * - * @param llSubObjects list of SubObjects - */ - void setSubObjects(LinkedList 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 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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java deleted file mode 100755 index 160f0a2a..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java deleted file mode 100755 index b64c21e0..00000000 --- a/framework/src/onos/protocols/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 getOptionalTlv(); - - /** - * Sets Optional Tlvs in Label Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList 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 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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java deleted file mode 100755 index 72d0a38e..00000000 --- a/framework/src/onos/protocols/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 getLabelRangeList(); - - /** - * Sets list of PcepLabelRangeObject. - * - * @param llLabelRangeList Label Range List - */ - void setLabelRangeList(LinkedList 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java deleted file mode 100755 index 9155434e..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java deleted file mode 100755 index 3e2a3a95..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java deleted file mode 100644 index 5ef870d4..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java deleted file mode 100755 index 3740df3b..00000000 --- a/framework/src/onos/protocols/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 getPcLabelUpdateList(); - - /** - * Sets list of PcLabelUpdateList. - * - * @param llPcLabelUpdateList list of PcLabelUpdateList - */ - void setPcLabelUpdateList(LinkedList 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 getPcLabelUpdateList(); - - /** - * Sets list of PcLabelUpdateList. - * - * @param llPcLabelUpdateList list of PcLabelUpdateList. - * @return Builder by setting list of PcLabelUpdateList. - */ - Builder setPcLabelUpdateList(LinkedList llPcLabelUpdateList); - } -} diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java deleted file mode 100755 index 5d55250a..00000000 --- a/framework/src/onos/protocols/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 getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in LSP Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList 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 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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java deleted file mode 100755 index d541e92b..00000000 --- a/framework/src/onos/protocols/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 getOptionalTlv(); - - /** - * Sets Optional Tlvs in LSPA Object. - * - * @param llOptionalTlv Optional Tlvs in LSPA Object - */ - void setOptionalTlv(LinkedList 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 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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java deleted file mode 100755 index 7de07169..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java deleted file mode 100755 index 591a033d..00000000 --- a/framework/src/onos/protocols/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 { - - /** - * 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java deleted file mode 100755 index e7477b51..00000000 --- a/framework/src/onos/protocols/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 { - - /** - * 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java deleted file mode 100755 index 380fb42e..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java deleted file mode 100644 index 4b1d50a5..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java deleted file mode 100755 index 6be8c65a..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java deleted file mode 100755 index 26dad566..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java deleted file mode 100644 index 904156f0..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java deleted file mode 100755 index 13dd2fa8..00000000 --- a/framework/src/onos/protocols/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 getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in Open Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList 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 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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java deleted file mode 100755 index c6993c3a..00000000 --- a/framework/src/onos/protocols/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 getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in RP Object and returns its builder. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList 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 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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java deleted file mode 100755 index f4355206..00000000 --- a/framework/src/onos/protocols/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 getStateReportList(); - - /** - * Sets StateReportList. - * - * @param llStateReportList list of PcepStateReport. - */ - void setStateReportList(LinkedList 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 getStateReportList(); - - /** - * Sets list of PcepStateReport and returns builder. - * - * @param llStateReportList list of PcepStateReport. - * @return Builder by setting list of PcepStateReport. - */ - Builder setStateReportList(LinkedList llStateReportList); - } -} diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java deleted file mode 100755 index 928ce1a6..00000000 --- a/framework/src/onos/protocols/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 getSubObjects(); - - /** - * Sets list of SubObjects and return its builder. - * - * @param llSubObjects list of SubObjects - */ - void setSubObjects(LinkedList 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 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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java deleted file mode 100755 index e4816efd..00000000 --- a/framework/src/onos/protocols/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 llOptionalTlv); - - /** - * Returns list of optional tlvs. - * - * @return llOptionalTlv list of optional tlvs - */ - LinkedList 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 getOptionalTlv(); - - /** - * sets the optional TLvs. - * - * @param llOptionalTlv List of optional tlv - * @return builder by setting list of optional tlv. - */ - Builder setOptionalTlv(LinkedList 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java deleted file mode 100755 index b8ab9ec8..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEObject.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEObject.java deleted file mode 100755 index 21f6c71c..00000000 --- a/framework/src/onos/protocols/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 getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in TE Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList 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 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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEReportMsg.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepTEReportMsg.java deleted file mode 100755 index 3bc5034e..00000000 --- a/framework/src/onos/protocols/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 getTEReportList(); - - /** - * Sets list of Optional Tlvs in TE Report Message. - * - * @param llTEReportList list of optional Tlvs - */ - void setTEReportList(LinkedList 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 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 llTEReportList); - } -} diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java deleted file mode 100755 index 450fdfac..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java deleted file mode 100755 index dc2ac3a8..00000000 --- a/framework/src/onos/protocols/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 getUpdateRequestList(); - - /** - * Sets the update request list for PCEP update message. - * - * @param llUpdateRequestList is a list of PCEP Update Requests - */ - void setUpdateRequestList(LinkedList 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 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 llUpdateRequestList); - } -} diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java deleted file mode 100755 index 8d1c89e2..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java deleted file mode 100755 index c761ed08..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java deleted file mode 100755 index 37aef58d..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java deleted file mode 100644 index 53ee5934..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java deleted file mode 100644 index d61f7319..00000000 --- a/framework/src/onos/protocols/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 { - - /* - * ::= (|) - ::= - - - - [] - ::= - - */ - - 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java deleted file mode 100644 index 65a844c2..00000000 --- a/framework/src/onos/protocols/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: - * ::=[] - * [] - * [] - * [] - * - * ::=[] - */ - 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 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 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 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 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 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 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 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 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 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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java deleted file mode 100644 index 1c78d5b4..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java deleted file mode 100644 index bcc679d3..00000000 --- a/framework/src/onos/protocols/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 - * ::= - * - 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 llOptionalTlv; - - public static final PcepCloseMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading close message for channel buffer. - */ - static class Reader implements PcepMessageReader { - PcepObjectHeader closeObjHeader; - byte yReason; - // Optional TLV - private LinkedList 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 parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList 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 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 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 llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList 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 { - - @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 llOptionalTlv = message.llOptionalTlv; - ListIterator 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 getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java deleted file mode 100644 index 08dc0c9b..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java deleted file mode 100644 index 4d7cb16e..00000000 --- a/framework/src/onos/protocols/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 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 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 getSubObjects() { - return this.llSubObjects; - } - - @Override - public void setSubObjects(LinkedList 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 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 parseSubObjects(ChannelBuffer cb) throws PcepParseException { - - LinkedList 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 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 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 getSubObjects() { - return this.llSubObjects; - } - - @Override - public Builder setSubObjects(LinkedList 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java deleted file mode 100644 index 594e40c1..00000000 --- a/framework/src/onos/protocols/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 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 llRPObjList, LinkedList llTEObjList, - LinkedList 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 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 - ListIterator listIterator = errList.listIterator(); - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - - //RP Object list is optional - LinkedList llRPObjList = pcepError.getRPObjList(); - if (llRPObjList != null) { - ListIterator rpListIterator = llRPObjList.listIterator(); - while (rpListIterator.hasNext()) { - rpListIterator.next().write(cb); - } - } - - //TE Object list is optional - LinkedList llTEObjList = pcepError.getTEObjList(); - if (llTEObjList != null) { - ListIterator teListIterator = llTEObjList.listIterator(); - while (teListIterator.hasNext()) { - teListIterator.next().write(cb); - } - } - - // is mandatory - boolean bIsErrorObjListFound = false; - - LinkedList llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator errObjListIterator = llErrObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObjListIterator.next().write(cb); - bIsErrorObjListFound = true; - } - } - - if (!bIsErrorObjListFound) { - throw new PcepParseException(" is mandatory."); - } - } - } - - @Override - public LinkedList getErrorType() { - LinkedList errorType = new LinkedList<>(); - ListIterator listIterator = errList.listIterator(); - PcepErrorObject errObj; - int error; - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - LinkedList llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator errObjListIterator = llErrObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObj = errObjListIterator.next(); - error = errObj.getErrorType(); - errorType.add(error); - } - } - } - return errorType; - } - - @Override - public LinkedList getErrorValue() { - LinkedList errorValue = new LinkedList<>(); - ListIterator listIterator = errList.listIterator(); - PcepErrorObject errObj; - int error; - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - LinkedList llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator 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 errll; - - @Override - public PcepErrorInfo build() { - return new PcepErrorInfoVer1(errll); - } - - @Override - public LinkedList getPcepErrorList() { - return this.errll; - } - - @Override - public Builder setPcepErrorList(LinkedList errll) { - this.errll = errll; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ErrorList", errList).toString(); - } -} diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java deleted file mode 100644 index 927d83d6..00000000 --- a/framework/src/onos/protocols/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. - - ::= - ( [] ) | - [] - - ::=[] - - ::=[ | ] - - - ::=[] - - ::=[] - - ::=[] - */ - - 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 ( [] ) - private PcepErrorInfo errInfo; //optional [] - - 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 { - - 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 - 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. - // ( [] - //If PCEP-ERROR list is followed by RP or TE Object then store into errInfo. [] - //If only PCEP-ERROR list is present then store into ErrorObjListWithOpen. - PcepObjectHeader tempObjHeader; - LinkedList 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(" 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 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 ( [] ) - private PcepErrorInfo errInfo = null; //optional [] - - @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 { - @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 ( [] ) if exists. - // otherwise write [] - - 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 getErrorType() { - LinkedList 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 getErrorValue() { - LinkedList 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java deleted file mode 100644 index 48a337f4..00000000 --- a/framework/src/onos/protocols/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 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 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 getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList 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 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 parseOptionalTlv(ChannelBuffer cb) { - - LinkedList 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 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 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 llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java deleted file mode 100644 index 0ea51410..00000000 --- a/framework/src/onos/protocols/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 { - - /* - ::=[ | ] - - - ::=[] - - ::=[] - */ - - protected static final Logger log = LoggerFactory.getLogger(PcepErrorVer1.class); - - private boolean isErroInfoSet; - //PcepErrorObject list - private LinkedList llErrObjList; - //PcepRPObject list - private LinkedList llRPObjList; - //PcepTEObject list - private LinkedList 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 llRPObjList, LinkedList llTEObjList, - LinkedList llErrObjListObjList) { - this.llRPObjList = llRPObjList; - this.llTEObjList = llTEObjList; - this.llErrObjList = llErrObjListObjList; - } - - /** - * Constructor to initialize PcepError. - * - * @param llErrObjList list of PcepErrorObject - */ - public PcepErrorVer1(LinkedList llErrObjList) { - this.llRPObjList = null; - this.llTEObjList = null; - this.llErrObjList = llErrObjList; - } - - @Override - public LinkedList getRPObjList() { - return this.llRPObjList; - } - - @Override - public LinkedList getTEObjList() { - return this.llTEObjList; - } - - @Override - public LinkedList 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 rpObjlistIterator = this.llRPObjList.listIterator(); - while (rpObjlistIterator.hasNext()) { - rpObjlistIterator.next().write(cb); - } - } - - // TElist is optional - if (this.isTEObjListSet) { - ListIterator teObjlistIterator = this.llTEObjList.listIterator(); - while (teObjlistIterator.hasNext()) { - teObjlistIterator.next().write(cb); - } - } - //ErrList is mandatory - ListIterator 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 llRPObjList; - private LinkedList llTEObjList; - private LinkedList llErrObjList; - - @Override - public PcepError build() { - return new PcepErrorVer1(llRPObjList, llTEObjList, llErrObjList); - } - - @Override - public LinkedList getRPObjList() { - return this.llRPObjList; - } - - @Override - public Builder setRPObjList(LinkedList llRPObjList) { - this.llRPObjList = llRPObjList; - return this; - } - - @Override - public LinkedList getTEObjList() { - return this.llTEObjList; - } - - @Override - public Builder setTEObjList(LinkedList llTEObjList) { - this.llTEObjList = llTEObjList; - return this; - } - - @Override - public LinkedList getErrorObjList() { - return this.llErrObjList; - } - - @Override - public Builder setErrorObjList(LinkedList llErrObjList) { - this.llErrObjList = llErrObjList; - return this; - } - - } - - @Override - public void setRPObjList(LinkedList llRPObjList) { - this.llRPObjList = llRPObjList; - } - - @Override - public void setTEObjList(LinkedList llTEObjList) { - this.llTEObjList = llTEObjList; - } - - @Override - public void setErrorObjList(LinkedList 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java deleted file mode 100644 index 6b5d450a..00000000 --- a/framework/src/onos/protocols/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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java deleted file mode 100644 index 51c672d3..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java deleted file mode 100644 index f2f54cda..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java deleted file mode 100644 index 354547a1..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java deleted file mode 100644 index f8ea7869..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java deleted file mode 100644 index 240a96f7..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java deleted file mode 100644 index 60d14b07..00000000 --- a/framework/src/onos/protocols/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 - /* ::= - * - * Where: - * ::= [] - * ::= (|) - * ::= - * - * - * - * [] - * ::= - * - */ - - 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 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 { - - LinkedList 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 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 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 getPcInitiatedLspRequestList() { - return this.llPcInitiatedLspRequestList; - } - - @Override - public Builder setPcInitiatedLspRequestList(LinkedList 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 { - - @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 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 getPcInitiatedLspRequestList() { - return this.llPcInitiatedLspRequestList; - } - - @Override - public void setPcInitiatedLspRequestList(LinkedList ll) { - this.llPcInitiatedLspRequestList = ll; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("PcInitiaitedLspRequestList", llPcInitiatedLspRequestList) - .toString(); - } -} diff --git a/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java deleted file mode 100644 index 5130d9e9..00000000 --- a/framework/src/onos/protocols/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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java deleted file mode 100644 index 2e01bdaa..00000000 --- a/framework/src/onos/protocols/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 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 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 getSubObjects() { - return this.llSubObjects; - } - - @Override - public void setSubObjects(LinkedList 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 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 parseSubObjects(ChannelBuffer cb) throws PcepParseException { - - LinkedList 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 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 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 getSubObjects() { - return this.llSubObjects; - } - - @Override - public Builder setSubObjects(LinkedList 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java deleted file mode 100644 index 8b6e9382..00000000 --- a/framework/src/onos/protocols/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 { - - /* - ::= - - 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 { - - @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 { - - @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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java deleted file mode 100644 index a4ac87c3..00000000 --- a/framework/src/onos/protocols/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 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 llOptionalTlv) { - this.labelObjHeader = labelObjHeader; - this.bOFlag = bOFlag; - this.label = label; - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public LinkedList getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList 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 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 parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList 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 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 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 getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setOptionalTlv(LinkedList 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java deleted file mode 100644 index 9e4be911..00000000 --- a/framework/src/onos/protocols/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 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 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 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 parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList 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 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 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java deleted file mode 100644 index 6f3648af..00000000 --- a/framework/src/onos/protocols/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>::= - - Where: - - ::= - - - Where - ::=[] - */ - 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; - // - PcepLabelRange labelRange; - - public static final PcepLabelRangeResvMsgVer1.Reader READER = new Reader(); - - /** - * Reader reads LabelRangeResv Message from the channel. - */ - static class Reader implements PcepMessageReader { - - @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 - 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 { - - @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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java deleted file mode 100644 index 411c9604..00000000 --- a/framework/src/onos/protocols/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); - - /* - ::= - - Where - ::=[] - */ - - // PCEP SRP Object - private PcepSrpObject srpObject; - // of type PcepLabelRangeObject. - private LinkedList 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 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 getLabelRangeList() { - return llLabelRangeList; - } - - @Override - public void setLabelRangeList(LinkedList 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 llLabelRangeList = new LinkedList<>(); - boolean bFoundLabelRangeObj = false; - while (0 < cb.readableBytes()) { - //parse and store - 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 - int objLenIndex = srpObject.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("bjectLength is " + objLenIndex); - } - - //write - ListIterator 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/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java b/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java deleted file mode 100644 index 89347f42..00000000 --- a/framework/src/onos/protocols/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: - - ::= - - Where: - - ::= - [] - ::= (|) - - Where: - ::= - - - - ::= -