From: Milos Fabian Date: Tue, 4 Mar 2014 17:05:00 +0000 (+0100) Subject: Added definition of vendor-specific tlv into pcep-types. X-Git-Tag: release/helium~379^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=bgpcep.git;a=commitdiff_plain;h=98a945e81546de51830a3495e7e50796cf6c9702 Added definition of vendor-specific tlv into pcep-types. Added abstract vs-tlv parser. Change-Id: I62f920f1db35161fe7fa37645f2a7318eaa434af Signed-off-by: Milos Fabian --- diff --git a/pcep/api/src/main/yang/pcep-types.yang b/pcep/api/src/main/yang/pcep-types.yang index 365e2b369f..26c5dda9da 100644 --- a/pcep/api/src/main/yang/pcep-types.yang +++ b/pcep/api/src/main/yang/pcep-types.yang @@ -7,6 +7,7 @@ module pcep-types { import ietf-inet-types { prefix inet; revision-date 2010-09-24; } import network-concepts { prefix netc; revision-date 2013-11-25; } import rsvp { prefix rsvp; revision-date 2013-08-20; } + import iana { prefix iana; revision-date 2013-08-16; } organization "Cisco Systems, Inc."; contact "Robert Varga "; @@ -157,6 +158,20 @@ module pcep-types { } } + grouping vs-tlv { + description "Vendor-specific TLV."; + container vs-tlv { + uses tlv; + + leaf enterprise-number { + type iana:enterprise-number; + } + + choice vendor-payload { + } + } + } + // Objects grouping object-header { description "Common Object Header"; @@ -493,7 +508,6 @@ module pcep-types { uses object; uses rsvp:tunnel-attributes; container "tlvs" { - } } } diff --git a/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPLspaObjectParser.java b/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPLspaObjectParser.java index 2e666272c8..6865faadee 100644 --- a/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPLspaObjectParser.java +++ b/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPLspaObjectParser.java @@ -126,12 +126,12 @@ public class PCEPLspaObjectParser extends AbstractObjectWithTlvsParser 0) { + byte[] payloadBytes = ByteArray.subByte(valueBytes, byteOffset, payloadLength); + vendorPayload = parseVendorPayload(payloadBytes); + if (vendorPayload != null) { + vsTlvBuider.setVendorPayload(vendorPayload); + } + } + } + return vsTlvBuider.build(); + } + + abstract protected byte[] serializeVendorPayload(VendorPayload payload); + + abstract protected long getEnterpriseNumber(); + + abstract protected VendorPayload parseVendorPayload(byte[] payloadBytes) throws PCEPDeserializerException; + + protected static int getPadding(final int length, final int padding) { + return (padding - (length % padding)) % padding; + } +}