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)