From 361c0d7827937589d4fcb0e084becc6da600096e Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 30 May 2023 09:12:04 +0200 Subject: [PATCH] confd: Move interface deletion logic to its own function Let's try to keep netdag_gen_iface from becoming do_everything(). --- src/confd/src/ietf-interfaces.c | 40 ++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/src/confd/src/ietf-interfaces.c b/src/confd/src/ietf-interfaces.c index e5f8cfff..fe22f04f 100644 --- a/src/confd/src/ietf-interfaces.c +++ b/src/confd/src/ietf-interfaces.c @@ -363,6 +363,29 @@ static int netdag_gen_sysctl(struct dagger *net, return err; } +static int netdag_gen_iface_del(struct dagger *net, struct lyd_node *dif, + struct lyd_node *cif, bool fixed) +{ + const char *ifname = lydx_get_cattr(dif, "name"); + FILE *ip; + + DEBUG_IFACE(dif, ""); + + ip = dagger_fopen_current(net, "exit", ifname, 50, "exit.ip"); + if (!ip) + return -EIO; + + if (fixed) { + fprintf(ip, "link set dev %s down\n", ifname); + fprintf(ip, "addr flush dev %s\n", ifname); + } else { + fprintf(ip, "link del dev %s\n", ifname); + } + + fclose(ip); + return 0; +} + static sr_error_t netdag_gen_iface(struct dagger *net, struct lyd_node *dif, struct lyd_node *cif) { @@ -380,21 +403,8 @@ static sr_error_t netdag_gen_iface(struct dagger *net, (op == LYDX_OP_NONE) ? "mod" : ((op == LYDX_OP_CREATE) ? "add" : "del")); if (op == LYDX_OP_DELETE) { - ip = dagger_fopen_current(net, "exit", ifname, 50, "exit.ip"); - if (!ip) { - err = -EIO; - goto err; - } - - if (fixed) { - fprintf(ip, "link set dev %s down\n", ifname); - fprintf(ip, "addr flush dev %s\n", ifname); - } else { - fprintf(ip, "link del dev %s\n", ifname); - } - - fclose(ip); - return SR_ERR_OK; + err = netdag_gen_iface_del(net, dif, cif, fixed); + goto err; } ip = dagger_fopen_next(net, "init", ifname, 50, "init.ip");