diff options
Diffstat (limited to 'framework/src/onos/utils/misc/src/main/java/org/onlab/packet/LLC.java')
-rw-r--r-- | framework/src/onos/utils/misc/src/main/java/org/onlab/packet/LLC.java | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/LLC.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/LLC.java new file mode 100644 index 00000000..78b4f3fa --- /dev/null +++ b/framework/src/onos/utils/misc/src/main/java/org/onlab/packet/LLC.java @@ -0,0 +1,102 @@ +/* + * Copyright 2014 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +package org.onlab.packet; + +import java.nio.ByteBuffer; + +import static org.onlab.packet.PacketUtils.*; + +/** + * This class represents an Link Local Control header that is used in Ethernet + * 802.3. + * + * + */ +public class LLC extends BasePacket { + + public static final byte LLC_HEADER_LENGTH = 3; + + private byte dsap = 0; + private byte ssap = 0; + private byte ctrl = 0; + + public byte getDsap() { + return this.dsap; + } + + public void setDsap(final byte dsap) { + this.dsap = dsap; + } + + public byte getSsap() { + return this.ssap; + } + + public void setSsap(final byte ssap) { + this.ssap = ssap; + } + + public byte getCtrl() { + return this.ctrl; + } + + public void setCtrl(final byte ctrl) { + this.ctrl = ctrl; + } + + @Override + public byte[] serialize() { + final byte[] data = new byte[3]; + final ByteBuffer bb = ByteBuffer.wrap(data); + bb.put(this.dsap); + bb.put(this.ssap); + bb.put(this.ctrl); + return data; + } + + @Override + public IPacket deserialize(final byte[] data, final int offset, + final int length) { + final ByteBuffer bb = ByteBuffer.wrap(data, offset, length); + this.dsap = bb.get(); + this.ssap = bb.get(); + this.ctrl = bb.get(); + return this; + } + + /** + * Deserializer function for LLC packets. + * + * @return deserializer function + */ + public static Deserializer<LLC> deserializer() { + return (data, offset, length) -> { + checkInput(data, offset, length, LLC_HEADER_LENGTH); + + ByteBuffer bb = ByteBuffer.wrap(data, offset, length); + LLC llc = new LLC(); + + llc.dsap = bb.get(); + llc.ssap = bb.get(); + llc.ctrl = bb.get(); + + return llc; + }; + } +} |