BUG 611 - MPReach/Unreach uses serializers from NlriRegistry for linkstate originated...
[bgpcep.git] / bgp / linkstate / src / main / java / org / opendaylight / protocol / bgp / linkstate / BGPActivator.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.protocol.bgp.linkstate;
9
10 import java.util.ArrayList;
11 import java.util.List;
12
13 import org.opendaylight.protocol.bgp.parser.spi.AbstractBGPExtensionProviderActivator;
14 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateAddressFamily;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateSubsequentAddressFamily;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.PathAttributes1;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.PathAttributes;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.MplsLabeledVpnSubsequentAddressFamily;
20
21 /**
22  * Activator for registering linkstate extensions to BGP parser.
23  */
24 public final class BGPActivator extends AbstractBGPExtensionProviderActivator {
25
26     private static final int LINKSTATE_AFI = 16388;
27
28     private static final int LINKSTATE_SAFI = 71;
29
30     @Override
31     protected List<AutoCloseable> startImpl(final BGPExtensionProviderContext context) {
32         final List<AutoCloseable> regs = new ArrayList<>();
33
34         regs.add(context.registerAddressFamily(LinkstateAddressFamily.class, LINKSTATE_AFI));
35         regs.add(context.registerSubsequentAddressFamily(LinkstateSubsequentAddressFamily.class, LINKSTATE_SAFI));
36
37         regs.add(context.registerNlriParser(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class,
38                 new LinkstateNlriParser(false)));
39         regs.add(context.registerNlriParser(LinkstateAddressFamily.class, MplsLabeledVpnSubsequentAddressFamily.class,
40                 new LinkstateNlriParser(true)));
41         regs.add(context.registerNlriSerializer(PathAttributes.class, new LinkstateNlriParser(false)));
42
43         regs.add(context.registerAttributeSerializer(PathAttributes1.class, new LinkstateAttributeParser()));
44         regs.add(context.registerAttributeParser(LinkstateAttributeParser.TYPE, new LinkstateAttributeParser()));
45
46         return regs;
47     }
48 }