1 package org.onosproject.pcepio.types;
3 import org.jboss.netty.buffer.ChannelBuffer;
4 import org.onosproject.pcepio.protocol.PcepVersion;
6 import com.google.common.base.MoreObjects;
9 * Provides Pcep Rsvp Ipv6 Error Spec.
11 public class PcepRsvpIpv6ErrorSpec implements PcepRsvpErrorSpec {
15 +-------------+-------------+-------------+-------------+
16 | Length (bytes) | Class-Num | C-Type |
17 +-------------+-------------+-------------+-------------+
19 // (Object contents) //
21 +-------------+-------------+-------------+-------------+
23 Ref : ERROR_SPEC @ RFC2205
25 IPv6 ERROR_SPEC object: Class = 6, C-Type = 2
26 +-------------+-------------+-------------+-------------+
30 + IPv6 Error Node Address (16 bytes) +
34 +-------------+-------------+-------------+-------------+
35 | Flags | Error Code | Error Value |
36 +-------------+-------------+-------------+-------------+ */
38 PcepRsvpSpecObjHeader objHeader;
39 public static final byte CLASS_NUM = 0x06;
40 public static final byte CLASS_TYPE = 0x02;
41 public static final byte CLASS_LENGTH = 0x18;
42 public static final byte IPV6_LEN = 0x10;
44 private byte[] ipv6Addr;
47 private short errValue;
50 * Constructor to initialize obj header, ipv6 addr, flags, err code and err value.
52 * @param objHeader rsvp ipv6 error spec object header
53 * @param ipv6Addr ipv6 address
54 * @param flags flags value
55 * @param errCode error code
56 * @param errValue error value
58 public PcepRsvpIpv6ErrorSpec(PcepRsvpSpecObjHeader objHeader, byte[] ipv6Addr, byte flags, byte errCode,
60 this.objHeader = objHeader;
61 this.ipv6Addr = ipv6Addr;
63 this.errCode = errCode;
64 this.errValue = errValue;
68 * Constructor to initialize ipv6 addr, flags, err code and err value.
70 * @param ipv6Addr ipv6 address
71 * @param flags flags value
72 * @param errCode error code
73 * @param errValue error value
75 public PcepRsvpIpv6ErrorSpec(byte[] ipv6Addr, byte flags, byte errCode, short errValue) {
76 this.objHeader = new PcepRsvpSpecObjHeader(CLASS_LENGTH, CLASS_NUM, CLASS_TYPE);
77 this.ipv6Addr = ipv6Addr;
79 this.errCode = errCode;
80 this.errValue = errValue;
84 public int write(ChannelBuffer cb) {
85 int objLenIndex = objHeader.write(cb);
86 cb.writeBytes(ipv6Addr);
88 cb.writeByte(errCode);
89 cb.writeShort(errValue);
90 short objLen = (short) (cb.writerIndex() - objLenIndex);
91 cb.setShort(objLenIndex, objLen);
96 * Returns PCEP rsvp IPv6 error spce object.
98 * @param cb channel buffer
99 * @return PCEP rsvp IPv6 error spce object
101 public static PcepRsvpErrorSpec read(ChannelBuffer cb) {
102 PcepRsvpSpecObjHeader objHeader;
103 byte[] ipv6Addr = new byte[IPV6_LEN];
108 objHeader = PcepRsvpSpecObjHeader.read(cb);
109 cb.readBytes(ipv6Addr, 0, IPV6_LEN);
110 flags = cb.readByte();
111 errCode = cb.readByte();
112 errValue = cb.readShort();
113 return new PcepRsvpIpv6ErrorSpec(objHeader, ipv6Addr, flags, errCode, errValue);
117 public PcepVersion getVersion() {
118 return PcepVersion.PCEP_1;
122 public short getType() {
123 return StatefulRsvpErrorSpecTlv.TYPE;
127 public short getLength() {
132 public byte getClassNum() {
137 public byte getClassType() {
142 public String toString() {
143 return MoreObjects.toStringHelper(getClass())
144 .add("IPv6Address", ipv6Addr)
146 .add("errorCode", errCode)
147 .add("errorValue", errValue)