2 * Copyright 2015 Open Networking Laboratory
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org.onosproject.pcepio.types;
19 import java.util.Objects;
21 import org.jboss.netty.buffer.ChannelBuffer;
22 import org.onosproject.pcepio.protocol.PcepVersion;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
26 import com.google.common.base.MoreObjects;
29 * NexthopUnnumberedIPv4IDTlv provides the next node's ID and Interface ID.
31 public class NexthopUnnumberedIPv4IDTlv implements PcepValueType {
34 Reference : draft-zhao-pce-pcep-extension-for-pce-controller-01.
37 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
38 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
39 | Type=TBD | Length = 12 |
40 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
42 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
44 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
46 NEXTHOP-UNNUMBERED-IPV4-ID TLV
49 protected static final Logger log = LoggerFactory.getLogger(NexthopUnnumberedIPv4IDTlv.class);
51 public static final short TYPE = 1; //to be defined
52 //Length is header + value
53 public static final short LENGTH = 12;
55 private final int nodeID;
56 private final int interfaceID;
59 * constructor to initialize nodeID and interfaceID.
61 * @param nodeID node ID
62 * @param interfaceID interface ID
64 public NexthopUnnumberedIPv4IDTlv(int nodeID, int interfaceID) {
66 this.interfaceID = interfaceID;
70 * Returns new object of NexthopUnnumberedIPv4IDTlv.
72 * @param nodeID node ID
73 * @param interfaceID interface ID
74 * @return NexthopUnnumberedIPv4IDTlv
76 public static NexthopUnnumberedIPv4IDTlv of(int nodeID, int interfaceID) {
77 return new NexthopUnnumberedIPv4IDTlv(nodeID, interfaceID);
85 public int getNodeID() {
90 * Returns Interface Id.
92 * @return interface ID
94 public int getInterfaceID() {
99 public PcepVersion getVersion() {
100 return PcepVersion.PCEP_1;
104 public short getType() {
109 public short getLength() {
114 public int hashCode() {
115 return Objects.hash(nodeID, interfaceID);
119 public boolean equals(Object obj) {
123 if (obj instanceof NexthopUnnumberedIPv4IDTlv) {
124 NexthopUnnumberedIPv4IDTlv other = (NexthopUnnumberedIPv4IDTlv) obj;
125 return Objects.equals(this.nodeID, other.nodeID) && Objects.equals(this.interfaceID, other.interfaceID);
131 public int write(ChannelBuffer c) {
132 int iLenStartIndex = c.writerIndex();
134 c.writeShort(LENGTH);
137 c.writeInt(interfaceID);
139 return c.writerIndex() - iLenStartIndex;
143 * Reads the channel buffer and returns object of NexthopUnnumberedIPv4IDTlv.
145 * @param cb type of channel buffer
146 * @return object of NexthopUnnumberedIPv4IDTlv
148 public static NexthopUnnumberedIPv4IDTlv read(ChannelBuffer cb) {
149 int nodeID = cb.readInt();
150 int interfaceID = cb.readInt();
151 return new NexthopUnnumberedIPv4IDTlv(nodeID, interfaceID);
155 public String toString() {
156 return MoreObjects.toStringHelper(getClass())
158 .add("Length", LENGTH)
159 .add("NodeId", nodeID)
160 .add("InterfaceId", interfaceID)