<capability>urn:opendaylight:params:xml:ns:yang:bgp-linkstate?module=bgp-linkstate&revision=2015-02-10</capability>
<capability>urn:opendaylight:params:xml:ns:yang:bgp-types?module=bgp-types&revision=2013-09-19</capability>
<capability>urn:opendaylight:params:xml:ns:yang:controller:bgp:linkstate?module=odl-bgp-linkstate-cfg&revision=2013-11-15</capability>
+ <capability>urn:opendaylight:params:xml:ns:yang:controller:bgp:flowspec?module=odl-bgp-flowspec-cfg&revision=2015-04-23</capability>
<capability>urn:opendaylight:params:xml:ns:yang:controller:bgp:parser:spi?module=odl-bgp-parser-spi-cfg&revision=2013-11-15</capability>
<capability>urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:spi?module=odl-bgp-rib-spi-cfg&revision=2013-11-15</capability>
<capability>urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl?module=odl-bgp-rib-impl-cfg&revision=2013-04-09</capability>
<type xmlns:bgpspi="urn:opendaylight:params:xml:ns:yang:controller:bgp:parser:spi">bgpspi:extension</type>
<name>bgp-linkstate</name>
</extension>
+ <extension>
+ <type xmlns:bgpspi="urn:opendaylight:params:xml:ns:yang:controller:bgp:parser:spi">bgpspi:extension</type>
+ <name>bgp-flowspec</name>
+ </extension>
</module>
<module>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:base-bgp-parser</type>
<type xmlns:ribspi="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:spi">ribspi:extension</type>
<name>bgp-linkstate</name>
</extension>
+ <extension>
+ <type xmlns:ribspi="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:spi">ribspi:extension</type>
+ <name>bgp-flowspec</name>
+ </extension>
</module>
<module>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:base-bgp-rib</type>
To preserve (TYPE = 99) set value bellow to false; to use IANA assigned type set the value to true or remove (true by default)-->
<iana-linkstate-attribute-type>true</iana-linkstate-attribute-type>
</module>
+ <module>
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:flowspec">prefix:bgp-flowspec</type>
+ <name>bgp-flowspec</name>
+ </module>
<module>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-dispatcher-impl</type>
<name>global-bgp-dispatcher</name>
<afi xmlns:linkstate="urn:opendaylight:params:xml:ns:yang:bgp-linkstate">linkstate:linkstate-address-family</afi>
<safi xmlns:linkstate="urn:opendaylight:params:xml:ns:yang:bgp-linkstate">linkstate:linkstate-subsequent-address-family</safi>
</module>
+ <module>
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-table-type-impl</type>
+ <name>flowspec</name>
+ <afi xmlns:bgp="urn:opendaylight:params:xml:ns:yang:bgp-types">bgp:ipv4-address-family</afi>
+ <safi xmlns:flowspec="urn:opendaylight:params:xml:ns:yang:bgp-flowspec">flowspec:flowspec-subsequent-address-family</safi>
+ </module>
</modules>
<services xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
<name>bgp-linkstate</name>
<provider>/modules/module[type='bgp-linkstate'][name='bgp-linkstate']</provider>
</instance>
+ <instance>
+ <name>bgp-flowspec</name>
+ <provider>/modules/module[type='bgp-flowspec'][name='bgp-flowspec']</provider>
+ </instance>
</service>
<service>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-table-type</type>
<name>linkstate</name>
<provider>/modules/module[type='bgp-table-type-impl'][name='linkstate']</provider>
</instance>
+ <instance>
+ <name>flowspec</name>
+ <provider>/modules/module[type='bgp-table-type-impl'][name='flowspec']</provider>
+ </instance>
</service>
<service>
<type xmlns:ribspi="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:spi">ribspi:extension</type>
<name>bgp-linkstate</name>
<provider>/modules/module[type='bgp-linkstate'][name='bgp-linkstate']</provider>
</instance>
+ <instance>
+ <name>bgp-flowspec</name>
+ <provider>/modules/module[type='bgp-flowspec'][name='bgp-flowspec']</provider>
+ </instance>
</service>
<service>
<type xmlns:ribspi="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:spi">ribspi:extensions</type>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-table-type</type>
<name>linkstate</name>
</advertized-table>
+ <advertized-table>
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-table-type</type>
+ <name>flowspec</name>
+ </advertized-table>
</module>
-->
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-table-type</type>
<name>linkstate</name>
</local-table>
+ <local-table>
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-table-type</type>
+ <name>flowspec</name>
+ </local-table>
<extensions>
<type xmlns:ribspi="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:spi">ribspi:extensions</type>
<name>global-rib-extensions</name>
</service>
</services>
</data>
-
</configuration>
</snapshot>
--- /dev/null
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others. 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
+ */
+package org.opendaylight.controller.config.yang.bgp.flowspec;
+
+import org.opendaylight.protocol.bgp.flowspec.BGPActivator;
+import org.opendaylight.protocol.bgp.flowspec.RIBActivator;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
+import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderActivator;
+import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderContext;
+
+public class FlowspecModule extends org.opendaylight.controller.config.yang.bgp.flowspec.AbstractFlowspecModule {
+ public FlowspecModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+ super(identifier, dependencyResolver);
+ }
+
+ public FlowspecModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final org.opendaylight.controller.config.yang.bgp.flowspec.FlowspecModule oldModule, final java.lang.AutoCloseable oldInstance) {
+ super(identifier, dependencyResolver, oldModule, oldInstance);
+ }
+
+ @Override
+ public void customValidation() {
+ // add custom validation form module attributes here.
+ }
+
+ @Override
+ public java.lang.AutoCloseable createInstance() {
+ final class FlowspecExtension implements AutoCloseable, BGPExtensionProviderActivator, RIBExtensionProviderActivator {
+ private final BGPExtensionProviderActivator bgpact = new BGPActivator();
+ private final RIBExtensionProviderActivator ribact = new RIBActivator();
+
+ @Override
+ public void close() {
+ if (this.bgpact != null) {
+ this.bgpact.stop();
+ }
+ if (this.ribact != null) {
+ this.ribact.stopRIBExtensionProvider();
+ }
+ }
+
+ @Override
+ public void startRIBExtensionProvider(final RIBExtensionProviderContext context) {
+ this.ribact.startRIBExtensionProvider(context);
+ }
+
+ @Override
+ public void stopRIBExtensionProvider() {
+ this.ribact.stopRIBExtensionProvider();
+ }
+
+ @Override
+ public void start(final BGPExtensionProviderContext context) {
+ this.bgpact.start(context);
+ }
+
+ @Override
+ public void stop() {
+ this.bgpact.stop();
+ }
+ }
+ return new FlowspecExtension();
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others. 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
+ */
+package org.opendaylight.controller.config.yang.bgp.flowspec;
+public class FlowspecModuleFactory extends org.opendaylight.controller.config.yang.bgp.flowspec.AbstractFlowspecModuleFactory {
+
+}
import org.opendaylight.protocol.bgp.parser.spi.AbstractBGPExtensionProviderActivator;
import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev150114.FlowspecSubsequentAddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Attributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev150114.flowspec.routes.FlowspecRoutes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.attributes.ExtendedCommunities;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
-public final class FSActivator extends AbstractBGPExtensionProviderActivator {
+public final class BGPActivator extends AbstractBGPExtensionProviderActivator {
private static final int FLOWSPEC_SAFI = 133;
regs.add(context.registerNlriParser(Ipv4AddressFamily.class, FlowspecSubsequentAddressFamily.class,
new FSNlriParser()));
- regs.add(context.registerNlriSerializer(Attributes.class, new FSNlriParser()));
+ regs.add(context.registerNlriSerializer(FlowspecRoutes.class, new FSNlriParser()));
final ExtendedCommunitiesAttributeParser extendedCommunitiesAttributeParser = new FSExtendedCommunitiesAttributeParser(context.getReferenceCache());
regs.add(context.registerAttributeSerializer(ExtendedCommunities.class, extendedCommunitiesAttributeParser));
--- /dev/null
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others. 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
+ */
+package org.opendaylight.protocol.bgp.flowspec;
+
+import com.google.common.collect.Lists;
+import java.util.List;
+import org.opendaylight.protocol.bgp.rib.spi.AbstractRIBExtensionProviderActivator;
+import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderContext;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev150114.FlowspecSubsequentAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
+
+public class RIBActivator extends AbstractRIBExtensionProviderActivator {
+ @Override
+ protected List<AutoCloseable> startRIBExtensionProviderImpl(final RIBExtensionProviderContext context) {
+ return Lists.newArrayList((AutoCloseable)context.registerRIBSupport(Ipv4AddressFamily.class, FlowspecSubsequentAddressFamily.class, FlowspecRIBSupport.getInstance()));
+ }
+}
--- /dev/null
+// vi: set smarttab et sw=4 tabstop=4:
+module odl-bgp-flowspec-cfg {
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:controller:bgp:flowspec";
+ prefix "bgpfs";
+
+ import config { prefix config; revision-date 2013-04-05; }
+ import odl-bgp-parser-spi-cfg { prefix bgpspi; revision-date 2013-11-15; }
+ import odl-bgp-rib-spi-cfg { prefix ribspi; revision-date 2013-11-15; }
+
+ organization "Cisco Systems, Inc.";
+
+ contact "Dana Kutenicsova <dkutenic@cisco.com>";
+
+ description
+ "This module contains the base YANG definitions for
+ BGP Flowspec extension.
+
+ Copyright (c)2015 Cisco Systems, 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 "2015-04-23" {
+ description
+ "Initial revision";
+ }
+
+ identity bgp-flowspec {
+ base config:module-type;
+ config:provided-service bgpspi:extension;
+ config:provided-service ribspi:extension;
+ config:java-name-prefix Flowspec;
+ }
+
+ augment "/config:modules/config:module/config:configuration" {
+ case bgp-flowspec {
+ when "/config:modules/config:module/config:type = 'bgp-flowspec'";
+ }
+ }
+}
@Test
public void testActivator() throws Exception {
- final FSActivator act = new FSActivator();
+ final BGPActivator act = new BGPActivator();
final BGPExtensionProviderContext context = new SimpleBGPExtensionProviderContext();
assertNull(context.getSubsequentAddressFamilyRegistry().classForFamily(133));
act.start(context);