2 * Copyright (c) 2019 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
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
8 package org.opendaylight.openflowplugin.extension.vendor.eric;
10 import static java.util.Objects.requireNonNull;
12 import java.util.List;
13 import org.opendaylight.openflowjava.eric.codec.match.Icmpv6NDOptionsTypeCodec;
14 import org.opendaylight.openflowjava.eric.codec.match.Icmpv6NDReservedCodec;
15 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
16 import org.opendaylight.openflowplugin.extension.api.ConverterExtensionKey;
17 import org.opendaylight.openflowplugin.extension.api.ExtensionConverterRegistrator;
18 import org.opendaylight.openflowplugin.extension.api.OpenFlowPluginExtensionRegistratorProvider;
19 import org.opendaylight.openflowplugin.extension.vendor.eric.convertor.match.Icmpv6NDOptionsTypeConvertor;
20 import org.opendaylight.openflowplugin.extension.vendor.eric.convertor.match.Icmpv6NDReservedConvertor;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.eric.match.rev180730.Icmpv6NdOptionsTypeKey;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.eric.match.rev180730.Icmpv6NdReservedKey;
23 import org.opendaylight.yangtools.concepts.ObjectRegistration;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
27 public class EricExtensionProvider implements AutoCloseable {
28 private static final Logger LOG = LoggerFactory.getLogger(EricExtensionProvider.class);
29 private static final Icmpv6NDReservedConvertor ICMPV6_ND_RESERVED_CONVERTOR = new Icmpv6NDReservedConvertor();
30 private static final Icmpv6NDOptionsTypeConvertor ICMPV6_ND_OPTIONS_TYPE_CONVERTOR =
31 new Icmpv6NDOptionsTypeConvertor();
33 private final ExtensionConverterRegistrator extensionConverterRegistrator;
34 private final List<ObjectRegistration<?>> registrations;
37 * Register appropriate converters.
39 public EricExtensionProvider(final OpenFlowPluginExtensionRegistratorProvider provider) {
40 extensionConverterRegistrator = requireNonNull(provider.getExtensionConverterRegistrator());
41 registrations = List.of(
42 extensionConverterRegistrator.registerMatchConvertor(new ConverterExtensionKey<>(
43 Icmpv6NdReservedKey.VALUE, EncodeConstants.OF_VERSION_1_3), ICMPV6_ND_RESERVED_CONVERTOR),
44 extensionConverterRegistrator.registerMatchConvertor(
45 Icmpv6NDReservedCodec.SERIALIZER_KEY, ICMPV6_ND_RESERVED_CONVERTOR),
46 extensionConverterRegistrator.registerMatchConvertor(new ConverterExtensionKey<>(
47 Icmpv6NdOptionsTypeKey.VALUE, EncodeConstants.OF_VERSION_1_3), ICMPV6_ND_OPTIONS_TYPE_CONVERTOR),
48 extensionConverterRegistrator.registerMatchConvertor(
49 Icmpv6NDOptionsTypeCodec.SERIALIZER_KEY, ICMPV6_ND_OPTIONS_TYPE_CONVERTOR));
53 @SuppressWarnings("checkstyle:IllegalCatch")
55 registrations.forEach(janitor -> {
58 } catch (RuntimeException e) {
59 LOG.warn("closing of extension converter failed", e);
62 registrations.clear();