diff --git a/src/confd/src/confd/dagger.c b/src/confd/src/confd/dagger.c index dfb22696..305eb81e 100644 --- a/src/confd/src/confd/dagger.c +++ b/src/confd/src/confd/dagger.c @@ -120,6 +120,11 @@ int dagger_should_skip(struct dagger *d, const char *ifname) return fexistf("%s/%d/skip/%s", d->path, d->next, ifname); } +int dagger_should_skip_current(struct dagger *d, const char *ifname) +{ + return fexistf("%s/%d/skip/%s", d->path, d->current, ifname); +} + int dagger_claim(struct dagger *d, const char *path) { diff --git a/src/confd/src/confd/dagger.h b/src/confd/src/confd/dagger.h index 8f23f533..70938204 100644 --- a/src/confd/src/confd/dagger.h +++ b/src/confd/src/confd/dagger.h @@ -24,6 +24,7 @@ int dagger_evolve_or_abandon(struct dagger *d); void dagger_skip_iface(struct dagger *d, const char *ifname); int dagger_should_skip(struct dagger *d, const char *ifname); +int dagger_should_skip_current(struct dagger *d, const char *ifname); int dagger_claim(struct dagger *d, const char *path); diff --git a/src/confd/src/confd/ietf-interfaces.c b/src/confd/src/confd/ietf-interfaces.c index 32369eaa..5321ee8c 100644 --- a/src/confd/src/confd/ietf-interfaces.c +++ b/src/confd/src/confd/ietf-interfaces.c @@ -805,6 +805,9 @@ static int netdag_gen_iface_del(struct dagger *net, struct lyd_node *dif, DEBUG_IFACE(dif, ""); + if (dagger_should_skip_current(net, ifname)) + return 0; + ip = dagger_fopen_current(net, "exit", ifname, 50, "exit.ip"); if (!ip) return -EIO;