<artifactId>bgp-evpn</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>bgp-mvpn</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>bgp-inet</artifactId>
<type>xml</type>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-bgpcep-bgp-mvpn</artifactId>
+ <classifier>features</classifier>
+ <type>xml</type>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>odl-bgpcep-bgp-path-selection-mode</artifactId>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.opendaylight.bgpcep</groupId>
+ <artifactId>binding-parent</artifactId>
+ <version>0.10.0-SNAPSHOT</version>
+ <relativePath>../../binding-parent</relativePath>
+ </parent>
+
+ <artifactId>bgp-mvpn</artifactId>
+ <packaging>bundle</packaging>
+ <description>BGP MPVN IPv4/6 Support</description>
+ <name>${project.artifactId}</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>bgp-parser-spi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>bgp-bmp-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal.model</groupId>
+ <artifactId>ietf-inet-types-2013-07-15</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>yang-binding</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>util</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>bgp-concepts</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>bgp-parser-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>bgp-rib-spi</artifactId>
+ </dependency>
+ </dependencies>
+
+ <scm>
+ <connection>scm:git:ssh://git.opendaylight.org:29418/bgpcep.git</connection>
+ <developerConnection>scm:git:ssh://git.opendaylight.org:29418/bgpcep.git</developerConnection>
+ <url>https://wiki.opendaylight.org/view/BGP_LS_PCEP:Main</url>
+ <tag>HEAD</tag>
+ </scm>
+</project>
\ No newline at end of file
--- /dev/null
+module bgp-mvpn-ipv4 {
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4";
+ prefix "bgp-mvpn-ipv4";
+
+ import bgp-mvpn { prefix mvpn; revision-date 2018-04-17; }
+ import bgp-rib { prefix bgp-rib; revision-date 2018-03-29; }
+ import bmp-monitor { prefix bmp-mon; revision-date 2018-03-29; }
+ import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
+ import bgp-message { prefix bgp-msg; revision-date 2018-03-29; }
+
+ revision 2018-04-17 {
+ description "Initial version";
+ }
+
+ grouping mvpn-destination {
+ list mvpn-destination {
+ uses mvpn:mvpn;
+ leaf ipv4-prefix {
+ type inet:ipv4-prefix;
+ }
+ uses bgp-msg:path-id-grouping;
+ }
+ }
+
+ augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-reach-nlri/bgp-mp:advertized-routes/bgp-mp:destination-type" {
+ case destination-mvpn-ipv4-advertized-case {
+ container destination-advertized-mvpn {
+ when "../../afi = ipv4";
+ uses mvpn-destination;
+ }
+ }
+ }
+
+ augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-unreach-nlri/bgp-mp:withdrawn-routes/bgp-mp:destination-type" {
+ case destination-mvpn-ipv4-withdrawn-case {
+ container destination-withdrawn-mvpn {
+ when "../../afi = ipv4";
+ uses mvpn-destination;
+ }
+ }
+ }
+
+ augment "/bgp-rib:application-rib/bgp-rib:tables/bgp-rib:routes" {
+ case mvpn-routes-ipv4-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" {
+ case mvpn-routes-ipv4-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-in/bgp-rib:tables/bgp-rib:routes" {
+ case mvpn-routes-ipv4-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:effective-rib-in/bgp-rib:tables/bgp-rib:routes" {
+ case mvpn-routes-ipv4-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-out/bgp-rib:tables/bgp-rib:routes" {
+ case mvpn-routes-ipv4-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bmp-mon:bmp-monitor/bmp-mon:monitor/bmp-mon:router/bmp-mon:peer/bmp-mon:pre-policy-rib/bmp-mon:tables/bmp-mon:routes" {
+ case mvpn-routes-ipv4-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bmp-mon:bmp-monitor/bmp-mon:monitor/bmp-mon:router/bmp-mon:peer/bmp-mon:post-policy-rib/bmp-mon:tables/bmp-mon:routes" {
+ case mvpn-routes-ipv4-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+module bgp-mvpn-ipv6 {
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6";
+ prefix "bgp-mvpn-ipv6";
+
+ import bgp-mvpn { prefix mvpn; revision-date 2018-04-17; }
+ import bgp-rib { prefix bgp-rib; revision-date 2018-03-29; }
+ import bmp-monitor { prefix bmp-mon; revision-date 2018-03-29; }
+ import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
+ import bgp-message { prefix bgp-msg; revision-date 2018-03-29; }
+
+ revision 2018-04-17 {
+ description "Initial version";
+ }
+
+ grouping mvpn-destination {
+ list mvpn-destination {
+ uses mvpn:mvpn;
+ leaf ipv6-prefix {
+ type inet:ipv6-prefix;
+ }
+ uses bgp-msg:path-id-grouping;
+ }
+ }
+
+ augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-reach-nlri/bgp-mp:advertized-routes/bgp-mp:destination-type" {
+ case destination-mvpn-ipv6-advertized-case {
+ container destination-advertized-mvpn {
+ when "../../afi = ipv6";
+ uses mvpn-destination;
+ }
+ }
+ }
+
+ augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-unreach-nlri/bgp-mp:withdrawn-routes/bgp-mp:destination-type" {
+ case destination-mvpn-ipv6-withdrawn-case {
+ container destination-withdrawn-mvpn {
+ when "../../afi = ipv6";
+ uses mvpn-destination;
+ }
+ }
+ }
+
+ augment "/bgp-rib:application-rib/bgp-rib:tables/bgp-rib:routes" {
+ case mvpn-routes-ipv6-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" {
+ case mvpn-routes-ipv6-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-in/bgp-rib:tables/bgp-rib:routes" {
+ case mvpn-routes-ipv6-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:effective-rib-in/bgp-rib:tables/bgp-rib:routes" {
+ case mvpn-routes-ipv6-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-out/bgp-rib:tables/bgp-rib:routes" {
+ case mvpn-routes-ipv6-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bmp-mon:bmp-monitor/bmp-mon:monitor/bmp-mon:router/bmp-mon:peer/bmp-mon:pre-policy-rib/bmp-mon:tables/bmp-mon:routes" {
+ case mvpn-routes-ipv6-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+
+ augment "/bmp-mon:bmp-monitor/bmp-mon:monitor/bmp-mon:router/bmp-mon:peer/bmp-mon:post-policy-rib/bmp-mon:tables/bmp-mon:routes" {
+ case mvpn-routes-ipv6-case {
+ uses mvpn:mvpn-routes;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+module bgp-mvpn {
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:bgp:mvpn";
+ prefix "bgp-mvpn";
+
+ import bgp-types { prefix bgp-t; revision-date 2018-03-29; }
+ import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
+ import pmsi-tunnel { prefix pmsi; revision-date 2018-03-29; }
+ import bgp-message { prefix bgp-msg; revision-date 2018-03-29; }
+ import bgp-rib { prefix bgp-rib; revision-date 2018-03-29; }
+ import yang-ext { prefix ext; revision-date "2013-07-09"; }
+ import network-concepts { prefix netc; revision-date 2013-11-25; }
+
+ organization "AT&T Services, Inc.";
+
+ contact "Claudio D. Gasparini <claudio.gasparini@pantheon.tech>";
+
+ description
+ "This module contains the base data model of a BGP message.
+ It rolls up the definitions contained in RFC6513, RFC6514, RFC6515.
+
+ Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+
+ This program and the accompanying materials are made available
+ under the terms of the Eclipse Public License v1.0 which
+ accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html";
+
+ revision 2018-04-17 {
+ description "Initial version";
+ }
+
+ identity mcast-vpn-subsequent-address-family {
+ reference "https://www.iana.org/assignments/safi-namespace/safi-namespace.xhtml";
+ base bgp-t:subsequent-address-family;
+ }
+
+ typedef nlri-type {
+ reference "https://tools.ietf.org/html/rfc6514#section-4";
+ type enumeration {
+ enum intra-as-i-pmsi-a-d {
+ value 1;
+ }
+ enum inter-as-i-pmsi-a-d {
+ value 2;
+ }
+ enum s-pmsi-a-d {
+ value 3;
+ }
+ enum leaf-a-d {
+ value 4;
+ }
+ enum source-active-a-d {
+ value 5;
+ }
+ enum shared-tree-join {
+ value 6;
+ }
+ enum source-tree-join {
+ value 7;
+ }
+ }
+ }
+
+ grouping source-as-grouping {
+ leaf source-as {
+ type inet:as-number;
+ mandatory true;
+ }
+ }
+
+ grouping multicast-source-rd-grouping {
+ uses bgp-t:route-distinguisher-grouping;
+
+ leaf multicast-source {
+ type inet:ip-address;
+ }
+ }
+
+ grouping multicast-group-opaque-grouping {
+ choice multicast-group {
+ case c-g-address-case {
+ container c-g-address {
+ leaf c-g-address {
+ type inet:ip-address;
+ }
+ }
+ }
+
+ case ldp-mp-opaque-value-case {
+ container ldp-mp-opaque-value {
+ uses pmsi:opaque;
+ }
+ }
+ }
+ }
+
+ grouping intra-as-i-pmsi-a-d-grouping {
+ container intra-as-i-pmsi-a-d {
+
+ description "https://tools.ietf.org/html/rfc6514#section-4.1";
+
+ uses bgp-t:route-distinguisher-grouping;
+ uses bgp-t:orig-route-ip-grouping;
+ }
+ }
+
+ grouping inter-as-i-pmsi-a-d-grouping {
+ container inter-as-i-pmsi-a-d {
+ description "https://tools.ietf.org/html/rfc6514#section-4.2";
+
+ uses bgp-t:route-distinguisher-grouping;
+ uses source-as-grouping;
+ }
+ }
+
+ grouping s-pmsi-a-d-grouping {
+ container s-pmsi-a-d {
+ description "https://tools.ietf.org/html/rfc6514#section-4.3";
+
+ uses multicast-source-rd-grouping;
+ uses multicast-group-opaque-grouping;
+ uses bgp-t:orig-route-ip-grouping;
+ }
+ }
+
+ grouping leaf-a-d-grouping {
+ container leaf-a-d {
+ description "https://tools.ietf.org/html/rfc6514#section-4.4";
+
+ choice leaf-a-d-route-key {
+ case inter-as-i-pmsi-a-d-case {
+ uses inter-as-i-pmsi-a-d-grouping;
+ }
+ case s-pmsi-a-d-case {
+ uses s-pmsi-a-d-grouping;
+ }
+ mandatory true;
+ }
+ uses bgp-t:orig-route-ip-grouping;
+ }
+ }
+
+ grouping source-active-a-d-grouping {
+ container source-active-a-d {
+ description "https://tools.ietf.org/html/rfc6514#section-4.5";
+
+ uses multicast-source-rd-grouping;
+ uses source-as-grouping;
+
+ leaf multicast-group {
+ type inet:ip-address;
+ }
+ }
+ }
+
+ grouping c-multicast-grouping {
+ container c-multicast {
+ description "https://tools.ietf.org/html/rfc6514#section-4.6";
+
+ uses multicast-source-rd-grouping;
+ uses source-as-grouping;
+ uses multicast-group-opaque-grouping;
+ }
+ }
+
+ grouping mvpn {
+ reference "https://tools.ietf.org/html/rfc6514#section-4";
+ description "The MCAST-VPN NLRI is carried in BGP [RFC4271] using BGP
+ Multiprotocol Extensions [RFC4760] with an Address Family Identifier
+ (AFI) of 1 or 2 and a Subsequent AFI (SAFI) of MCAST-VPN.";
+
+ choice mvpn-choice {
+ case intra-as-i-pmsi-a-d-case {
+ uses intra-as-i-pmsi-a-d-grouping;
+ }
+ case inter-as-i-pmsi-a-d-case {
+ uses inter-as-i-pmsi-a-d-grouping;
+ }
+ case s-pmsi-a-d-case {
+ uses s-pmsi-a-d-grouping;
+ }
+ case leaf-a-d-case {
+ uses leaf-a-d-grouping;
+ }
+ case source-active-a-d-case {
+ uses source-active-a-d-grouping;
+ }
+ case shared-tree-join-case {
+ uses c-multicast-grouping;
+ }
+ case source-tree-join-case {
+ uses c-multicast-grouping;
+ }
+ mandatory true;
+ }
+ }
+
+ grouping pe-distinguisher-labels-attribute {
+ container pe-distinguisher-labels-attribute {
+ list pe-distinguisher-label-attribute {
+ leaf pe-Address {
+ type inet:ip-address;
+ }
+ leaf mpls-label {
+ type netc:mpls-label;
+ mandatory true;
+ }
+ }
+ }
+ }
+
+ grouping bgp-rib-route {
+ uses pmsi:bgp-rib-route {
+ augment "attributes" {
+ ext:augment-identifier pe-distinguisher-labels-attribute-augmentation;
+ uses pe-distinguisher-labels-attribute;
+ }
+ augment "attributes/extended-communities/extended-community" {
+ ext:augment-identifier vrf-route-import-extended-community-augmentation;
+
+ case vrf-route-import-extended-community-case {
+ reference "https://tools.ietf.org/html/rfc6514#section-7";
+ container vrf-route-import-extended-community {
+ uses bgp-t:inet4-specific-extended-community-common;
+ }
+ }
+ }
+ augment "attributes/extended-communities/extended-community" {
+ ext:augment-identifier source-as-4-extended-augmentation;
+
+ case source-as-4-extended-community-case {
+ container source-as-4-extended-community {
+ reference "https://tools.ietf.org/html/rfc6514#section-6";
+ leaf as-number {
+ description "Carries a 4-octet Autonomous System (AS) number";
+ reference "https://tools.ietf.org/html/rfc5668#section-2";
+
+ mandatory true;
+ type inet:as-number;
+ }
+ }
+ }
+ }
+ augment "attributes/extended-communities/extended-community" {
+ ext:augment-identifier source-as-extended-augmentation;
+
+ case source-as-extended-community-case {
+ container source-as-extended-community {
+ reference "https://tools.ietf.org/html/rfc6514#section-6";
+ leaf global-administrator {
+ type bgp-t:short-as-number;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ grouping mvpn-bgp-rib-route {
+ uses mvpn;
+ uses bgp-rib-route;
+ }
+
+ grouping mvpn-routes {
+ container mvpn-routes {
+ list mvpn-route {
+ key "route-key path-id";
+
+ uses mvpn-bgp-rib-route;
+ leaf prefix {
+ type inet:ip-prefix;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+// vi: set smarttab et sw=4 tabstop=4:
+module pmsi-tunnel {
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:pmsi-tunnel";
+ prefix "pmsi-tunnel";
+
+ import bgp-types { prefix bgp-t; revision-date 2018-03-29; }
+ import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
+ import network-concepts { prefix netc; revision-date 2013-11-25; }
+ import ietf-yang-types { prefix yang; }
+ import bgp-rib { prefix bgp-rib; revision-date 2018-03-29; }
+ import yang-ext { prefix ext; revision-date 2013-07-09; }
+
+ organization "AT&T Services, Inc.";
+
+ contact "Bruce Brandon <bb2697@att.com>";
+
+ description
+ "This module contains the data model of a BGP attribute called the
+ P-Multicast Service Interface Tunnel (PMSI Tunnel), defined
+ in RFC6514, Section 5.
+
+ Copyright (c)2016 AT&T Services, Inc. All rights reserved.;
+
+ This program and the accompanying materials are made available
+ under the terms of the Eclipse Public License v1.0 which
+ accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html";
+
+ revision "2018-03-29" {
+ description "Add RFC6514 Extended communities under bgp type.";
+ }
+
+ revision "2016-08-12" {
+ description "Initial revision";
+ reference "https://tools.ietf.org/html/rfc6514#section-5";
+ }
+
+ grouping opaque {
+ leaf opaque-type {
+ mandatory true;
+ type uint8;
+ }
+ leaf opaque-extended-type {
+ type uint16;
+ }
+ leaf opaque {
+ mandatory true;
+ type yang:hex-string;
+ }
+ }
+
+ grouping p-address-p-multicast-group {
+ leaf p-address {
+ mandatory true;
+ type inet:ip-address;
+ }
+ leaf p-multicast-group {
+ mandatory true;
+ type inet:ip-address;
+ }
+ }
+
+ grouping pmsi-tunnel {
+ container pmsi-tunnel {
+ presence "PMSI Attribute";
+ description "P-Multicast Service Interface Tunnel (PMSI Tunnel) attribute";
+ reference "https://tools.ietf.org/html/rfc6514#section-5";
+
+ leaf leaf-information-required {
+ type boolean;
+ mandatory true;
+ }
+ leaf mpls-label {
+ type netc:mpls-label;
+ }
+ choice tunnel-identifier {
+ case rsvp-te-p2mp-lsp {
+ container rsvp-te-p2mp-lps {
+ reference "https://tools.ietf.org/html/rfc4875#section-19.1.1";
+ leaf p2mp-id {
+ mandatory true;
+ type uint32;
+ }
+ leaf tunnel-id {
+ mandatory true;
+ type uint16;
+ }
+ leaf extended-tunnel-id {
+ mandatory true;
+ type inet:ip-address;
+ }
+ }
+ }
+ case mldp-p2mp-lsp {
+ container mldp-p2mp-lsp {
+ reference "https://tools.ietf.org/html/rfc6388#section-2.2";
+ leaf address-family {
+ mandatory true;
+ type identityref {
+ base bgp-t:address-family;
+ }
+ }
+ leaf root-node-address {
+ mandatory true;
+ type inet:ip-address;
+ }
+ list opaque-value {
+ uses opaque;
+ }
+ }
+ }
+ case pim-ssm-tree {
+ container pim-ssm-tree {
+ reference "https://tools.ietf.org/html/rfc6514#section-5";
+ uses p-address-p-multicast-group;
+ }
+ }
+ case pim-sm-tree {
+ container pim-sm-tree {
+ reference "https://tools.ietf.org/html/rfc6514#section-5";
+ uses p-address-p-multicast-group;
+ }
+ }
+ case bidir-pim-tree {
+ container bidir-pim-tree {
+ reference "https://tools.ietf.org/html/rfc6514#section-5";
+ uses p-address-p-multicast-group;
+ }
+ }
+ case ingress-replication {
+ container ingress-replication {
+ leaf receiving-endpoint-address {
+ type inet:ip-address;
+ }
+ }
+ }
+ case mldp-mp2mp-lsp {
+ container mldp-mp2mp-lsp {
+ uses opaque;
+ }
+ }
+ }
+ }
+ }
+
+ augment "/bgp-msg:update/bgp-msg:attributes" {
+ uses pmsi-tunnel;
+ }
+
+ grouping bgp-rib-route {
+ uses bgp-rib:route {
+ augment "attributes" {
+ ext:augment-identifier pmsi-tunnel-augmentation;
+ uses pmsi-tunnel;
+ }
+ }
+ }
+}
+
reference "https://tools.ietf.org/html/rfc7752";
}
+ identity IPV4-MCAST-VPN {
+ base bgp-types:afi-safi-type;
+ description
+ "Multicast IPv4 VPN (AFI,SAFI = 1,5)";
+ reference "RFC6514";
+ }
+
+ identity IPV6-MCAST-VPN {
+ base bgp-types:afi-safi-type;
+ description
+ "Multicast IPv6 VPN (AFI,SAFI = 2,5)";
+ reference "RFC6514";
+ }
+
grouping transport-config {
leaf remote-port {
type inet:port-number;
<module>l3vpn</module>
<module>labeled-unicast</module>
<module>evpn</module>
+ <module>mvpn</module>
</modules>
</project>
<type>xml</type>
<classifier>features</classifier>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-bgpcep-bgp-mvpn</artifactId>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>odl-bgpcep-bgp-evpn</artifactId>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.opendaylight.bgpcep</groupId>
+ <artifactId>single-feature-parent</artifactId>
+ <version>0.10.0-SNAPSHOT</version>
+ <relativePath>../../../single-feature-parent</relativePath>
+ </parent>
+
+ <artifactId>odl-bgpcep-bgp-mvpn</artifactId>
+ <packaging>feature</packaging>
+
+ <name>OpenDaylight :: BGP :: Mvpn</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>bgp-mvpn</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-bgpcep-bgp-parser</artifactId>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-bgpcep-bgp-openconfig</artifactId>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-bgpcep-bmp-api</artifactId>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
<module>odl-bgpcep-bgp-dependencies</module>
<module>odl-bgpcep-bgp-config-example</module>
<module>odl-bgpcep-bgp-openconfig</module>
- <module>odl-bgpcep-bgp-inet</module>
<module>odl-bgpcep-bgp-parser</module>
<module>odl-bgpcep-bgp-parser-api</module>
<module>odl-bgpcep-bgp-rib-api</module>
- <module>odl-bgpcep-bgp-linkstate</module>
- <module>odl-bgpcep-bgp-flowspec</module>
- <module>odl-bgpcep-bgp-labeled-unicast</module>
- <module>odl-bgpcep-bgp-l3vpn</module>
- <module>odl-bgpcep-bgp-evpn</module>
<module>odl-bgpcep-bgp-path-selection-mode</module>
<module>odl-bgpcep-bgp-rib-impl</module>
<module>odl-bgpcep-bgp-topology</module>
<module>odl-bgpcep-bgp-openconfig-rp-spi</module>
<module>odl-bgpcep-bgp-openconfig-rp-impl</module>
<module>odl-bgpcep-bgp-openconfig-rp-statement</module>
+ <!-- Family extensions -->
+ <module>odl-bgpcep-bgp-inet</module>
+ <module>odl-bgpcep-bgp-linkstate</module>
+ <module>odl-bgpcep-bgp-flowspec</module>
+ <module>odl-bgpcep-bgp-labeled-unicast</module>
+ <module>odl-bgpcep-bgp-l3vpn</module>
+ <module>odl-bgpcep-bgp-evpn</module>
+ <module>odl-bgpcep-bgp-mvpn</module>
</modules>
</project>