diff options
author | CNlucius <lukai1@huawei.com> | 2016-09-13 11:40:12 +0800 |
---|---|---|
committer | CNlucius <lukai1@huawei.com> | 2016-09-13 11:41:53 +0800 |
commit | b731e2f1dd0972409b136aebc7b463dd72c9cfad (patch) | |
tree | 5107d7d80c19ad8076c2c97c2b5ef8d1cf3ab903 /framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6 | |
parent | ee93993458266114c29271a481ef9ce7ce621b2a (diff) |
ONOSFW-171
O/S-SFC-ONOS scenario documentation
Change-Id: I51ae1cf736ea24ab6680f8edca1b2bf5dd598365
Signed-off-by: CNlucius <lukai1@huawei.com>
Diffstat (limited to 'framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6')
9 files changed, 0 insertions, 1407 deletions
diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/Authentication.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/Authentication.java deleted file mode 100644 index ec04a812..00000000 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/Authentication.java +++ /dev/null @@ -1,300 +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.onlab.packet.ipv6; - -import org.onlab.packet.BasePacket; -import org.onlab.packet.Data; -import org.onlab.packet.DeserializationException; -import org.onlab.packet.Deserializer; -import org.onlab.packet.IPacket; -import org.onlab.packet.IPv6; - -import java.nio.ByteBuffer; -import java.util.Arrays; - -import static org.onlab.packet.PacketUtils.checkInput; - -/** - * Implements IPv6 authentication extension header format. (RFC 4302) - */ -public class Authentication extends BasePacket implements IExtensionHeader { - public static final byte FIXED_HEADER_LENGTH = 12; // bytes - public static final byte LENGTH_UNIT = 4; // bytes per unit - public static final byte MINUS = 2; - - protected byte nextHeader; - protected byte payloadLength; - protected int securityParamIndex; - protected int sequence; - protected byte[] integrityCheck; - - @Override - public byte getNextHeader() { - return this.nextHeader; - } - - @Override - public Authentication setNextHeader(final byte nextHeader) { - this.nextHeader = nextHeader; - return this; - } - - /** - * Gets the payload length of this header. - * - * @return the payload length - */ - public byte getPayloadLength() { - return this.payloadLength; - } - - /** - * Sets the payload length of this header. - * - * @param payloadLength the payload length to set - * @return this - */ - public Authentication setPayloadLength(final byte payloadLength) { - this.payloadLength = payloadLength; - return this; - } - - /** - * Gets the security parameter index of this header. - * - * @return the security parameter index - */ - public int getSecurityParamIndex() { - return this.securityParamIndex; - } - - /** - * Sets the security parameter index of this header. - * - * @param securityParamIndex the security parameter index to set - * @return this - */ - public Authentication setSecurityParamIndex(final int securityParamIndex) { - this.securityParamIndex = securityParamIndex; - return this; - } - - /** - * Gets the sequence number of this header. - * - * @return the sequence number - */ - public int getSequence() { - return this.sequence; - } - - /** - * Sets the sequence number of this header. - * - * @param sequence the sequence number to set - * @return this - */ - public Authentication setSequence(final int sequence) { - this.sequence = sequence; - return this; - } - - /** - * Gets the integrity check value of this header. - * - * @return the integrity check value - */ - public byte[] getIntegrityCheck() { - return this.integrityCheck; - } - - /** - * Sets the integrity check value of this header. - * - * @param integrityCheck the integrity check value to set - * @return this - */ - public Authentication setIngegrityCheck(final byte[] integrityCheck) { - this.integrityCheck = - Arrays.copyOfRange(integrityCheck, 0, integrityCheck.length); - return this; - } - - /** - * Gets the total length of this header. - * According to spec, payload length should be the total length of this AH - * in 4-octet unit, minus 2 - * - * @return the total length - */ - public int getTotalLength() { - return (this.payloadLength + MINUS) * LENGTH_UNIT; - } - - @Override - public byte[] serialize() { - byte[] payloadData = null; - if (this.payload != null) { - this.payload.setParent(this); - payloadData = this.payload.serialize(); - } - - int headerLength = FIXED_HEADER_LENGTH + integrityCheck.length; - int payloadLength = 0; - if (payloadData != null) { - payloadLength = payloadData.length; - } - - final byte[] data = new byte[headerLength + payloadLength]; - final ByteBuffer bb = ByteBuffer.wrap(data); - - bb.put(this.nextHeader); - bb.put(this.payloadLength); - bb.putShort((short) 0); - bb.putInt(this.securityParamIndex); - bb.putInt(this.sequence); - bb.put(this.integrityCheck, 0, integrityCheck.length); - - if (payloadData != null) { - bb.put(payloadData); - } - - if (this.parent != null && this.parent instanceof IExtensionHeader) { - ((IExtensionHeader) this.parent).setNextHeader(IPv6.PROTOCOL_AH); - } - return data; - } - - @Override - public IPacket deserialize(byte[] data, int offset, int length) { - final ByteBuffer bb = ByteBuffer.wrap(data, offset, length); - this.nextHeader = bb.get(); - this.payloadLength = bb.get(); - bb.getShort(); - this.securityParamIndex = bb.getInt(); - this.sequence = bb.getInt(); - int icvLength = getTotalLength() - FIXED_HEADER_LENGTH; - this.integrityCheck = new byte[icvLength]; - bb.get(this.integrityCheck, 0, icvLength); - - Deserializer<? extends IPacket> deserializer; - if (IPv6.PROTOCOL_DESERIALIZER_MAP.containsKey(this.nextHeader)) { - deserializer = IPv6.PROTOCOL_DESERIALIZER_MAP.get(this.nextHeader); - } else { - deserializer = Data.deserializer(); - } - - try { - this.payload = deserializer.deserialize(data, bb.position(), - bb.limit() - bb.position()); - this.payload.setParent(this); - } catch (DeserializationException e) { - return this; - } - - return this; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 5807; - int result = super.hashCode(); - result = prime * result + this.nextHeader; - result = prime * result + this.payloadLength; - result = prime * result + this.securityParamIndex; - result = prime * result + this.sequence; - for (byte b : this.integrityCheck) { - result = prime * result + b; - } - return result; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof Authentication)) { - return false; - } - final Authentication other = (Authentication) obj; - if (this.nextHeader != other.nextHeader) { - return false; - } - if (this.payloadLength != other.payloadLength) { - return false; - } - if (this.securityParamIndex != other.securityParamIndex) { - return false; - } - if (this.sequence != other.sequence) { - return false; - } - if (!Arrays.equals(this.integrityCheck, other.integrityCheck)) { - return false; - } - return true; - } - - /** - * Deserializer function for authentication headers. - * - * @return deserializer function - */ - public static Deserializer<Authentication> deserializer() { - return (data, offset, length) -> { - checkInput(data, offset, length, FIXED_HEADER_LENGTH); - - Authentication authentication = new Authentication(); - - ByteBuffer bb = ByteBuffer.wrap(data, offset, length); - authentication.nextHeader = bb.get(); - authentication.payloadLength = bb.get(); - bb.getShort(); - authentication.securityParamIndex = bb.getInt(); - authentication.sequence = bb.getInt(); - int icvLength = (authentication.payloadLength + MINUS) * LENGTH_UNIT - FIXED_HEADER_LENGTH; - authentication.integrityCheck = new byte[icvLength]; - bb.get(authentication.integrityCheck, 0, icvLength); - - Deserializer<? extends IPacket> deserializer; - if (IPv6.PROTOCOL_DESERIALIZER_MAP.containsKey(authentication.nextHeader)) { - deserializer = IPv6.PROTOCOL_DESERIALIZER_MAP.get(authentication.nextHeader); - } else { - deserializer = Data.deserializer(); - } - authentication.payload = deserializer.deserialize(data, bb.position(), - bb.limit() - bb.position()); - authentication.payload.setParent(authentication); - - return authentication; - }; - } -} diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/BaseOptions.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/BaseOptions.java deleted file mode 100644 index f57b756e..00000000 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/BaseOptions.java +++ /dev/null @@ -1,260 +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.onlab.packet.ipv6; - -import org.onlab.packet.BasePacket; -import org.onlab.packet.Data; -import org.onlab.packet.DeserializationException; -import org.onlab.packet.Deserializer; -import org.onlab.packet.IPacket; -import org.onlab.packet.IPv6; - -import java.nio.ByteBuffer; -import java.util.Arrays; - -import static org.onlab.packet.PacketUtils.checkHeaderLength; -import static org.onlab.packet.PacketUtils.checkInput; - -/** - * Base class for hop-by-hop options and destination options. - */ -public class BaseOptions extends BasePacket implements IExtensionHeader { - public static final byte FIXED_HEADER_LENGTH = 2; // bytes - public static final byte FIXED_OPTIONS_LENGTH = 6; // bytes - public static final byte LENGTH_UNIT = 8; // bytes per unit - - protected byte nextHeader; - protected byte headerExtLength; - protected byte[] options; - protected byte type; - - @Override - public byte getNextHeader() { - return this.nextHeader; - } - - @Override - public BaseOptions setNextHeader(final byte nextHeader) { - this.nextHeader = nextHeader; - return this; - } - - /** - * Gets the extension length of this header. - * - * @return header length - */ - public byte getHeaderExtLength() { - return this.headerExtLength; - } - - /** - * Sets the extension length of this header. - * - * @param headerExtLength the header length to set - * @return this - */ - public BaseOptions setHeaderExtLength(final byte headerExtLength) { - this.headerExtLength = headerExtLength; - return this; - } - - /** - * Gets the options. - * - * @return the options - */ - public byte[] getOptions() { - return this.options; - } - - /** - * Sets the options. - * - * @param options the options to set - * @return this - */ - public BaseOptions setOptions(final byte[] options) { - this.options = - Arrays.copyOfRange(options, 0, options.length); - return this; - } - - /** - * Gets the type of this option. - * - * @return the type - */ - protected byte getType() { - return this.type; - } - - /** - * Sets the type of this option. - * Must be either IPv6.PROTOCOL_HOPOPT or IPv6.PROTOCOL_DSTOPT - * - * @param type the type to set - * @return this - */ - protected BaseOptions setType(final byte type) { - this.type = type; - return this; - } - - @Override - public byte[] serialize() { - byte[] payloadData = null; - if (this.payload != null) { - this.payload.setParent(this); - payloadData = this.payload.serialize(); - } - - int headerLength = FIXED_HEADER_LENGTH + options.length; - int payloadLength = 0; - if (payloadData != null) { - payloadLength = payloadData.length; - } - - final byte[] data = new byte[headerLength + payloadLength]; - final ByteBuffer bb = ByteBuffer.wrap(data); - - bb.put(this.nextHeader); - bb.put(this.headerExtLength); - bb.put(this.options, 0, options.length); - - if (payloadData != null) { - bb.put(payloadData); - } - - if (this.parent != null && this.parent instanceof IExtensionHeader) { - ((IExtensionHeader) this.parent).setNextHeader(this.type); - } - return data; - } - - @Override - public IPacket deserialize(byte[] data, int offset, int length) { - final ByteBuffer bb = ByteBuffer.wrap(data, offset, length); - this.nextHeader = bb.get(); - this.headerExtLength = bb.get(); - int optionLength = - FIXED_OPTIONS_LENGTH + LENGTH_UNIT * this.headerExtLength; - this.options = new byte[optionLength]; - bb.get(this.options, 0, optionLength); - - Deserializer<? extends IPacket> deserializer; - if (IPv6.PROTOCOL_DESERIALIZER_MAP.containsKey(this.nextHeader)) { - deserializer = IPv6.PROTOCOL_DESERIALIZER_MAP.get(this.nextHeader); - } else { - deserializer = Data.deserializer(); - } - try { - this.payload = deserializer.deserialize(data, bb.position(), - bb.limit() - bb.position()); - this.payload.setParent(this); - } catch (DeserializationException e) { - return this; - } - - return this; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 5807; - int result = super.hashCode(); - result = prime * result + this.nextHeader; - result = prime * result + this.headerExtLength; - for (byte b : this.options) { - result = prime * result + b; - } - return result; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof BaseOptions)) { - return false; - } - final BaseOptions other = (BaseOptions) obj; - if (this.nextHeader != other.nextHeader) { - return false; - } - if (this.headerExtLength != other.headerExtLength) { - return false; - } - if (!Arrays.equals(this.options, other.options)) { - return false; - } - if (this.type != other.type) { - return false; - } - return true; - } - - /** - * Deserializer function for IPv6 base options. - * - * @return deserializer function - */ - public static Deserializer<BaseOptions> deserializer() { - return (data, offset, length) -> { - checkInput(data, offset, length, FIXED_HEADER_LENGTH); - - BaseOptions baseOptions = new BaseOptions(); - - ByteBuffer bb = ByteBuffer.wrap(data, offset, length); - baseOptions.nextHeader = bb.get(); - baseOptions.headerExtLength = bb.get(); - int optionLength = - FIXED_OPTIONS_LENGTH + LENGTH_UNIT * baseOptions.headerExtLength; - - checkHeaderLength(bb.remaining(), optionLength); - - baseOptions.options = new byte[optionLength]; - bb.get(baseOptions.options, 0, optionLength); - - Deserializer<? extends IPacket> deserializer; - if (IPv6.PROTOCOL_DESERIALIZER_MAP.containsKey(baseOptions.nextHeader)) { - deserializer = IPv6.PROTOCOL_DESERIALIZER_MAP.get(baseOptions.nextHeader); - } else { - deserializer = Data.deserializer(); - } - baseOptions.payload = deserializer.deserialize(data, bb.position(), - bb.limit() - bb.position()); - baseOptions.payload.setParent(baseOptions); - - return baseOptions; - }; - } -} diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/DestinationOptions.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/DestinationOptions.java deleted file mode 100644 index 208bdd7e..00000000 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/DestinationOptions.java +++ /dev/null @@ -1,29 +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.onlab.packet.ipv6; - -import org.onlab.packet.IPv6; - -/** - * Implements IPv6 Destination Options extension header format. (RFC 2460) - */ -public class DestinationOptions extends BaseOptions { - public DestinationOptions() { - super(); - this.setType(IPv6.PROTOCOL_DSTOPT); - } -}
\ No newline at end of file diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/EncapSecurityPayload.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/EncapSecurityPayload.java deleted file mode 100644 index e46a1261..00000000 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/EncapSecurityPayload.java +++ /dev/null @@ -1,188 +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.onlab.packet.ipv6; - -import org.onlab.packet.BasePacket; -import org.onlab.packet.Data; -import org.onlab.packet.Deserializer; -import org.onlab.packet.IPacket; -import org.onlab.packet.IPv6; - -import java.nio.ByteBuffer; - -import static org.onlab.packet.PacketUtils.checkInput; - -/** - * Implements IPv6 Encapsulating Security Payload (ESP) extension header format. - * (RFC 4303) - */ -public class EncapSecurityPayload extends BasePacket { - public static final byte HEADER_LENGTH = 8; // bytes - - protected int securityParamIndex; - protected int sequence; - // - // NOTE: The remaining fields including payload data, padding length and - // next header are encrypted and all considered as a payload of ESP. - // - - /** - * Gets the security parameter index of this header. - * - * @return the security parameter index - */ - public int getSecurityParamIndex() { - return this.securityParamIndex; - } - - /** - * Sets the security parameter index of this header. - * - * @param securityParamIndex the security parameter index to set - * @return this - */ - public EncapSecurityPayload setSecurityParamIndex(final int securityParamIndex) { - this.securityParamIndex = securityParamIndex; - return this; - } - - /** - * Gets the sequence number of this header. - * - * @return the sequence number - */ - public int getSequence() { - return this.sequence; - } - - /** - * Sets the sequence number of this header. - * - * @param sequence the sequence number to set - * @return this - */ - public EncapSecurityPayload setSequence(final int sequence) { - this.sequence = sequence; - return this; - } - - @Override - public byte[] serialize() { - byte[] payloadData = null; - if (this.payload != null) { - this.payload.setParent(this); - payloadData = this.payload.serialize(); - } - - int payloadLength = 0; - if (payloadData != null) { - payloadLength = payloadData.length; - } - - final byte[] data = new byte[HEADER_LENGTH + payloadLength]; - final ByteBuffer bb = ByteBuffer.wrap(data); - - bb.putInt(this.securityParamIndex); - bb.putInt(this.sequence); - - if (payloadData != null) { - bb.put(payloadData); - } - - if (this.parent != null && this.parent instanceof IExtensionHeader) { - ((IExtensionHeader) this.parent).setNextHeader(IPv6.PROTOCOL_ESP); - } - return data; - } - - @Override - public IPacket deserialize(byte[] data, int offset, int length) { - final ByteBuffer bb = ByteBuffer.wrap(data, offset, length); - this.securityParamIndex = bb.getInt(); - this.sequence = bb.getInt(); - - this.payload = new Data(); - this.payload.deserialize(data, bb.position(), - bb.limit() - bb.position()); - this.payload.setParent(this); - - return this; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 5807; - int result = super.hashCode(); - result = prime * result + this.securityParamIndex; - result = prime * result + this.sequence; - return result; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof EncapSecurityPayload)) { - return false; - } - final EncapSecurityPayload other = (EncapSecurityPayload) obj; - if (this.securityParamIndex != other.securityParamIndex) { - return false; - } - if (this.sequence != other.sequence) { - return false; - } - return true; - } - - /** - * Deserializer function for encapsulated security payload headers. - * - * @return deserializer function - */ - public static Deserializer<EncapSecurityPayload> deserializer() { - return (data, offset, length) -> { - checkInput(data, offset, length, HEADER_LENGTH); - - EncapSecurityPayload encapSecurityPayload = new EncapSecurityPayload(); - - ByteBuffer bb = ByteBuffer.wrap(data, offset, length); - encapSecurityPayload.securityParamIndex = bb.getInt(); - encapSecurityPayload.sequence = bb.getInt(); - - encapSecurityPayload.payload = Data.deserializer().deserialize( - data, bb.position(), bb.limit() - bb.position()); - encapSecurityPayload.payload.setParent(encapSecurityPayload); - - return encapSecurityPayload; - }; - } -} diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/Fragment.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/Fragment.java deleted file mode 100644 index 68015d31..00000000 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/Fragment.java +++ /dev/null @@ -1,253 +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.onlab.packet.ipv6; - -import org.onlab.packet.BasePacket; -import org.onlab.packet.Data; -import org.onlab.packet.DeserializationException; -import org.onlab.packet.Deserializer; -import org.onlab.packet.IPacket; -import org.onlab.packet.IPv6; - -import java.nio.ByteBuffer; - -import static org.onlab.packet.PacketUtils.checkInput; - -/** - * Implements IPv6 fragment extension header format. (RFC 2460) - */ -public class Fragment extends BasePacket implements IExtensionHeader { - public static final byte HEADER_LENGTH = 8; // bytes - - protected byte nextHeader; - protected short fragmentOffset; - protected byte moreFragment; - protected int identification; - - @Override - public byte getNextHeader() { - return this.nextHeader; - } - - @Override - public Fragment setNextHeader(final byte nextHeader) { - this.nextHeader = nextHeader; - return this; - } - - /** - * Gets the fragment offset of this header. - * - * @return fragment offset - */ - public short getFragmentOffset() { - return this.fragmentOffset; - } - - /** - * Sets the fragment offset of this header. - * - * @param fragmentOffset the fragment offset to set - * @return this - */ - public Fragment setFragmentOffset(final short fragmentOffset) { - this.fragmentOffset = fragmentOffset; - return this; - } - - /** - * Gets the more fragment flag of this header. - * - * @return more fragment flag - */ - public byte getMoreFragment() { - return this.moreFragment; - } - - /** - * Sets the more fragment flag of this header. - * - * @param moreFragment the more fragment flag to set - * @return this - */ - public Fragment setMoreFragment(final byte moreFragment) { - this.moreFragment = moreFragment; - return this; - } - - /** - * Gets the identification of this header. - * - * @return identification - */ - public int getIdentification() { - return this.identification; - } - - /** - * Sets the identification of this header. - * - * @param identification the identification to set - * @return this - */ - public Fragment setIdentification(final int identification) { - this.identification = identification; - return this; - } - - @Override - public byte[] serialize() { - byte[] payloadData = null; - if (this.payload != null) { - this.payload.setParent(this); - payloadData = this.payload.serialize(); - } - - int payloadLength = 0; - if (payloadData != null) { - payloadLength = payloadData.length; - } - - final byte[] data = new byte[HEADER_LENGTH + payloadLength]; - final ByteBuffer bb = ByteBuffer.wrap(data); - - bb.put(this.nextHeader); - bb.put((byte) 0); - bb.putShort((short) ( - (this.fragmentOffset & 0x1fff) << 3 | - this.moreFragment & 0x1 - )); - bb.putInt(this.identification); - - if (payloadData != null) { - bb.put(payloadData); - } - - if (this.parent != null && this.parent instanceof IExtensionHeader) { - ((IExtensionHeader) this.parent).setNextHeader(IPv6.PROTOCOL_FRAG); - } - return data; - } - - @Override - public IPacket deserialize(byte[] data, int offset, int length) { - final ByteBuffer bb = ByteBuffer.wrap(data, offset, length); - this.nextHeader = bb.get(); - bb.get(); - short sscratch = bb.getShort(); - this.fragmentOffset = (short) (sscratch >> 3 & 0x1fff); - this.moreFragment = (byte) (sscratch & 0x1); - this.identification = bb.getInt(); - - Deserializer<? extends IPacket> deserializer; - if (IPv6.PROTOCOL_DESERIALIZER_MAP.containsKey(this.nextHeader)) { - deserializer = IPv6.PROTOCOL_DESERIALIZER_MAP.get(this.nextHeader); - } else { - deserializer = Data.deserializer(); - } - try { - this.payload = deserializer.deserialize(data, bb.position(), - bb.limit() - bb.position()); - this.payload.setParent(this); - } catch (DeserializationException e) { - return this; - } - - return this; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 5807; - int result = super.hashCode(); - result = prime * result + this.nextHeader; - result = prime * result + this.fragmentOffset; - result = prime * result + this.moreFragment; - result = prime * result + this.identification; - return result; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof Fragment)) { - return false; - } - final Fragment other = (Fragment) obj; - if (this.nextHeader != other.nextHeader) { - return false; - } - if (this.fragmentOffset != other.fragmentOffset) { - return false; - } - if (this.moreFragment != other.moreFragment) { - return false; - } - if (this.identification != other.identification) { - return false; - } - return true; - } - - /** - * Deserializer function for fragment headers. - * - * @return deserializer function - */ - public static Deserializer<Fragment> deserializer() { - return (data, offset, length) -> { - checkInput(data, offset, length, HEADER_LENGTH); - - Fragment fragment = new Fragment(); - - ByteBuffer bb = ByteBuffer.wrap(data, offset, length); - fragment.nextHeader = bb.get(); - bb.get(); - short sscratch = bb.getShort(); - fragment.fragmentOffset = (short) (sscratch >> 3 & 0x1fff); - fragment.moreFragment = (byte) (sscratch & 0x1); - fragment.identification = bb.getInt(); - - Deserializer<? extends IPacket> deserializer; - if (IPv6.PROTOCOL_DESERIALIZER_MAP.containsKey(fragment.nextHeader)) { - deserializer = IPv6.PROTOCOL_DESERIALIZER_MAP.get(fragment.nextHeader); - } else { - deserializer = Data.deserializer(); - } - fragment.payload = deserializer.deserialize(data, bb.position(), - bb.limit() - bb.position()); - fragment.payload.setParent(fragment); - - return fragment; - }; - } -} diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/HopByHopOptions.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/HopByHopOptions.java deleted file mode 100644 index cd8c141c..00000000 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/HopByHopOptions.java +++ /dev/null @@ -1,29 +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.onlab.packet.ipv6; - -import org.onlab.packet.IPv6; - -/** - * Implements IPv6 Hop-by-hop Options extension header format. (RFC 2460) - */ -public class HopByHopOptions extends BaseOptions { - public HopByHopOptions() { - super(); - this.setType(IPv6.PROTOCOL_HOPOPT); - } -}
\ No newline at end of file diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/IExtensionHeader.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/IExtensionHeader.java deleted file mode 100644 index 252f1a3c..00000000 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/IExtensionHeader.java +++ /dev/null @@ -1,37 +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.onlab.packet.ipv6; - -/** - * Interface for IPv6 extension header. - */ -public interface IExtensionHeader { - /** - * Gets the type of next header. - * - * @return next header - */ - byte getNextHeader(); - - /** - * Sets the type of next header. - * - * @param nextHeader the next header to set - * @return this - */ - IExtensionHeader setNextHeader(final byte nextHeader); -} diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/Routing.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/Routing.java deleted file mode 100644 index d7d204a9..00000000 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/Routing.java +++ /dev/null @@ -1,291 +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.onlab.packet.ipv6; - -import org.onlab.packet.BasePacket; -import org.onlab.packet.Data; -import org.onlab.packet.DeserializationException; -import org.onlab.packet.Deserializer; -import org.onlab.packet.IPacket; -import org.onlab.packet.IPv6; - -import java.nio.ByteBuffer; -import java.util.Arrays; - -import static org.onlab.packet.PacketUtils.checkHeaderLength; -import static org.onlab.packet.PacketUtils.checkInput; - -/** - * Implements IPv6 routing extension header format. (RFC 2460) - */ -public class Routing extends BasePacket implements IExtensionHeader { - public static final byte FIXED_HEADER_LENGTH = 4; // bytes - public static final byte FIXED_ROUTING_DATA_LENGTH = 4; // bytes - public static final byte LENGTH_UNIT = 8; // bytes per unit - - protected byte nextHeader; - protected byte headerExtLength; - protected byte routingType; - protected byte segmentsLeft; - protected byte[] routingData; - - @Override - public byte getNextHeader() { - return this.nextHeader; - } - - @Override - public Routing setNextHeader(final byte nextHeader) { - this.nextHeader = nextHeader; - return this; - } - - /** - * Gets the extension length of this header. - * - * @return header length - */ - public byte getHeaderExtLength() { - return this.headerExtLength; - } - - /** - * Sets the extension length of this header. - * - * @param headerExtLength the header length to set - * @return this - */ - public Routing setHeaderExtLength(final byte headerExtLength) { - this.headerExtLength = headerExtLength; - return this; - } - - /** - * Gets the routing type of this header. - * - * @return routing type - */ - public byte getRoutingType() { - return this.routingType; - } - - /** - * Sets the routing type of this header. - * - * @param routingType the routing type to set - * @return this - */ - public Routing setRoutingType(final byte routingType) { - this.routingType = routingType; - return this; - } - - /** - * Gets the number of remaining route segments of this header. - * - * @return number of remaining route segments - */ - public byte getSegmentsLeft() { - return this.segmentsLeft; - } - - /** - * Sets the number of remaining route segments of this header. - * - * @param segmentsLeft the number of remaining route segments to set - * @return this - */ - public Routing setSegmntsLeft(final byte segmentsLeft) { - this.segmentsLeft = segmentsLeft; - return this; - } - - /** - * Gets the routing data. - * - * @return the routing data - */ - public byte[] getRoutingData() { - return this.routingData; - } - - /** - * Sets the routing data. - * - * @param routingData the routing data to set - * @return this - */ - public Routing setRoutingData(final byte[] routingData) { - this.routingData = - Arrays.copyOfRange(routingData, 0, routingData.length); - return this; - } - - @Override - public byte[] serialize() { - byte[] payloadData = null; - if (this.payload != null) { - this.payload.setParent(this); - payloadData = this.payload.serialize(); - } - - int headerLength = FIXED_HEADER_LENGTH + routingData.length; - int payloadLength = 0; - if (payloadData != null) { - payloadLength = payloadData.length; - } - - final byte[] data = new byte[headerLength + payloadLength]; - final ByteBuffer bb = ByteBuffer.wrap(data); - - bb.put(this.nextHeader); - bb.put(this.headerExtLength); - bb.put(this.routingType); - bb.put(this.segmentsLeft); - bb.put(this.routingData, 0, routingData.length); - - if (payloadData != null) { - bb.put(payloadData); - } - - if (this.parent != null && this.parent instanceof IExtensionHeader) { - ((IExtensionHeader) this.parent).setNextHeader(IPv6.PROTOCOL_ROUTING); - } - return data; - } - - @Override - public IPacket deserialize(byte[] data, int offset, int length) { - final ByteBuffer bb = ByteBuffer.wrap(data, offset, length); - this.nextHeader = bb.get(); - this.headerExtLength = bb.get(); - this.routingType = bb.get(); - this.segmentsLeft = bb.get(); - int dataLength = - FIXED_ROUTING_DATA_LENGTH + LENGTH_UNIT * this.headerExtLength; - this.routingData = new byte[dataLength]; - bb.get(this.routingData, 0, dataLength); - - Deserializer<? extends IPacket> deserializer; - if (IPv6.PROTOCOL_DESERIALIZER_MAP.containsKey(this.nextHeader)) { - deserializer = IPv6.PROTOCOL_DESERIALIZER_MAP.get(this.nextHeader); - } else { - deserializer = new Data().deserializer(); - } - try { - this.payload = deserializer.deserialize(data, bb.position(), - bb.limit() - bb.position()); - this.payload.setParent(this); - } catch (DeserializationException e) { - return this; - } - - return this; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 5807; - int result = super.hashCode(); - result = prime * result + this.nextHeader; - result = prime * result + this.headerExtLength; - result = prime * result + this.routingType; - result = prime * result + this.segmentsLeft; - for (byte b : this.routingData) { - result = prime * result + b; - } - return result; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof Routing)) { - return false; - } - final Routing other = (Routing) obj; - if (this.nextHeader != other.nextHeader) { - return false; - } - if (this.headerExtLength != other.headerExtLength) { - return false; - } - if (this.routingType != other.routingType) { - return false; - } - if (this.segmentsLeft != other.segmentsLeft) { - return false; - } - if (!Arrays.equals(this.routingData, other.routingData)) { - return false; - } - return true; - } - - /** - * Deserializer function for routing headers. - * - * @return deserializer function - */ - public static Deserializer<Routing> deserializer() { - return (data, offset, length) -> { - checkInput(data, offset, length, FIXED_HEADER_LENGTH); - - Routing routing = new Routing(); - - ByteBuffer bb = ByteBuffer.wrap(data, offset, length); - routing.nextHeader = bb.get(); - routing.headerExtLength = bb.get(); - routing.routingType = bb.get(); - routing.segmentsLeft = bb.get(); - int dataLength = - FIXED_ROUTING_DATA_LENGTH + LENGTH_UNIT * routing.headerExtLength; - - checkHeaderLength(bb.remaining(), dataLength); - - routing.routingData = new byte[dataLength]; - bb.get(routing.routingData, 0, dataLength); - - Deserializer<? extends IPacket> deserializer; - if (IPv6.PROTOCOL_DESERIALIZER_MAP.containsKey(routing.nextHeader)) { - deserializer = IPv6.PROTOCOL_DESERIALIZER_MAP.get(routing.nextHeader); - } else { - deserializer = new Data().deserializer(); - } - routing.payload = deserializer.deserialize(data, bb.position(), - bb.limit() - bb.position()); - routing.payload.setParent(routing); - - return routing; - }; - } -} diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/package-info.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/package-info.java deleted file mode 100644 index 714fd1b2..00000000 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/ipv6/package-info.java +++ /dev/null @@ -1,20 +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. - */ - -/** - * Utilities for decoding and encoding IPv6 extension headers. - */ -package org.onlab.packet.ipv6; |