private void registerNlriHandler(final BGPExtensionProviderContext context, final List<AutoCloseable> regs) { final NextHopParserSerializer nextHopParser = new NextHopParserSerializer() {}; final EvpnNlriParser nlriHandler = new EvpnNlriParser(); regs.add(context.registerNlriParser(L2vpnAddressFamily.class, EvpnSubsequentAddressFamily.class, nlriHandler, nextHopParser, Ipv4NextHopCase.class, Ipv6NextHopCase.class)); regs.add(context.registerNlriSerializer(EvpnRoutes.class, nlriHandler)); }
@Override protected List<AutoCloseable> startImpl(final BGPExtensionProviderContext context) { final List<AutoCloseable> regs = new ArrayList<>(6); final Ipv4NextHopParserSerializer ipv4NextHopParser = new Ipv4NextHopParserSerializer(); final Ipv4NlriParser ipv4Codec = new Ipv4NlriParser(); regs.add(context.registerNlriParser(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class, ipv4Codec, ipv4NextHopParser, Ipv4NextHopCase.class, Ipv6NextHopCase.class)); regs.add(context.registerNlriSerializer(Ipv4Routes.class, ipv4Codec)); final Ipv6NextHopParserSerializer ipv6NextHopParser = new Ipv6NextHopParserSerializer(); final Ipv6NlriParser ipv6Codec = new Ipv6NlriParser(); regs.add(context.registerNlriParser(Ipv6AddressFamily.class, UnicastSubsequentAddressFamily.class, ipv6Codec, ipv6NextHopParser, Ipv4NextHopCase.class, Ipv6NextHopCase.class)); regs.add(context.registerNlriSerializer(Ipv6Routes.class, ipv6Codec)); final Ipv6BgpPrefixSidParser tlvHandler = new Ipv6BgpPrefixSidParser(); regs.add(context.registerBgpPrefixSidTlvParser(tlvHandler.getType(), tlvHandler)); regs.add(context.registerBgpPrefixSidTlvSerializer(Ipv6SidTlv.class, tlvHandler)); return regs; }
@Override protected List<AutoCloseable> startImpl(final BGPExtensionProviderContext context) { final List<AutoCloseable> regs = new ArrayList<>(); final SimpleNlriTypeRegistry nlriTypeReg = SimpleNlriTypeRegistry.getInstance(); regs.add(context.registerAddressFamily(LinkstateAddressFamily.class, LINKSTATE_AFI)); regs.add(context.registerSubsequentAddressFamily(LinkstateSubsequentAddressFamily.class, LINKSTATE_SAFI)); final NextHopParserSerializer linkstateNextHopParser = new NextHopParserSerializer() { }; final LinkstateNlriParser parser = new LinkstateNlriParser(); regs.add(context.registerNlriParser(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class, parser, linkstateNextHopParser, Ipv4NextHopCase.class, Ipv6NextHopCase.class)); regs.add(context.registerNlriSerializer(LinkstateRoutes.class, parser)); regs.add(context.registerAttributeSerializer(Attributes1.class, new LinkstateAttributeParser(this.ianaLinkstateAttributeType, this.rsvpTeObjectRegistry))); final LinkstateAttributeParser linkstateAttributeParser = new LinkstateAttributeParser(this.ianaLinkstateAttributeType, this.rsvpTeObjectRegistry); regs.add(context.registerAttributeParser(linkstateAttributeParser.getType(), linkstateAttributeParser)); registerNlriCodecs(regs, nlriTypeReg); registerNlriTlvCodecs(regs, nlriTypeReg); registerBindingSubTlvs(regs); return regs; }
final SimpleFlowspecIpv6NlriParser fsIpv6Handler = new SimpleFlowspecIpv6NlriParser(flowspecContext.getFlowspecTypeRegistry(SimpleFlowspecExtensionProviderContext.AFI.IPV6, SimpleFlowspecExtensionProviderContext.SAFI.FLOWSPEC)); regs.add( context.registerNlriParser( Ipv4AddressFamily.class, FlowspecSubsequentAddressFamily.class, fsIpv4Handler, ipv4NextHopParser, Ipv4NextHopCase.class context.registerNlriParser( Ipv6AddressFamily.class, FlowspecSubsequentAddressFamily.class, fsIpv6Handler, ipv6NextHopParser, Ipv6NextHopCase.class final FlowspecL3vpnIpv6NlriParser fsL3vpnIpv6Handler = new FlowspecL3vpnIpv6NlriParser(flowspecContext.getFlowspecTypeRegistry(SimpleFlowspecExtensionProviderContext.AFI.IPV6, SimpleFlowspecExtensionProviderContext.SAFI.FLOWSPEC_VPN)); regs.add( context.registerNlriParser( Ipv4AddressFamily.class, FlowspecL3vpnSubsequentAddressFamily.class, fsL3vpnIpv4Handler, ipv4NextHopParser, Ipv4NextHopCase.class context.registerNlriParser( Ipv6AddressFamily.class, FlowspecL3vpnSubsequentAddressFamily.class, fsL3vpnIpv6Handler, ipv6NextHopParser, Ipv6NextHopCase.class