summaryrefslogtreecommitdiffstats
path: root/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/write/factory/LispWriterFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/write/factory/LispWriterFactory.java')
-rwxr-xr-xlisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/write/factory/LispWriterFactory.java18
1 files changed, 12 insertions, 6 deletions
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/write/factory/LispWriterFactory.java b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/write/factory/LispWriterFactory.java
index ed7d2122a..46cb9da7b 100755
--- a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/write/factory/LispWriterFactory.java
+++ b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/write/factory/LispWriterFactory.java
@@ -30,6 +30,7 @@ import io.fd.honeycomb.translate.impl.write.GenericWriter;
import io.fd.honeycomb.translate.write.WriterFactory;
import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder;
import javax.annotation.Nonnull;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.Lisp;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.lisp.feature.data.grouping.LispFeatureData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.register.grouping.MapRegister;
@@ -50,21 +51,26 @@ public final class LispWriterFactory extends AbstractLispInfraFactoryBase implem
@Override
public void init(@Nonnull final ModifiableWriterRegistryBuilder registry) {
- registry.add(new GenericWriter<>(LISP_INSTANCE_IDENTIFIER, new LispCustomizer(vppApi)));
+ // lisp must be enabled before interfaces
+ // because as a byproduct of enabling lisp, lisp_gpe interface is created
+ // and in scenario when vpp data are lost, it would end up calling
+ // sw_interface_set_flags for non existing interface index
+ registry.addBefore(new GenericWriter<>(LISP_INSTANCE_IDENTIFIER, new LispCustomizer(vppApi)),
+ InstanceIdentifier.create(Interfaces.class));
registry.addAfter(writer(LISP_FEATURE_IDENTIFIER.child(PitrCfg.class),
- new PitrCfgCustomizer(vppApi)), LOCATOR_SET_ID);
+ new PitrCfgCustomizer(vppApi, lispStateCheckService)), LOCATOR_SET_ID);
registry.add(writer(LISP_FEATURE_IDENTIFIER.child(MapRegister.class),
- new MapRegisterCustomizer(vppApi)));
+ new MapRegisterCustomizer(vppApi, lispStateCheckService)));
registry.add(writer(LISP_FEATURE_IDENTIFIER.child(MapRequestMode.class),
- new MapRequestModeCustomizer(vppApi)));
+ new MapRequestModeCustomizer(vppApi, lispStateCheckService)));
registry.add(writer(LISP_FEATURE_IDENTIFIER.child(PetrCfg.class),
- new PetrCfgCustomizer(vppApi)));
+ new PetrCfgCustomizer(vppApi, lispStateCheckService)));
registry.add(writer(LISP_FEATURE_IDENTIFIER.child(RlocProbe.class),
- new RlocProbeCustomizer(vppApi)));
+ new RlocProbeCustomizer(vppApi, lispStateCheckService)));
}
}