+/*
+ # Copyright ETSI Contributors and Others.
+
+ 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.
+*/
+module vnffgd {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments:vnffgd";
+ prefix "vnffgd";
+
+ import etsi-nfv-nsd {
+ prefix nsd;
+ }
+
+ import ietf-inet-types {
+ prefix inet;
+ }
+
+ grouping match {
+ list match-attributes {
+ description
+ "List of match attributes.";
+
+ key "id";
+ leaf id {
+ description
+ "Identifier for the classifier match attribute rule.";
+ type string;
+ }
+
+ leaf ip-proto {
+ description
+ "IP Protocol.";
+ type uint8;
+ }
+
+ leaf source-ip-address {
+ description
+ "Source IP address.";
+ type inet:ip-address;
+ }
+
+ leaf destination-ip-address {
+ description
+ "Destination IP address.";
+ type inet:ip-address;
+ }
+
+ leaf source-port {
+ description
+ "Source port number.";
+ type inet:port-number;
+ }
+
+ leaf destination-port {
+ description
+ "Destination port number.";
+ type inet:port-number;
+ }
+
+ leaf constituent-base-element-id {
+ description
+ "Refer to the profile of source NS constituent.";
+ type leafref {
+ path "/nsd:nsd/nsd:nsd/nsd:df/nsd:vnf-profile/nsd:id";
+ }
+ }
+
+ leaf constituent-cpd-id {
+ description
+ "Logical source port.";
+ type string;
+ }
+ //TODO: Add more match criteria
+ } //match-attributes
+
+ }
+
+ grouping extended-position-element {
+
+ leaf-list nfp-position-element-id {
+ type leafref {
+ path "../../../nfp-position-element/id";
+ }
+ description
+ "References one or a pair of CPDs or SAPDs.";
+ reference
+ "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
+ information element";
+ }
+ }
+
+ grouping extended-nfp-position {
+ list nfp-position-element {
+ key "id";
+ leaf id {
+ type string;
+ description
+ "Identifier of this NfpPositionElemen information
+ element. It uniquely identifies an
+ NfpPositionElement.";
+ reference
+ "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
+ information element";
+ }
+ }
+
+ }
+
+ grouping extended-cpe {
+ leaf constituent-base-element-id {
+ type leafref {
+ path "/nsd:nsd/nsd:nsd/nsd:vnffgd/nsd:vnf-profile-id";
+ }
+ }
+
+ leaf order {
+ type uint8;
+ description
+ "A number that denotes the order of a VNF in a chain";
+ }
+
+ leaf ingress-constituent-cpd-id {
+ description
+ "A reference to a connection point name
+ in a vnfd.";
+
+ type string;
+ }
+
+ leaf egress-constituent-cpd-id {
+ description
+ "A reference to a connection point name
+ in a vnfd.";
+
+ type string;
+ }
+ }
+
+ augment "/nsd:nsd/nsd:nsd/nsd:vnffgd/nsd:nfpd/nsd:position-desc-id" {
+ uses match;
+ }
+
+ augment "/nsd:nsd/nsd:nsd/nsd:vnffgd" {
+ uses extended-nfp-position;
+ }
+
+ augment "/nsd:nsd/nsd:nsd/nsd:vnffgd/nsd:nfpd/nsd:position-desc-id" {
+ uses extended-position-element;
+ }
+
+ augment "/nsd:nsd/nsd:nsd/nsd:vnffgd/nsd:nfpd/nsd:position-desc-id/nsd:cp-profile-id/nsd:constituent-profile-elements"{
+ uses extended-cpe;
+ }
+}