diff options
Diffstat (limited to 'lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/write/factory/LispWriterFactory.java')
-rwxr-xr-x | lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/write/factory/LispWriterFactory.java | 18 |
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))); } } |