Committed by
Gerrit Code Review
ONOS-2739 - OSPF Basic Packet Structures , which includes encoding and decoding
Change-Id: Ifaaa4d3640c6a4fec4931db54a1f03100cc9d9e6
Showing
14 changed files
with
1264 additions
and
0 deletions
protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/package-info.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +/** | ||
18 | + * Implementation of the OSPF LSA Sub Types. | ||
19 | + */ | ||
20 | +package org.onosproject.ospf.protocol.lsa.subtypes; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.ospf.protocol.lsa.types; | ||
17 | + | ||
18 | +import com.google.common.base.MoreObjects; | ||
19 | +import com.google.common.base.Objects; | ||
20 | +import com.google.common.primitives.Bytes; | ||
21 | +import org.jboss.netty.buffer.ChannelBuffer; | ||
22 | +import org.onosproject.ospf.controller.OspfLsaType; | ||
23 | +import org.onosproject.ospf.exceptions.OspfErrorType; | ||
24 | +import org.onosproject.ospf.exceptions.OspfParseException; | ||
25 | +import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; | ||
26 | +import org.onosproject.ospf.protocol.lsa.TlvHeader; | ||
27 | +import org.onosproject.ospf.protocol.lsa.tlvtypes.LinkTlv; | ||
28 | +import org.onosproject.ospf.protocol.lsa.tlvtypes.OpaqueTopLevelTlvTypes; | ||
29 | +import org.onosproject.ospf.protocol.lsa.tlvtypes.RouterTlv; | ||
30 | +import org.onosproject.ospf.protocol.util.OspfParameters; | ||
31 | + | ||
32 | +import java.util.ArrayList; | ||
33 | +import java.util.List; | ||
34 | + | ||
35 | +/** | ||
36 | + * Representation of an Opaque LSA of type area local (10). | ||
37 | + */ | ||
38 | +public class OpaqueLsa10 extends OpaqueLsaHeader { | ||
39 | + /* | ||
40 | + 0 1 2 3 | ||
41 | + 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 | ||
42 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
43 | + | LS age | Options | 9, 10 or 11 | | ||
44 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
45 | + | Opaque Type | Opaque ID | | ||
46 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
47 | + | Advertising Router | | ||
48 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
49 | + | LS Sequence Number | | ||
50 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
51 | + | LS checksum | Length | | ||
52 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
53 | + | | | ||
54 | + + + | ||
55 | + | Opaque Information | | ||
56 | + + + | ||
57 | + | ... | | ||
58 | + | ||
59 | + Opaque LSA format | ||
60 | + REFERENCE : RFC 5250 | ||
61 | + */ | ||
62 | + private List<TopLevelTlv> topLevelValues = new ArrayList<>(); | ||
63 | + private byte[] opaqueInfo = null; | ||
64 | + | ||
65 | + /** | ||
66 | + * Creates an instance of Opaque type 10 LSA. | ||
67 | + * | ||
68 | + * @param lsaHeader LSA header instance | ||
69 | + */ | ||
70 | + public OpaqueLsa10(OpaqueLsaHeader lsaHeader) { | ||
71 | + populateHeader(lsaHeader); | ||
72 | + } | ||
73 | + | ||
74 | + /** | ||
75 | + * Returns the list of top level TLVs. | ||
76 | + * | ||
77 | + * @return list of top level TLVs | ||
78 | + */ | ||
79 | + public List<TopLevelTlv> topLevelValues() { | ||
80 | + return topLevelValues; | ||
81 | + } | ||
82 | + | ||
83 | + /** | ||
84 | + * Adds TLV value. | ||
85 | + * | ||
86 | + * @param value TLV value | ||
87 | + */ | ||
88 | + public void addValue(TopLevelTlv value) { | ||
89 | + topLevelValues.add(value); | ||
90 | + } | ||
91 | + | ||
92 | + /** | ||
93 | + * Reads from channel buffer and populate instance. | ||
94 | + * | ||
95 | + * @param channelBuffer channelBuffer instance | ||
96 | + * @throws OspfParseException might throws exception while parsing buffer | ||
97 | + */ | ||
98 | + public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { | ||
99 | + | ||
100 | + try { | ||
101 | + if (this.opaqueId() == OspfParameters.TRAFFIC_ENGINEERING) { | ||
102 | + while (channelBuffer.readableBytes() > 0) { | ||
103 | + TlvHeader tlvHeader = new TlvHeader(); | ||
104 | + tlvHeader.setTlvType(channelBuffer.readUnsignedShort()); | ||
105 | + tlvHeader.setTlvLength(channelBuffer.readUnsignedShort()); | ||
106 | + if (tlvHeader.tlvType() == OpaqueTopLevelTlvTypes.ROUTER.value()) { | ||
107 | + RouterTlv routerTlv = new RouterTlv(tlvHeader); | ||
108 | + routerTlv.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); | ||
109 | + this.addValue(routerTlv); | ||
110 | + } else if (tlvHeader.tlvType() == OpaqueTopLevelTlvTypes.LINK.value()) { | ||
111 | + LinkTlv linkTlv = new LinkTlv(tlvHeader); | ||
112 | + linkTlv.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); | ||
113 | + this.addValue(linkTlv); | ||
114 | + } | ||
115 | + } | ||
116 | + } else { | ||
117 | + int length = channelBuffer.readableBytes(); | ||
118 | + opaqueInfo = new byte[length]; | ||
119 | + channelBuffer.readBytes(opaqueInfo, 0, length); | ||
120 | + } | ||
121 | + | ||
122 | + } catch (Exception e) { | ||
123 | + log.debug("Error::OpaqueLsa10:: {}", e.getMessage()); | ||
124 | + throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, | ||
125 | + OspfErrorType.BAD_MESSAGE); | ||
126 | + } | ||
127 | + } | ||
128 | + | ||
129 | + /** | ||
130 | + * Returns instance as bytes. | ||
131 | + * | ||
132 | + * @return instance as bytes | ||
133 | + * @throws Exception might throws exception while parsing packet | ||
134 | + */ | ||
135 | + public byte[] asBytes() throws Exception { | ||
136 | + | ||
137 | + byte[] lsaMessage = null; | ||
138 | + byte[] lsaHeader = getOpaqueLsaHeaderAsByteArray(); | ||
139 | + byte[] lsaBody = getLsaBodyAsByteArray(); | ||
140 | + lsaMessage = Bytes.concat(lsaHeader, lsaBody); | ||
141 | + return lsaMessage; | ||
142 | + | ||
143 | + } | ||
144 | + | ||
145 | + /** | ||
146 | + * Gets the LSA body as byte array. | ||
147 | + * | ||
148 | + * @return the lsa body as byte array | ||
149 | + * @throws Exception might throws exception while parsing packet | ||
150 | + */ | ||
151 | + public byte[] getLsaBodyAsByteArray() throws Exception { | ||
152 | + List<Byte> bodyLst = new ArrayList<>(); | ||
153 | + if (this.opaqueId() == 1) { | ||
154 | + for (TopLevelTlv tlv : this.topLevelValues) { | ||
155 | + //Check the sub type of lsa and build bytes accordingly | ||
156 | + if (tlv instanceof RouterTlv) { | ||
157 | + RouterTlv routerTlv = (RouterTlv) tlv; | ||
158 | + bodyLst.addAll(Bytes.asList(routerTlv.asBytes())); | ||
159 | + } else if (tlv instanceof LinkTlv) { | ||
160 | + LinkTlv linkTlv = (LinkTlv) tlv; | ||
161 | + bodyLst.addAll(Bytes.asList(linkTlv.asBytes())); | ||
162 | + } | ||
163 | + } | ||
164 | + } else { | ||
165 | + return opaqueInfo; | ||
166 | + } | ||
167 | + | ||
168 | + return Bytes.toArray(bodyLst); | ||
169 | + } | ||
170 | + | ||
171 | + @Override | ||
172 | + public OspfLsaType getOspfLsaType() { | ||
173 | + return OspfLsaType.AREA_LOCAL_OPAQUE_LSA; | ||
174 | + } | ||
175 | + | ||
176 | + @Override | ||
177 | + public String toString() { | ||
178 | + return MoreObjects.toStringHelper(getClass()) | ||
179 | + .omitNullValues() | ||
180 | + .add("topLevelValues", topLevelValues) | ||
181 | + .add("opaqueInfo", opaqueInfo) | ||
182 | + .toString(); | ||
183 | + } | ||
184 | + | ||
185 | + @Override | ||
186 | + public boolean equals(Object o) { | ||
187 | + if (this == o) { | ||
188 | + return true; | ||
189 | + } | ||
190 | + if (o == null || getClass() != o.getClass()) { | ||
191 | + return false; | ||
192 | + } | ||
193 | + OpaqueLsa10 that = (OpaqueLsa10) o; | ||
194 | + return Objects.equal(topLevelValues, that.topLevelValues) && | ||
195 | + Objects.equal(opaqueInfo, that.opaqueInfo); | ||
196 | + } | ||
197 | + | ||
198 | + @Override | ||
199 | + public int hashCode() { | ||
200 | + return Objects.hashCode(opaqueInfo, topLevelValues); | ||
201 | + } | ||
202 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/RouterLsa.java
0 → 100644
This diff is collapsed. Click to expand it.
protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/package-info.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +/** | ||
18 | + * Implementation of the OSPF LSA types. | ||
19 | + */ | ||
20 | +package org.onosproject.ospf.protocol.lsa.types; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.ospf.protocol.ospfpacket; | ||
18 | + | ||
19 | +import org.jboss.netty.buffer.ChannelBuffer; | ||
20 | +import org.onlab.packet.Ip4Address; | ||
21 | +import org.onosproject.ospf.exceptions.OspfErrorType; | ||
22 | +import org.onosproject.ospf.exceptions.OspfParseException; | ||
23 | +import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket; | ||
24 | +import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket; | ||
25 | +import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge; | ||
26 | +import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest; | ||
27 | +import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate; | ||
28 | +import org.onosproject.ospf.protocol.util.OspfParameters; | ||
29 | +import org.onosproject.ospf.protocol.util.OspfUtil; | ||
30 | +import org.slf4j.Logger; | ||
31 | +import org.slf4j.LoggerFactory; | ||
32 | + | ||
33 | +/** | ||
34 | + * A message reader which reads OSPF messages from ChannelBuffer and converts to OspfMessage instances. | ||
35 | + */ | ||
36 | +public class OspfMessageReader { | ||
37 | + private static final Logger log = LoggerFactory.getLogger(OspfMessageReader.class); | ||
38 | + | ||
39 | + /** | ||
40 | + * Reads and Converts the channel buffer to OspfMessage instance. | ||
41 | + * | ||
42 | + * @param channelBuffer channel buffer instance. | ||
43 | + * @return OSPF message instance. | ||
44 | + * @throws Exception might throws exception while parsing buffer | ||
45 | + */ | ||
46 | + public OspfMessage readFromBuffer(ChannelBuffer channelBuffer) | ||
47 | + throws Exception { | ||
48 | + | ||
49 | + if (channelBuffer.readableBytes() < OspfUtil.PACKET_MINIMUM_LENGTH) { | ||
50 | + log.error("Packet should have minimum length..."); | ||
51 | + throw new OspfParseException(OspfErrorType.MESSAGE_HEADER_ERROR, OspfErrorType.BAD_MESSAGE_LENGTH); | ||
52 | + } | ||
53 | + | ||
54 | + try { | ||
55 | + OspfPacketHeader ospfHeader = getOspfHeader(channelBuffer); | ||
56 | + int len = ospfHeader.ospfPacLength() - OspfUtil.OSPF_HEADER_LENGTH; | ||
57 | + | ||
58 | + OspfMessage ospfMessage = null; | ||
59 | + switch (ospfHeader.ospfType()) { | ||
60 | + case OspfParameters.HELLO: | ||
61 | + ospfMessage = new HelloPacket(ospfHeader); | ||
62 | + break; | ||
63 | + case OspfParameters.DD: | ||
64 | + ospfMessage = new DdPacket(ospfHeader); | ||
65 | + break; | ||
66 | + case OspfParameters.LSREQUEST: | ||
67 | + ospfMessage = new LsRequest(ospfHeader); | ||
68 | + break; | ||
69 | + case OspfParameters.LSUPDATE: | ||
70 | + ospfMessage = new LsUpdate(ospfHeader); | ||
71 | + break; | ||
72 | + case OspfParameters.LSACK: | ||
73 | + ospfMessage = new LsAcknowledge(ospfHeader); | ||
74 | + break; | ||
75 | + default: | ||
76 | + log.debug("Message Reader[Decoder] - Unknown LSA type..!!!"); | ||
77 | + break; | ||
78 | + } | ||
79 | + | ||
80 | + if (ospfMessage != null) { | ||
81 | + try { | ||
82 | + log.debug("{} Received::Message Length :: {} ", ospfMessage.ospfMessageType(), | ||
83 | + ospfHeader.ospfPacLength()); | ||
84 | + ospfMessage.readFrom(channelBuffer.readBytes(len)); | ||
85 | + } catch (Exception e) { | ||
86 | + throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, | ||
87 | + OspfErrorType.BAD_MESSAGE); | ||
88 | + } | ||
89 | + | ||
90 | + } | ||
91 | + | ||
92 | + return ospfMessage; | ||
93 | + } catch (Exception e) { | ||
94 | + throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, | ||
95 | + OspfErrorType.BAD_MESSAGE); | ||
96 | + } | ||
97 | + } | ||
98 | + | ||
99 | + /** | ||
100 | + * Gets the OSPF packet Header. | ||
101 | + * | ||
102 | + * @param channelBuffer channel buffer instance. | ||
103 | + * @return Ospf Header instance. | ||
104 | + */ | ||
105 | + private OspfPacketHeader getOspfHeader(ChannelBuffer channelBuffer) throws Exception { | ||
106 | + OspfPacketHeader ospfPacketHeader = new OspfPacketHeader(); | ||
107 | + | ||
108 | + byte[] sourceIpBytes = new byte[OspfUtil.FOUR_BYTES]; | ||
109 | + channelBuffer.readBytes(sourceIpBytes, 0, OspfUtil.FOUR_BYTES); | ||
110 | + Ip4Address sourceIP = Ip4Address.valueOf(sourceIpBytes); | ||
111 | + | ||
112 | + // Determine ospf version & Packet Type | ||
113 | + int version = channelBuffer.readByte(); //byte 1 is ospf version | ||
114 | + int packetType = channelBuffer.readByte(); //byte 2 is ospf packet type | ||
115 | + | ||
116 | + // byte 3 & 4 combine is packet length. | ||
117 | + int packetLength = channelBuffer.readShort(); | ||
118 | + | ||
119 | + if (packetLength > channelBuffer.readableBytes() + OspfUtil.FOUR_BYTES) { | ||
120 | + log.error("Packet should have minimum length..."); | ||
121 | + throw new OspfParseException(OspfErrorType.MESSAGE_HEADER_ERROR, OspfErrorType.BAD_MESSAGE_LENGTH); | ||
122 | + } | ||
123 | + | ||
124 | + byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; | ||
125 | + channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); | ||
126 | + Ip4Address routerId = Ip4Address.valueOf(tempByteArray); | ||
127 | + | ||
128 | + tempByteArray = new byte[OspfUtil.FOUR_BYTES]; | ||
129 | + channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); | ||
130 | + Ip4Address areaId = Ip4Address.valueOf(tempByteArray); | ||
131 | + | ||
132 | + int checkSum = channelBuffer.readUnsignedShort(); | ||
133 | + int auType = channelBuffer.readUnsignedShort(); | ||
134 | + int authentication = (int) channelBuffer.readLong(); | ||
135 | + | ||
136 | + ospfPacketHeader.setSourceIp(sourceIP); | ||
137 | + ospfPacketHeader.setOspfVer(version); | ||
138 | + ospfPacketHeader.setOspftype(packetType); | ||
139 | + ospfPacketHeader.setOspfPacLength(packetLength); | ||
140 | + ospfPacketHeader.setRouterId(routerId); | ||
141 | + ospfPacketHeader.setAreaId(areaId); | ||
142 | + ospfPacketHeader.setChecksum(checkSum); | ||
143 | + ospfPacketHeader.setAuthType(auType); | ||
144 | + ospfPacketHeader.setAuthentication(authentication); | ||
145 | + | ||
146 | + return ospfPacketHeader; | ||
147 | + } | ||
148 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | +* Copyright 2016 Open Networking Laboratory | ||
3 | +* | ||
4 | +* Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | +* you may not use this file except in compliance with the License. | ||
6 | +* You may obtain a copy of the License at | ||
7 | +* | ||
8 | +* http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | +* | ||
10 | +* Unless required by applicable law or agreed to in writing, software | ||
11 | +* distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | +* See the License for the specific language governing permissions and | ||
14 | +* limitations under the License. | ||
15 | +*/ | ||
16 | +package org.onosproject.ospf.protocol.ospfpacket; | ||
17 | + | ||
18 | +import org.jboss.netty.buffer.ChannelBuffer; | ||
19 | +import org.jboss.netty.buffer.ChannelBuffers; | ||
20 | +import org.onosproject.ospf.protocol.util.OspfParameters; | ||
21 | +import org.onosproject.ospf.protocol.util.OspfUtil; | ||
22 | +import org.slf4j.Logger; | ||
23 | +import org.slf4j.LoggerFactory; | ||
24 | + | ||
25 | +/** | ||
26 | + * A message writer which writes an OspfMessage to ChannelBuffer. | ||
27 | + */ | ||
28 | +public class OspfMessageWriter { | ||
29 | + private static final Logger log = LoggerFactory.getLogger(OspfMessageWriter.class); | ||
30 | + | ||
31 | + /** | ||
32 | + * Writes OSPF message to ChannelBuffer. | ||
33 | + * | ||
34 | + * @param ospfMessage OSPF message | ||
35 | + * @param interfaceState interface state | ||
36 | + * @param interfaceType interface type | ||
37 | + * @return channelBuffer channel buffer instance | ||
38 | + * @throws Exception might throws exception while parsing message | ||
39 | + */ | ||
40 | + public ChannelBuffer writeToBuffer(OspfMessage ospfMessage, int interfaceState, | ||
41 | + int interfaceType) throws Exception { | ||
42 | + | ||
43 | + ChannelBuffer buf = null; | ||
44 | + switch (ospfMessage.ospfMessageType().value()) { | ||
45 | + case OspfParameters.HELLO: | ||
46 | + case OspfParameters.LSACK: | ||
47 | + buf = writeMessageToBuffer(ospfMessage, interfaceState); | ||
48 | + break; | ||
49 | + case OspfParameters.DD: | ||
50 | + case OspfParameters.LSREQUEST: | ||
51 | + case OspfParameters.LSUPDATE: | ||
52 | + buf = writeMessageToBuffer(ospfMessage, interfaceState); | ||
53 | + break; | ||
54 | + default: | ||
55 | + log.debug("Message Writer[Encoder] - Unknown Message to encode..!!!"); | ||
56 | + break; | ||
57 | + } | ||
58 | + | ||
59 | + return buf; | ||
60 | + } | ||
61 | + | ||
62 | + /** | ||
63 | + * Writes an OSPF Message to channel buffer. | ||
64 | + * | ||
65 | + * @param ospfMessage OSPF Message instance | ||
66 | + * @param interfaceState interface state | ||
67 | + * @return channelBuffer instance | ||
68 | + */ | ||
69 | + private ChannelBuffer writeMessageToBuffer(OspfMessage ospfMessage, int interfaceState) throws Exception { | ||
70 | + ChannelBuffer channelBuffer = null; | ||
71 | + byte[] ospfMessageAsByte = ospfMessage.asBytes(); | ||
72 | + //Add the length and checksum in byte array at length position 2 & 3 and Checksum position | ||
73 | + ospfMessageAsByte = OspfUtil.addLengthAndCheckSum(ospfMessageAsByte, OspfUtil.OSPFPACKET_LENGTH_POS1, | ||
74 | + OspfUtil.OSPFPACKET_LENGTH_POS2, | ||
75 | + OspfUtil.OSPFPACKET_CHECKSUM_POS1, | ||
76 | + OspfUtil.OSPFPACKET_CHECKSUM_POS2); | ||
77 | + //Add Interface State Info and destination IP as metadata | ||
78 | + if (interfaceState == OspfParameters.DR || interfaceState == OspfParameters.BDR) { | ||
79 | + ospfMessageAsByte = OspfUtil.addMetadata(ospfMessageAsByte, OspfUtil.JOIN_ALL_DROUTERS, | ||
80 | + ospfMessage.destinationIp()); | ||
81 | + } else { | ||
82 | + ospfMessageAsByte = OspfUtil.addMetadata(ospfMessageAsByte, OspfUtil.ONLY_ALL_SPF_ROUTERS, | ||
83 | + ospfMessage.destinationIp()); | ||
84 | + } | ||
85 | + | ||
86 | + channelBuffer = ChannelBuffers.buffer(ospfMessageAsByte.length); | ||
87 | + channelBuffer.writeBytes(ospfMessageAsByte); | ||
88 | + | ||
89 | + return channelBuffer; | ||
90 | + } | ||
91 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdate.java
0 → 100644
This diff is collapsed. Click to expand it.
protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/ChecksumCalculator.java
0 → 100644
This diff is collapsed. Click to expand it.
protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10Test.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.ospf.protocol.lsa.types; | ||
17 | + | ||
18 | +import org.jboss.netty.buffer.ChannelBuffer; | ||
19 | +import org.jboss.netty.buffer.ChannelBuffers; | ||
20 | +import org.junit.After; | ||
21 | +import org.junit.Before; | ||
22 | +import org.junit.Test; | ||
23 | +import org.onlab.packet.Ip4Address; | ||
24 | +import org.onosproject.ospf.controller.OspfLsaType; | ||
25 | +import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; | ||
26 | +import org.onosproject.ospf.protocol.lsa.TlvHeader; | ||
27 | +import org.onosproject.ospf.protocol.lsa.tlvtypes.LinkTlv; | ||
28 | +import org.onosproject.ospf.protocol.lsa.tlvtypes.RouterTlv; | ||
29 | + | ||
30 | + | ||
31 | +import java.util.List; | ||
32 | + | ||
33 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
34 | +import static org.hamcrest.Matchers.is; | ||
35 | +import static org.hamcrest.Matchers.notNullValue; | ||
36 | + | ||
37 | +/** | ||
38 | + * Unit test class for OpaqueLsa10. | ||
39 | + */ | ||
40 | +public class OpaqueLsa10Test { | ||
41 | + | ||
42 | + private final byte[] packet = {0, 1, 0, 4, 1, 1, 1, 1, 0, 2, 0, 84, 0, 0, 0, | ||
43 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
44 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; | ||
45 | + private OpaqueLsa10 opaqueLsa10; | ||
46 | + private TopLevelTlv tlv; | ||
47 | + private OpaqueLsaHeader opqueHeader; | ||
48 | + private ChannelBuffer channelBuffer; | ||
49 | + private byte[] result; | ||
50 | + private RouterTlv routerTlv; | ||
51 | + private RouterTlv routerTlv1; | ||
52 | + private LinkTlv linkTlv; | ||
53 | + private LinkTlv linkTlv1; | ||
54 | + private OspfLsaType ospflsaType; | ||
55 | + private int result1; | ||
56 | + private List result2; | ||
57 | + | ||
58 | + @Before | ||
59 | + public void setUp() throws Exception { | ||
60 | + opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader()); | ||
61 | + } | ||
62 | + | ||
63 | + @After | ||
64 | + public void tearDown() throws Exception { | ||
65 | + opaqueLsa10 = null; | ||
66 | + tlv = null; | ||
67 | + opqueHeader = null; | ||
68 | + channelBuffer = null; | ||
69 | + result = null; | ||
70 | + routerTlv = null; | ||
71 | + routerTlv1 = null; | ||
72 | + linkTlv1 = null; | ||
73 | + ospflsaType = null; | ||
74 | + } | ||
75 | + | ||
76 | + /** | ||
77 | + * Tests to string method. | ||
78 | + */ | ||
79 | + @Test | ||
80 | + public void testToString() throws Exception { | ||
81 | + assertThat(opaqueLsa10.toString(), is(notNullValue())); | ||
82 | + } | ||
83 | + | ||
84 | + /** | ||
85 | + * Tests addValue() method. | ||
86 | + */ | ||
87 | + @Test | ||
88 | + public void testAddValue() throws Exception { | ||
89 | + tlv = new RouterTlv(new TlvHeader()); | ||
90 | + opaqueLsa10.addValue(tlv); | ||
91 | + assertThat(opaqueLsa10, is(notNullValue())); | ||
92 | + } | ||
93 | + | ||
94 | + /** | ||
95 | + * Tests readFrom() method. | ||
96 | + */ | ||
97 | + @Test(expected = Exception.class) | ||
98 | + public void testReadFrom() throws Exception { | ||
99 | + opqueHeader = new OpaqueLsaHeader(); | ||
100 | + opqueHeader.setLsType(10); | ||
101 | + opqueHeader.setLsPacketLen(48); | ||
102 | + opqueHeader.setLsCheckSum(10); | ||
103 | + opqueHeader.setAge(4); | ||
104 | + opqueHeader.setOpaqueId(1); | ||
105 | + opqueHeader.setOpaqueType(10); | ||
106 | + opqueHeader.setLsSequenceNo(250); | ||
107 | + opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); | ||
108 | + opqueHeader.setOptions(66); | ||
109 | + opaqueLsa10 = new OpaqueLsa10(opqueHeader); | ||
110 | + channelBuffer = ChannelBuffers.copiedBuffer(packet); | ||
111 | + opaqueLsa10.readFrom(channelBuffer); | ||
112 | + result = opaqueLsa10.asBytes(); | ||
113 | + assertThat(result, is(notNullValue())); | ||
114 | + } | ||
115 | + | ||
116 | + /** | ||
117 | + * Tests asBytes() method. | ||
118 | + */ | ||
119 | + @Test(expected = Exception.class) | ||
120 | + public void testAsBytes() throws Exception { | ||
121 | + opqueHeader = new OpaqueLsaHeader(); | ||
122 | + opqueHeader.setLsType(10); | ||
123 | + opqueHeader.setLsPacketLen(48); | ||
124 | + opqueHeader.setLsCheckSum(10); | ||
125 | + opqueHeader.setAge(4); | ||
126 | + opqueHeader.setOpaqueId(1); | ||
127 | + opqueHeader.setOpaqueType(10); | ||
128 | + opqueHeader.setLsSequenceNo(250); | ||
129 | + opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); | ||
130 | + opqueHeader.setOptions(66); | ||
131 | + opaqueLsa10 = new OpaqueLsa10(opqueHeader); | ||
132 | + channelBuffer = ChannelBuffers.copiedBuffer(packet); | ||
133 | + opaqueLsa10.readFrom(channelBuffer); | ||
134 | + result = opaqueLsa10.getLsaBodyAsByteArray(); | ||
135 | + result = opaqueLsa10.asBytes(); | ||
136 | + assertThat(result, is(notNullValue())); | ||
137 | + } | ||
138 | + | ||
139 | + /** | ||
140 | + * Tests getLsaBodyAsByteArray() method. | ||
141 | + */ | ||
142 | + @Test(expected = Exception.class) | ||
143 | + public void testGetLsaBodyAsByteArray() throws Exception { | ||
144 | + opqueHeader = new OpaqueLsaHeader(); | ||
145 | + opqueHeader.setLsType(10); | ||
146 | + opqueHeader.setLsPacketLen(48); | ||
147 | + opqueHeader.setLsCheckSum(10); | ||
148 | + opqueHeader.setAge(4); | ||
149 | + opqueHeader.setOpaqueId(1); | ||
150 | + opqueHeader.setOpaqueType(10); | ||
151 | + opqueHeader.setLsSequenceNo(250); | ||
152 | + opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); | ||
153 | + opqueHeader.setOptions(2); | ||
154 | + opaqueLsa10 = new OpaqueLsa10(opqueHeader); | ||
155 | + routerTlv = new RouterTlv(new TlvHeader()); | ||
156 | + linkTlv = new LinkTlv(new TlvHeader()); | ||
157 | + opaqueLsa10.addValue(routerTlv); | ||
158 | + opaqueLsa10.addValue(linkTlv); | ||
159 | + routerTlv1 = new RouterTlv(new TlvHeader()); | ||
160 | + linkTlv1 = new LinkTlv(new TlvHeader()); | ||
161 | + opaqueLsa10.addValue(routerTlv1); | ||
162 | + opaqueLsa10.addValue(linkTlv1); | ||
163 | + channelBuffer = ChannelBuffers.copiedBuffer(packet); | ||
164 | + opaqueLsa10.readFrom(channelBuffer); | ||
165 | + result = opaqueLsa10.getLsaBodyAsByteArray(); | ||
166 | + assertThat(result, is(notNullValue())); | ||
167 | + } | ||
168 | + | ||
169 | + /** | ||
170 | + * Tests getLsaBodyAsByteArray() method. | ||
171 | + */ | ||
172 | + @Test(expected = Exception.class) | ||
173 | + public void testGetLsaBodyAsByteArray1() throws Exception { | ||
174 | + opqueHeader = new OpaqueLsaHeader(); | ||
175 | + opqueHeader.setLsType(10); | ||
176 | + opqueHeader.setLsPacketLen(48); | ||
177 | + opqueHeader.setLsCheckSum(10); | ||
178 | + opqueHeader.setAge(4); | ||
179 | + opqueHeader.setOpaqueId(1); | ||
180 | + opqueHeader.setOpaqueType(10); | ||
181 | + opqueHeader.setLsSequenceNo(250); | ||
182 | + opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); | ||
183 | + opqueHeader.setOptions(2); | ||
184 | + opaqueLsa10 = new OpaqueLsa10(opqueHeader); | ||
185 | + routerTlv = new RouterTlv(new TlvHeader()); | ||
186 | + opaqueLsa10.addValue(routerTlv); | ||
187 | + channelBuffer = ChannelBuffers.copiedBuffer(packet); | ||
188 | + result = opaqueLsa10.getLsaBodyAsByteArray(); | ||
189 | + assertThat(result, is(notNullValue())); | ||
190 | + } | ||
191 | + | ||
192 | + /** | ||
193 | + * Tests getLsaBodyAsByteArray() method. | ||
194 | + */ | ||
195 | + @Test(expected = Exception.class) | ||
196 | + public void testGetLsaBodyAsByteArray2() throws Exception { | ||
197 | + opqueHeader = new OpaqueLsaHeader(); | ||
198 | + opqueHeader.setLsType(10); | ||
199 | + opqueHeader.setLsPacketLen(48); | ||
200 | + opqueHeader.setLsCheckSum(10); | ||
201 | + opqueHeader.setAge(4); | ||
202 | + opqueHeader.setOpaqueId(1); | ||
203 | + opqueHeader.setOpaqueType(10); | ||
204 | + opqueHeader.setLsSequenceNo(250); | ||
205 | + opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); | ||
206 | + opqueHeader.setOptions(2); | ||
207 | + opaqueLsa10 = new OpaqueLsa10(opqueHeader); | ||
208 | + linkTlv = new LinkTlv(new TlvHeader()); | ||
209 | + opaqueLsa10.addValue(linkTlv); | ||
210 | + channelBuffer = ChannelBuffers.copiedBuffer(packet); | ||
211 | + opaqueLsa10.readFrom(channelBuffer); | ||
212 | + result = opaqueLsa10.getLsaBodyAsByteArray(); | ||
213 | + assertThat(result, is(notNullValue())); | ||
214 | + } | ||
215 | + | ||
216 | + /** | ||
217 | + * Tests getOspfLsaType() getter method. | ||
218 | + */ | ||
219 | + @Test | ||
220 | + public void testGetOspfLsaType() throws Exception { | ||
221 | + opaqueLsa10.setLsType(10); | ||
222 | + ospflsaType = opaqueLsa10.getOspfLsaType(); | ||
223 | + assertThat(ospflsaType, is(notNullValue())); | ||
224 | + assertThat(ospflsaType, is(OspfLsaType.AREA_LOCAL_OPAQUE_LSA)); | ||
225 | + } | ||
226 | + | ||
227 | + /** | ||
228 | + * Tests hashCode() method. | ||
229 | + */ | ||
230 | + @Test | ||
231 | + public void testHashcode() throws Exception { | ||
232 | + | ||
233 | + result1 = opaqueLsa10.hashCode(); | ||
234 | + assertThat(result1, is(notNullValue())); | ||
235 | + | ||
236 | + } | ||
237 | + | ||
238 | + /** | ||
239 | + * Tests topLevelValues() method. | ||
240 | + */ | ||
241 | + @Test | ||
242 | + public void testTopLevelValues() throws Exception { | ||
243 | + | ||
244 | + result2 = opaqueLsa10.topLevelValues(); | ||
245 | + assertThat(result2, is(notNullValue())); | ||
246 | + | ||
247 | + } | ||
248 | + | ||
249 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/RouterLsaTest.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.ospf.protocol.lsa.types; | ||
17 | + | ||
18 | +import org.jboss.netty.buffer.ChannelBuffer; | ||
19 | +import org.jboss.netty.buffer.ChannelBuffers; | ||
20 | +import org.junit.After; | ||
21 | +import org.junit.Before; | ||
22 | +import org.junit.Test; | ||
23 | +import org.onlab.packet.Ip4Address; | ||
24 | +import org.onosproject.ospf.controller.OspfLsaType; | ||
25 | +import org.onosproject.ospf.protocol.lsa.LsaHeader; | ||
26 | +import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink; | ||
27 | + | ||
28 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
29 | +import static org.hamcrest.Matchers.*; | ||
30 | + | ||
31 | +/** | ||
32 | + * Unit test class for RouterLsa. | ||
33 | + */ | ||
34 | +public class RouterLsaTest { | ||
35 | + | ||
36 | + private RouterLsa routerLsa; | ||
37 | + private int result1; | ||
38 | + private OspfLsaLink ospflsaLink; | ||
39 | + private byte[] inputArray; | ||
40 | + private LsaHeader lsaHeader; | ||
41 | + private ChannelBuffer channelBuffer; | ||
42 | + private byte[] result2; | ||
43 | + private OspfLsaType result3; | ||
44 | + | ||
45 | + @Before | ||
46 | + public void setUp() throws Exception { | ||
47 | + routerLsa = new RouterLsa(); | ||
48 | + } | ||
49 | + | ||
50 | + @After | ||
51 | + public void tearDown() throws Exception { | ||
52 | + routerLsa = null; | ||
53 | + ospflsaLink = null; | ||
54 | + inputArray = null; | ||
55 | + lsaHeader = null; | ||
56 | + channelBuffer = null; | ||
57 | + result2 = null; | ||
58 | + result3 = null; | ||
59 | + } | ||
60 | + | ||
61 | + | ||
62 | + /** | ||
63 | + * Tests virtualEndPoint() setter method. | ||
64 | + */ | ||
65 | + @Test | ||
66 | + public void testSetVirtualEndPoint() throws Exception { | ||
67 | + routerLsa.setVirtualEndPoint(true); | ||
68 | + assertThat(routerLsa, is(notNullValue())); | ||
69 | + } | ||
70 | + | ||
71 | + | ||
72 | + /** | ||
73 | + * Tests isAsBoundaryRouter() setter method. | ||
74 | + */ | ||
75 | + @Test | ||
76 | + public void testSetAsBoundaryRouter() throws Exception { | ||
77 | + routerLsa.setAsBoundaryRouter(true); | ||
78 | + assertThat(routerLsa, is(notNullValue())); | ||
79 | + } | ||
80 | + | ||
81 | + /** | ||
82 | + * Tests areaBorderRouter() setter method. | ||
83 | + */ | ||
84 | + @Test | ||
85 | + public void testSetAreaBorderRouter() throws Exception { | ||
86 | + routerLsa.setAreaBorderRouter(true); | ||
87 | + assertThat(routerLsa, is(notNullValue())); | ||
88 | + } | ||
89 | + | ||
90 | + /** | ||
91 | + * Tests noLink() getter method. | ||
92 | + */ | ||
93 | + @Test | ||
94 | + public void testGetNoLink() throws Exception { | ||
95 | + routerLsa.setNoLink(10); | ||
96 | + result1 = routerLsa.noLink(); | ||
97 | + assertThat(result1, is(10)); | ||
98 | + } | ||
99 | + | ||
100 | + /** | ||
101 | + * Tests noLink() setter method. | ||
102 | + */ | ||
103 | + @Test | ||
104 | + public void testSetNoLink() throws Exception { | ||
105 | + routerLsa.setNoLink(10); | ||
106 | + result1 = routerLsa.noLink(); | ||
107 | + assertThat(result1, is(10)); | ||
108 | + } | ||
109 | + | ||
110 | + /** | ||
111 | + * Tests addRouterLink() method. | ||
112 | + */ | ||
113 | + @Test | ||
114 | + public void testAddRouterLink() throws Exception { | ||
115 | + routerLsa.setNoLink(0); | ||
116 | + ospflsaLink = createOspfLsaLink(); | ||
117 | + routerLsa.addRouterLink(ospflsaLink); | ||
118 | + routerLsa.incrementLinkNo(); | ||
119 | + result1 = routerLsa.noLink(); | ||
120 | + assertThat(result1, is(1)); | ||
121 | + | ||
122 | + } | ||
123 | + | ||
124 | + | ||
125 | + /** | ||
126 | + * Tests readFrom() method. | ||
127 | + */ | ||
128 | + @Test | ||
129 | + public void testReadFrom() throws Exception { | ||
130 | + ospflsaLink = createOspfLsaLink(); | ||
131 | + routerLsa.addRouterLink(ospflsaLink); | ||
132 | + inputArray = createByteForRouterLsa(); | ||
133 | + lsaHeader = createLsaHeader(); | ||
134 | + routerLsa = new RouterLsa(lsaHeader); | ||
135 | + channelBuffer = ChannelBuffers.copiedBuffer(inputArray); | ||
136 | + routerLsa.readFrom(channelBuffer); | ||
137 | + assertThat(routerLsa, is(notNullValue())); | ||
138 | + } | ||
139 | + | ||
140 | + /** | ||
141 | + * Tests readFrom() method. | ||
142 | + */ | ||
143 | + @Test(expected = Exception.class) | ||
144 | + public void testReadFrom1() throws Exception { | ||
145 | + byte[] temp = {0, 0, 0}; | ||
146 | + ospflsaLink = createOspfLsaLink(); | ||
147 | + routerLsa.addRouterLink(ospflsaLink); | ||
148 | + inputArray = temp; | ||
149 | + lsaHeader = createLsaHeader(); | ||
150 | + routerLsa = new RouterLsa(lsaHeader); | ||
151 | + channelBuffer = ChannelBuffers.copiedBuffer(inputArray); | ||
152 | + routerLsa.readFrom(channelBuffer); | ||
153 | + assertThat(routerLsa, is(notNullValue())); | ||
154 | + } | ||
155 | + | ||
156 | + /** | ||
157 | + * Tests asBytes() method. | ||
158 | + */ | ||
159 | + @Test | ||
160 | + public void testAsBytes() throws Exception { | ||
161 | + result2 = routerLsa.asBytes(); | ||
162 | + assertThat(result2, is(notNullValue())); | ||
163 | + } | ||
164 | + | ||
165 | + /** | ||
166 | + * Tests getLsaBodyAsByteArray() method. | ||
167 | + */ | ||
168 | + @Test | ||
169 | + public void testGetLsaBodyAsByteArray() throws Exception { | ||
170 | + routerLsa.setAreaBorderRouter(true); | ||
171 | + routerLsa.setVirtualEndPoint(true); | ||
172 | + routerLsa.setAreaBorderRouter(true); | ||
173 | + ospflsaLink = createOspfLsaLink(); | ||
174 | + routerLsa.addRouterLink(ospflsaLink); | ||
175 | + result2 = routerLsa.getLsaBodyAsByteArray(); | ||
176 | + assertThat(result2, is(notNullValue())); | ||
177 | + } | ||
178 | + | ||
179 | + /** | ||
180 | + * Tests getOspfLsaType() getter method. | ||
181 | + */ | ||
182 | + @Test | ||
183 | + public void testGetOspfLsaType() throws Exception { | ||
184 | + routerLsa.setLsType(1); | ||
185 | + result3 = routerLsa.getOspfLsaType(); | ||
186 | + assertThat(result3, is(OspfLsaType.ROUTER)); | ||
187 | + } | ||
188 | + | ||
189 | + /** | ||
190 | + * Tests incrementLinkNo() method. | ||
191 | + */ | ||
192 | + @Test | ||
193 | + public void testIncrementLinkNo() throws Exception { | ||
194 | + routerLsa.setNoLink(1); | ||
195 | + routerLsa.incrementLinkNo(); | ||
196 | + assertThat(routerLsa.noLink(), is(2)); | ||
197 | + } | ||
198 | + | ||
199 | + /** | ||
200 | + * Tests lsaHeader() method. | ||
201 | + */ | ||
202 | + @Test | ||
203 | + public void testGetLsaHeader() throws Exception { | ||
204 | + lsaHeader = (LsaHeader) routerLsa.lsaHeader(); | ||
205 | + assertThat(lsaHeader, instanceOf(RouterLsa.class)); | ||
206 | + } | ||
207 | + | ||
208 | + /** | ||
209 | + * Tests to string method. | ||
210 | + */ | ||
211 | + @Test | ||
212 | + public void testToString() throws Exception { | ||
213 | + assertThat(routerLsa.toString(), is(notNullValue())); | ||
214 | + | ||
215 | + } | ||
216 | + | ||
217 | + /** | ||
218 | + * Utility method used by junit methods. | ||
219 | + */ | ||
220 | + private OspfLsaLink createOspfLsaLink() { | ||
221 | + ospflsaLink = new OspfLsaLink(); | ||
222 | + ospflsaLink.setLinkId("10.226.165.164"); | ||
223 | + ospflsaLink.setMetric(10); | ||
224 | + ospflsaLink.setTos(50); | ||
225 | + ospflsaLink.setLinkType(2); | ||
226 | + ospflsaLink.setLinkData("10.226.165.170"); | ||
227 | + return ospflsaLink; | ||
228 | + } | ||
229 | + | ||
230 | + /** | ||
231 | + * Utility method used by junit methods. | ||
232 | + */ | ||
233 | + private byte[] createByteForRouterLsa() { | ||
234 | + byte[] packet = {2, 1, 1, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, -64, | ||
235 | + -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, | ||
236 | + 1}; | ||
237 | + return packet; | ||
238 | + } | ||
239 | + | ||
240 | + /** | ||
241 | + * Utility method used by junit methods. | ||
242 | + */ | ||
243 | + private LsaHeader createLsaHeader() { | ||
244 | + lsaHeader = new LsaHeader(); | ||
245 | + lsaHeader.setLsType(1); | ||
246 | + lsaHeader.setLsPacketLen(48); | ||
247 | + lsaHeader.setLsCheckSum(10); | ||
248 | + lsaHeader.setAge(4); | ||
249 | + lsaHeader.setLinkStateId("10.226.165.164"); | ||
250 | + lsaHeader.setLsSequenceNo(250); | ||
251 | + lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); | ||
252 | + lsaHeader.setOptions(2); | ||
253 | + return lsaHeader; | ||
254 | + } | ||
255 | + | ||
256 | + /** | ||
257 | + * Tests hashcode() method. | ||
258 | + */ | ||
259 | + @Test | ||
260 | + public void testHashcode() throws Exception { | ||
261 | + | ||
262 | + result1 = routerLsa.hashCode(); | ||
263 | + assertThat(result1, is(notNullValue())); | ||
264 | + | ||
265 | + } | ||
266 | +} |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.ospf.protocol.ospfpacket; | ||
17 | + | ||
18 | +import org.jboss.netty.buffer.ChannelBuffer; | ||
19 | +import org.jboss.netty.buffer.ChannelBuffers; | ||
20 | +import org.junit.After; | ||
21 | +import org.junit.Before; | ||
22 | +import org.junit.Test; | ||
23 | + | ||
24 | +import static org.hamcrest.CoreMatchers.is; | ||
25 | +import static org.hamcrest.CoreMatchers.notNullValue; | ||
26 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
27 | + | ||
28 | +/** | ||
29 | + * Unit test class for OspfMessageReader. | ||
30 | + */ | ||
31 | + | ||
32 | +public class OspfMessageReaderTest { | ||
33 | + | ||
34 | + private final byte[] packet1 = {1, 1, 1, 1, 2, 1, 0, 44, -64, -88, -86, 8, | ||
35 | + 0, 0, 0, 1, 39, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, | ||
36 | + 10, 2, 1, 0, 0, 0, 40, -64, -88, -86, 8, 0, 0, 0, 0}; | ||
37 | + private final byte[] packet2 = {1, 1, 1, 1, 2, 2, 0, 52, -64, -88, -86, 8, 0, | ||
38 | + 0, 0, 1, -96, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119, | ||
39 | + -87, 126, 0, 23, 2, 1, 10, 10, 10, 10, 10, 10, 10, 10, -128, 0, 0, 6, | ||
40 | + -69, 26, 0, 36}; | ||
41 | + private final byte[] packet3 = {1, 1, 1, 1, 2, 3, 0, 36, -64, -88, -86, 3, 0, | ||
42 | + 0, 0, 1, -67, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88, | ||
43 | + -86, 8, -64, -88, -86, 8}; | ||
44 | + private final byte[] packet4 = {1, 1, 1, 1, 2, 4, 1, 36, -64, -88, -86, 3, 0, | ||
45 | + 0, 0, 1, 54, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, | ||
46 | + 2, 2, 1, -64, -88, -86, 3, -64, -88, -86, 3, -128, 0 | ||
47 | + , 0, 1, 58, -100, 0, 48, 2, 0, 0, 2, -64, -88, -86 | ||
48 | + , 0, -1, -1, -1, 0, 3, 0, 0, 10, -64, -88, -86, 0, | ||
49 | + -1, -1, -1, 0, 3, 0, 0, 10, 0, 3, 2, 5, 80, -44, | ||
50 | + 16, 0, -64, -88, -86, 2, -128, 0, 0, 1, 42, 73, 0, | ||
51 | + 36, -1, -1, -1, -1, -128, 0, 0, 20, 0, 0, 0, 0, 0, | ||
52 | + 0, 0, 0, 0, 3, 2, 5, -108, 121, -85, 0, -64, -88, | ||
53 | + -86, 2, -128, 0, 0, 1, 52, -91, 0, 36, -1, -1, -1, | ||
54 | + 0, -128, 0, 0, 20, -64, -88, -86, 1, 0, 0, 0, 0, 0, | ||
55 | + 3, 2, 5, -64, -126, 120, 0, -64, -88, -86, 2, -128, 0, | ||
56 | + 0, 1, -45, 25, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, | ||
57 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, 0, 0, | ||
58 | + -64, -88, -86, 2, -128, 0, 0, 1, 55, 8, 0, 36, -1, -1 | ||
59 | + , -1, 0, -128, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
60 | + 3, 2, 5, -64, -88, 1, 0, -64, -88, -86, 2, -128, 0, 0, | ||
61 | + 1, 44, 18, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, 0, 0, | ||
62 | + 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, -84, 0, -64, | ||
63 | + -88, -86, 2, -128, 0, 0, 1, 51, 65, 0, 36, -1, -1, -1, 0, | ||
64 | + -128, 0, 0, 20, -64, -88, -86, 10, 0, 0, 0, 0}; | ||
65 | + private final byte[] packet5 = {1, 1, 1, 1, 2, 5, 0, 44, -64, -88, -86, 8, 0, 0, | ||
66 | + 0, 1, -30, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86, | ||
67 | + 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48}; | ||
68 | + private OspfMessageReader ospfMessageReader; | ||
69 | + private ChannelBuffer channelBuffer; | ||
70 | + | ||
71 | + @Before | ||
72 | + public void setUp() throws Exception { | ||
73 | + ospfMessageReader = new OspfMessageReader(); | ||
74 | + } | ||
75 | + | ||
76 | + @After | ||
77 | + public void tearDown() throws Exception { | ||
78 | + ospfMessageReader = null; | ||
79 | + channelBuffer = null; | ||
80 | + } | ||
81 | + | ||
82 | + /** | ||
83 | + * Tests readFromBuffer() method. | ||
84 | + */ | ||
85 | + @Test | ||
86 | + public void testReadFromBuffer() throws Exception { | ||
87 | + channelBuffer = ChannelBuffers.copiedBuffer(packet1); | ||
88 | + ospfMessageReader.readFromBuffer(channelBuffer); | ||
89 | + | ||
90 | + channelBuffer = ChannelBuffers.copiedBuffer(packet2); | ||
91 | + ospfMessageReader.readFromBuffer(channelBuffer); | ||
92 | + | ||
93 | + channelBuffer = ChannelBuffers.copiedBuffer(packet3); | ||
94 | + ospfMessageReader.readFromBuffer(channelBuffer); | ||
95 | + | ||
96 | + channelBuffer = ChannelBuffers.copiedBuffer(packet4); | ||
97 | + ospfMessageReader.readFromBuffer(channelBuffer); | ||
98 | + | ||
99 | + channelBuffer = ChannelBuffers.copiedBuffer(packet5); | ||
100 | + ospfMessageReader.readFromBuffer(channelBuffer); | ||
101 | + assertThat(ospfMessageReader, is(notNullValue())); | ||
102 | + | ||
103 | + } | ||
104 | +} |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.ospf.protocol.ospfpacket; | ||
17 | + | ||
18 | +import org.junit.After; | ||
19 | +import org.junit.Before; | ||
20 | +import org.junit.Test; | ||
21 | +import org.onlab.packet.Ip4Address; | ||
22 | +import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket; | ||
23 | +import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket; | ||
24 | +import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge; | ||
25 | +import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest; | ||
26 | +import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate; | ||
27 | + | ||
28 | +import static org.hamcrest.CoreMatchers.is; | ||
29 | +import static org.hamcrest.CoreMatchers.notNullValue; | ||
30 | +import static org.junit.Assert.assertThat; | ||
31 | + | ||
32 | +/** | ||
33 | + * Unit test class for OspfMessageWriter. | ||
34 | + */ | ||
35 | +public class OspfMessageWriterTest { | ||
36 | + | ||
37 | + private OspfMessageWriter ospfMessageWriter; | ||
38 | + private HelloPacket helloPacket; | ||
39 | + private DdPacket ddPacket; | ||
40 | + private LsAcknowledge lsAck; | ||
41 | + private LsRequest lsReq; | ||
42 | + private LsUpdate lsUpdate; | ||
43 | + | ||
44 | + @Before | ||
45 | + public void setUp() throws Exception { | ||
46 | + ospfMessageWriter = new OspfMessageWriter(); | ||
47 | + } | ||
48 | + | ||
49 | + @After | ||
50 | + public void tearDown() throws Exception { | ||
51 | + ospfMessageWriter = null; | ||
52 | + helloPacket = null; | ||
53 | + ddPacket = null; | ||
54 | + lsAck = null; | ||
55 | + lsReq = null; | ||
56 | + lsUpdate = null; | ||
57 | + } | ||
58 | + | ||
59 | + /** | ||
60 | + * Tests writeToBuffer() method. | ||
61 | + */ | ||
62 | + @Test | ||
63 | + public void testWriteToBuffer() throws Exception { | ||
64 | + helloPacket = new HelloPacket(); | ||
65 | + helloPacket.setAuthType(1); | ||
66 | + helloPacket.setOspftype(1); | ||
67 | + helloPacket.setRouterId(Ip4Address.valueOf("10.226.165.164")); | ||
68 | + helloPacket.setAreaId(Ip4Address.valueOf("10.226.165.100")); | ||
69 | + helloPacket.setChecksum(201); | ||
70 | + helloPacket.setAuthentication(2); | ||
71 | + helloPacket.setOspfPacLength(48); | ||
72 | + helloPacket.setOspfVer(2); | ||
73 | + helloPacket.setNetworkMask(Ip4Address.valueOf("255.255.255.255")); | ||
74 | + helloPacket.setOptions(2); //not setting now | ||
75 | + helloPacket.setHelloInterval(10); | ||
76 | + helloPacket.setRouterPriority(1); | ||
77 | + helloPacket.setRouterDeadInterval(40); | ||
78 | + helloPacket.setDr(Ip4Address.valueOf("1.1.1.1")); | ||
79 | + helloPacket.setBdr(Ip4Address.valueOf("2.2.2.2")); | ||
80 | + helloPacket.addNeighbor(Ip4Address.valueOf("8.8.8.8")); | ||
81 | + helloPacket.setDestinationIp(Ip4Address.valueOf("5.5.5.5")); | ||
82 | + ospfMessageWriter.writeToBuffer(helloPacket, 7, 1); | ||
83 | + assertThat(ospfMessageWriter, is(notNullValue())); | ||
84 | + } | ||
85 | + | ||
86 | + @Test(expected = Exception.class) | ||
87 | + public void testWriteToBuffer1() throws Exception { | ||
88 | + | ||
89 | + ddPacket = new DdPacket(); | ||
90 | + ddPacket.setAuthType(1); | ||
91 | + ddPacket.setOspftype(2); | ||
92 | + ddPacket.setRouterId(Ip4Address.valueOf("10.226.165.164")); | ||
93 | + ddPacket.setAreaId(Ip4Address.valueOf("10.226.165.100")); | ||
94 | + ddPacket.setChecksum(201); | ||
95 | + ddPacket.setAuthentication(2); | ||
96 | + ddPacket.setOspfPacLength(48); | ||
97 | + ddPacket.setOspfVer(2); | ||
98 | + ospfMessageWriter.writeToBuffer(ddPacket, 1, 1); | ||
99 | + assertThat(ospfMessageWriter, is(notNullValue())); | ||
100 | + } | ||
101 | + | ||
102 | + @Test(expected = Exception.class) | ||
103 | + public void testWriteToBuffer2() throws Exception { | ||
104 | + | ||
105 | + lsAck = new LsAcknowledge(); | ||
106 | + lsAck.setAuthType(1); | ||
107 | + lsAck.setOspftype(5); | ||
108 | + lsAck.setRouterId(Ip4Address.valueOf("10.226.165.164")); | ||
109 | + lsAck.setAreaId(Ip4Address.valueOf("10.226.165.100")); | ||
110 | + lsAck.setChecksum(201); | ||
111 | + lsAck.setAuthentication(2); | ||
112 | + lsAck.setOspfPacLength(48); | ||
113 | + lsAck.setOspfVer(2); | ||
114 | + ospfMessageWriter.writeToBuffer(lsAck, 1, 1); | ||
115 | + assertThat(ospfMessageWriter, is(notNullValue())); | ||
116 | + } | ||
117 | + | ||
118 | + @Test(expected = Exception.class) | ||
119 | + public void testWriteToBuffer3() throws Exception { | ||
120 | + lsReq = new LsRequest(); | ||
121 | + lsReq.setAuthType(1); | ||
122 | + lsReq.setOspftype(3); | ||
123 | + lsReq.setRouterId(Ip4Address.valueOf("10.226.165.164")); | ||
124 | + lsReq.setAreaId(Ip4Address.valueOf("10.226.165.100")); | ||
125 | + lsReq.setChecksum(201); | ||
126 | + lsReq.setAuthentication(2); | ||
127 | + lsReq.setOspfPacLength(48); | ||
128 | + lsReq.setOspfVer(2); | ||
129 | + ospfMessageWriter.writeToBuffer(lsReq, 1, 1); | ||
130 | + assertThat(ospfMessageWriter, is(notNullValue())); | ||
131 | + } | ||
132 | + | ||
133 | + @Test(expected = Exception.class) | ||
134 | + public void testWriteToBuffer4() throws Exception { | ||
135 | + lsUpdate = new LsUpdate(); | ||
136 | + lsUpdate.setAuthType(1); | ||
137 | + lsUpdate.setOspftype(3); | ||
138 | + lsUpdate.setRouterId(Ip4Address.valueOf("10.226.165.164")); | ||
139 | + lsUpdate.setAreaId(Ip4Address.valueOf("10.226.165.100")); | ||
140 | + lsUpdate.setChecksum(201); | ||
141 | + lsUpdate.setAuthentication(2); | ||
142 | + lsUpdate.setOspfPacLength(48); | ||
143 | + lsUpdate.setOspfVer(2); | ||
144 | + ospfMessageWriter.writeToBuffer(lsUpdate, 1, 1); | ||
145 | + assertThat(ospfMessageWriter, is(notNullValue())); | ||
146 | + } | ||
147 | + | ||
148 | + /** | ||
149 | + * Tests writeToBuffer() method. | ||
150 | + */ | ||
151 | + @Test(expected = Exception.class) | ||
152 | + public void testWriteToBuffer5() throws Exception { | ||
153 | + lsAck = new LsAcknowledge(); | ||
154 | + lsAck.setAuthType(1); | ||
155 | + lsAck.setOspftype(5); | ||
156 | + lsAck.setRouterId(Ip4Address.valueOf("10.226.165.164")); | ||
157 | + lsAck.setAreaId(Ip4Address.valueOf("10.226.165.100")); | ||
158 | + lsAck.setChecksum(201); | ||
159 | + lsAck.setAuthentication(2); | ||
160 | + lsAck.setOspfPacLength(48); | ||
161 | + lsAck.setOspfVer(2); | ||
162 | + ospfMessageWriter.writeToBuffer(lsAck, 1, 1); | ||
163 | + } | ||
164 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
This diff is collapsed. Click to expand it.
protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/ChecksumCalculatorTest.java
0 → 100644
This diff is collapsed. Click to expand it.
-
Please register or login to post a comment