From 96779c2620d4dc34dbb19cde22e41f17290deb96 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 17 Dec 2024 16:48:35 +0100 Subject: [PATCH] confd: bridge: Simplify function names after review Agreement: Avoid abbreviations in exported functions. Use short, prefix-less, names for local functions. --- src/confd/src/ietf-interfaces.c | 8 +-- src/confd/src/ietf-interfaces.h | 6 +- src/confd/src/infix-if-bridge-mcd.c | 16 ++--- src/confd/src/infix-if-bridge-port.c | 29 +++++---- src/confd/src/infix-if-bridge.c | 93 ++++++++++++++-------------- 5 files changed, 74 insertions(+), 78 deletions(-) diff --git a/src/confd/src/ietf-interfaces.c b/src/confd/src/ietf-interfaces.c index bbe4ebe7..45339f35 100644 --- a/src/confd/src/ietf-interfaces.c +++ b/src/confd/src/ietf-interfaces.c @@ -408,7 +408,7 @@ static int netdag_gen_afspec_add(sr_session_ctx_t *session, struct dagger *net, DEBUG_IFACE(dif, ""); if (!strcmp(iftype, "infix-if-type:bridge")) { - err = ixif_br_gen(dif, cif, ip, 1); + err = bridge_gen(dif, cif, ip, 1); } else if (!strcmp(iftype, "infix-if-type:dummy")) { err = netdag_gen_dummy(net, NULL, cif, ip); } else if (!strcmp(iftype, "infix-if-type:veth")) { @@ -439,7 +439,7 @@ static int netdag_gen_afspec_set(sr_session_ctx_t *session, struct dagger *net, DEBUG_IFACE(dif, ""); if (!strcmp(iftype, "infix-if-type:bridge")) - return ixif_br_gen(dif, cif, ip, 0); + return bridge_gen(dif, cif, ip, 0); if (!strcmp(iftype, "infix-if-type:vlan")) return netdag_gen_vlan(net, dif, cif, ip); if (!strcmp(iftype, "infix-if-type:veth")) @@ -602,7 +602,7 @@ static sr_error_t netdag_gen_iface(sr_session_ctx_t *session, struct dagger *net fputc('\n', ip); - err = ixif_br_port_gen(dif, cif, ip); + err = bridge_port_gen(dif, cif, ip); if (err) goto err_close_ip; @@ -673,7 +673,7 @@ static sr_error_t ifchange_post(sr_session_ctx_t *session, struct dagger *net, * regenerate the full config for mcd every time by walking * the full configuration. */ - err = ixif_br_mcd_gen(cifs); + err = bridge_mcd_gen(cifs); return err ? SR_ERR_INTERNAL : SR_ERR_OK; } diff --git a/src/confd/src/ietf-interfaces.h b/src/confd/src/ietf-interfaces.h index cda3eac1..41c2abe8 100644 --- a/src/confd/src/ietf-interfaces.h +++ b/src/confd/src/ietf-interfaces.h @@ -58,11 +58,11 @@ int netdag_gen_ip_addrs(struct dagger *net, FILE *ip, const char *proto, struct lyd_node *cif, struct lyd_node *dif); /* infix-if-bridge.c */ -int ixif_br_gen(struct lyd_node *dif, struct lyd_node *cif, FILE *ip, int add); +int bridge_gen(struct lyd_node *dif, struct lyd_node *cif, FILE *ip, int add); /* infix-if-bridge-mcd.c */ -int ixif_br_mcd_gen(struct lyd_node *cifs); +int bridge_mcd_gen(struct lyd_node *cifs); /* infix-if-bridge-port.c */ -int ixif_br_port_gen(struct lyd_node *dif, struct lyd_node *cif, FILE *ip); +int bridge_port_gen(struct lyd_node *dif, struct lyd_node *cif, FILE *ip); /* infix-if-veth.c */ int ifchange_cand_infer_veth(sr_session_ctx_t *session, const char *path); diff --git a/src/confd/src/infix-if-bridge-mcd.c b/src/confd/src/infix-if-bridge-mcd.c index ecff14c4..23c20d8a 100644 --- a/src/confd/src/infix-if-bridge-mcd.c +++ b/src/confd/src/infix-if-bridge-mcd.c @@ -12,7 +12,7 @@ #include "ietf-interfaces.h" -static int ixif_br_mcd_gen_br_vlan(struct lyd_node *cif, struct lyd_node *vlan, FILE *conf) +static int gen_vlan(struct lyd_node *cif, struct lyd_node *vlan, FILE *conf) { const char *iface, *querier, *upper; struct lyd_node *mcast; @@ -50,7 +50,7 @@ static int ixif_br_mcd_gen_br_vlan(struct lyd_node *cif, struct lyd_node *vlan, return 0; } -static int ixif_br_mcd_gen_br(struct lyd_node *cif, FILE *conf) +static int gen_bridge(struct lyd_node *cif, FILE *conf) { struct lyd_node *vlans, *vlan, *mcast; const char *iface, *querier; @@ -77,7 +77,7 @@ static int ixif_br_mcd_gen_br(struct lyd_node *cif, FILE *conf) return 0; LYX_LIST_FOR_EACH(lyd_child(vlans), vlan, "vlan") { - err = ixif_br_mcd_gen_br_vlan(cif, vlan, conf); + err = gen_vlan(cif, vlan, conf); if (err) return err; } @@ -85,14 +85,14 @@ static int ixif_br_mcd_gen_br(struct lyd_node *cif, FILE *conf) return 0; } -int ixif_br_mcd_gen(struct lyd_node *cifs) +int bridge_mcd_gen(struct lyd_node *cifs) { FILE *conf, *stop, *start; struct lyd_node *cif; int err = 0; bool empty; - conf = fopen("/etc/mc.d/interfaces.conf.next", "w"); + conf = fopen("/etc/mc.d/bridges.conf.next", "w"); if (!conf) return -EIO; @@ -100,7 +100,7 @@ int ixif_br_mcd_gen(struct lyd_node *cifs) if (strcmp(lydx_get_cattr(cif, "type"), "infix-if-type:bridge")) continue; - err = ixif_br_mcd_gen_br(cif, conf); + err = gen_bridge(cif, conf); if (err) break; } @@ -118,7 +118,7 @@ int ixif_br_mcd_gen(struct lyd_node *cifs) goto out_remove; } - fputs("mv /etc/mc.d/interfaces.conf.next /etc/mc.d/interfaces.conf\n", start); + fputs("mv /etc/mc.d/bridges.conf.next /etc/mc.d/bridges.conf\n", start); fputs("initctl -bnq enable mcd\n", start); fputs("initctl -bnq touch mcd\n", start); fclose(start); @@ -136,6 +136,6 @@ int ixif_br_mcd_gen(struct lyd_node *cifs) } out_remove: - remove("/etc/mc.d/interfaces.conf.next"); + remove("/etc/mc.d/bridges.conf.next"); return err; } diff --git a/src/confd/src/infix-if-bridge-port.c b/src/confd/src/infix-if-bridge-port.c index 478ee849..08103b76 100644 --- a/src/confd/src/infix-if-bridge-port.c +++ b/src/confd/src/infix-if-bridge-port.c @@ -12,8 +12,7 @@ #include "ietf-interfaces.h" -static const char *ixif_br_port_get_egress_mode(const char *iface, int vid, - const char *brname) +static const char *get_port_egress_mode(const char *iface, int vid, const char *brname) { static const char *modes[] = { "tagged", "untagged", NULL }; const char **mode; @@ -29,14 +28,14 @@ static const char *ixif_br_port_get_egress_mode(const char *iface, int vid, return NULL; } -static int ixif_br_port_gen_pvid_del(struct lyd_node *cif, const char *brname, int vid) +static int gen_pvid_del(struct lyd_node *cif, const char *brname, int vid) { const char *iface, *mode; FILE *exit; iface = lydx_get_cattr(cif, "name"); - mode = ixif_br_port_get_egress_mode(iface, vid, brname); + mode = get_port_egress_mode(iface, vid, brname); if (!mode) /* Port is not a member of the VLAN anymore, so the * PVID is already removed. @@ -58,14 +57,14 @@ static int ixif_br_port_gen_pvid_del(struct lyd_node *cif, const char *brname, i return 0; } -static int ixif_br_port_gen_pvid_add(struct lyd_node *cif, const char *brname, int vid) +static int gen_pvid_add(struct lyd_node *cif, const char *brname, int vid) { const char *iface, *mode; FILE *init; iface = lydx_get_cattr(cif, "name"); - mode = ixif_br_port_get_egress_mode(iface, vid, brname); + mode = get_port_egress_mode(iface, vid, brname); if (!mode) { WARN("%s is not a member of VLAN %d: Ignoring PVID", iface, vid); return 0; @@ -83,7 +82,7 @@ static int ixif_br_port_gen_pvid_add(struct lyd_node *cif, const char *brname, i return 0; } -static int ixif_br_port_gen_pvid(struct lyd_node *dif, struct lyd_node *cif) +static int gen_pvid(struct lyd_node *dif, struct lyd_node *cif) { struct lyd_node *bridge, *pvid; struct lydx_diff pvdiff; @@ -107,13 +106,13 @@ static int ixif_br_port_gen_pvid(struct lyd_node *dif, struct lyd_node *cif) * old bridge. */ if (!bridge && pvdiff.old) { - err = ixif_br_port_gen_pvid_del(cif, brname, atoi(pvdiff.old)); + err = gen_pvid_del(cif, brname, atoi(pvdiff.old)); if (err) return err; } if (pvdiff.new) { - err = ixif_br_port_gen_pvid_add(cif, brname, atoi(pvdiff.new)); + err = gen_pvid_add(cif, brname, atoi(pvdiff.new)); if (err) return err; } @@ -121,7 +120,7 @@ static int ixif_br_port_gen_pvid(struct lyd_node *dif, struct lyd_node *cif) return 0; } -static int ixif_br_port_gen_link(struct lyd_node *dif, struct lyd_node *cif) +static int gen_link(struct lyd_node *dif, struct lyd_node *cif) { struct lyd_node *bp, *flood, *mcast; const char *brname, *iface; @@ -185,7 +184,7 @@ static int ixif_br_port_gen_link(struct lyd_node *dif, struct lyd_node *cif) return 0; } -int ixif_br_port_gen_join_leave(struct lyd_node *dif) +static int gen_join_leave(struct lyd_node *dif) { struct lyd_node *bridge; struct lydx_diff brdiff; @@ -222,19 +221,19 @@ int ixif_br_port_gen_join_leave(struct lyd_node *dif) return err; } -int ixif_br_port_gen(struct lyd_node *dif, struct lyd_node *cif, FILE *ip) +int bridge_port_gen(struct lyd_node *dif, struct lyd_node *cif, FILE *ip) { int err = 0; - err = ixif_br_port_gen_join_leave(dif); + err = gen_join_leave(dif); if (err) return err; - err = ixif_br_port_gen_link(dif, cif); + err = gen_link(dif, cif); if (err) return err; - err = ixif_br_port_gen_pvid(dif, cif); + err = gen_pvid(dif, cif); if (err) return err; diff --git a/src/confd/src/infix-if-bridge.c b/src/confd/src/infix-if-bridge.c index 2aa6c03c..cbe3cacf 100644 --- a/src/confd/src/infix-if-bridge.c +++ b/src/confd/src/infix-if-bridge.c @@ -32,13 +32,11 @@ struct ixif_br { } exit; }; -static bool ixif_br_vlan_has_mcast_snooping(struct ixif_br *br); - /* MDB */ -static int ixif_br_mdb_gen_filter(struct ixif_br *br, struct lyd_node *filter, - const char *vidstr) +static int gen_mdb_filter(struct ixif_br *br, struct lyd_node *filter, + const char *vidstr) { const char *group, *iface; struct lyd_node *port; @@ -76,7 +74,7 @@ static int ixif_br_mdb_gen_filter(struct ixif_br *br, struct lyd_node *filter, return 0; } -static int ixif_br_mdb_gen(struct ixif_br *br, struct lyd_node *ctx) +static int gen_mdb(struct ixif_br *br, struct lyd_node *ctx) { struct lyd_node *filters, *filter; char *vidstr = NULL; @@ -92,7 +90,7 @@ static int ixif_br_mdb_gen(struct ixif_br *br, struct lyd_node *ctx) asprintf(&vidstr, "vid %s", vid); LYX_LIST_FOR_EACH(lyd_child(filters), filter, "multicast-filter") { - err = ixif_br_mdb_gen_filter(br, filter, vidstr); + err = gen_mdb_filter(br, filter, vidstr); if (err) break; } @@ -106,7 +104,25 @@ static int ixif_br_mdb_gen(struct ixif_br *br, struct lyd_node *ctx) /* MCAST */ -static int ixif_br_mcast_gen_vlan(struct ixif_br *br, struct lyd_node *vlan) +static bool has_vlan_mcast_snooping(struct ixif_br *br) +{ + struct lyd_node *vlans, *vlan, *mcast; + + vlans = lydx_get_descendant(lyd_child(br->cif), "bridge", "vlans", NULL); + if (!vlans) + return false; + + LYX_LIST_FOR_EACH(lyd_child(vlans), vlan, "vlan") { + mcast = lydx_get_descendant(lyd_child(vlan), "multicast", NULL); + + if (mcast && lydx_is_enabled(mcast, "snooping")) + return true; + } + + return false; +} + +static int gen_vlan_mcast(struct ixif_br *br, struct lyd_node *vlan) { struct lyd_node *mcast; bool snooping; @@ -126,7 +142,7 @@ static int ixif_br_mcast_gen_vlan(struct ixif_br *br, struct lyd_node *vlan) return 0; } -static int ixif_br_mcast_gen_vlans(struct ixif_br *br) +static int gen_vlans_mcast(struct ixif_br *br) { struct lyd_node *vlans, *vlan; int err; @@ -136,7 +152,7 @@ static int ixif_br_mcast_gen_vlans(struct ixif_br *br) return 0; LYX_LIST_FOR_EACH(lyd_child(vlans), vlan, "vlan") { - err = ixif_br_mcast_gen_vlan(br, vlan); + err = gen_vlan_mcast(br, vlan); if (err) return err; } @@ -144,7 +160,7 @@ static int ixif_br_mcast_gen_vlans(struct ixif_br *br) return 0; } -static int ixif_br_mcast_gen_ieee_forward(struct ixif_br *br) +static int gen_ieee_forward(struct ixif_br *br) { struct lyd_node *node, *proto; int fwd_mask = 0; @@ -174,14 +190,14 @@ static int ixif_br_mcast_gen_ieee_forward(struct ixif_br *br) return 0; } -static int ixif_br_mcast_gen(struct ixif_br *br) +static int gen_mcast(struct ixif_br *br) { - bool vlan_snooping = ixif_br_vlan_has_mcast_snooping(br); + bool vlan_snooping = has_vlan_mcast_snooping(br); struct lyd_node *mcast; bool snooping = false; int err, interval = 0; - err = ixif_br_mcast_gen_ieee_forward(br); + err = gen_ieee_forward(br); if (err) return err; @@ -202,7 +218,7 @@ static int ixif_br_mcast_gen(struct ixif_br *br) fprintf(br->bropts.fp, " mcast_query_interval %d", interval * 100); if (vlan_snooping) - err = ixif_br_mcast_gen_vlans(br); + err = gen_vlans_mcast(br); return err; } @@ -211,26 +227,7 @@ static int ixif_br_mcast_gen(struct ixif_br *br) /* VLAN */ -static bool ixif_br_vlan_has_mcast_snooping(struct ixif_br *br) -{ - struct lyd_node *vlans, *vlan, *mcast; - - vlans = lydx_get_descendant(lyd_child(br->cif), "bridge", "vlans", NULL); - if (!vlans) - return false; - - LYX_LIST_FOR_EACH(lyd_child(vlans), vlan, "vlan") { - mcast = lydx_get_descendant(lyd_child(vlan), "multicast", NULL); - - if (mcast && lydx_is_enabled(mcast, "snooping")) - return true; - } - - return false; -} - -static int ixif_br_vlan_gen_membership(struct ixif_br *br, - struct lyd_node *vlan, const char *mode) +static int gen_vlan_membership(struct ixif_br *br, struct lyd_node *vlan, const char *mode) { struct lyd_node *portentry; enum lydx_op pop, vop; @@ -273,7 +270,7 @@ static int ixif_br_vlan_gen_membership(struct ixif_br *br, return 0; } -static int ixif_br_vlan_gen(struct ixif_br *br) +static int gen_vlan(struct ixif_br *br) { static const char *modes[] = { "tagged", "untagged", NULL }; struct lyd_node *vlans, *vlan; @@ -296,12 +293,12 @@ static int ixif_br_vlan_gen(struct ixif_br *br) LYX_LIST_FOR_EACH(lyd_child(vlans), vlan, "vlan") { for (mode = modes; *mode; mode++) { - err = ixif_br_vlan_gen_membership(br, vlan, *mode); + err = gen_vlan_membership(br, vlan, *mode); if (err) return err; } - err = ixif_br_mdb_gen(br, vlan); + err = gen_mdb(br, vlan); if (err) return err; } @@ -313,7 +310,7 @@ static int ixif_br_vlan_gen(struct ixif_br *br) /* BR */ -static void ixif_br_gen_phys_address(struct ixif_br *br) +static void gen_phys_address(struct ixif_br *br) { struct json_t *j; const char *mac; @@ -334,8 +331,8 @@ static void ixif_br_gen_phys_address(struct ixif_br *br) fprintf(br->ip, " address %s", mac); } -static int ixif_br_init(struct ixif_br *br, struct lyd_node *dif, struct lyd_node *cif, - FILE *ip) +static int init_snippets(struct ixif_br *br, struct lyd_node *dif, struct lyd_node *cif, + FILE *ip) { int err = 0; @@ -374,7 +371,7 @@ err: return err; } -static int ixif_br_fini(struct ixif_br *br) +static int collect_snippets(struct ixif_br *br) { FILE *init, *exit = NULL; int err; @@ -410,39 +407,39 @@ static int ixif_br_fini(struct ixif_br *br) return err; } -int ixif_br_gen(struct lyd_node *dif, struct lyd_node *cif, FILE *ip, int add) +int bridge_gen(struct lyd_node *dif, struct lyd_node *cif, FILE *ip, int add) { const char *op = add ? "add" : "set"; struct ixif_br br; int err; - err = ixif_br_init(&br, dif, cif, ip); + err = init_snippets(&br, dif, cif, ip); if (err) return err; fputs(" mcast_flood_always 1", br.bropts.fp); fputs(" vlan_default_pvid 0", br.bropts.fp); - err = ixif_br_vlan_gen(&br); + err = gen_vlan(&br); if (err) goto out; - err = ixif_br_mcast_gen(&br); + err = gen_mcast(&br); if (err) goto out; - err = ixif_br_mdb_gen(&br, lydx_get_child(dif, "bridge")); + err = gen_mdb(&br, lydx_get_child(dif, "bridge")); if (err) goto out; fprintf(br.ip, "link %s dev %s", op, br.name); if (add) - ixif_br_gen_phys_address(&br); + gen_phys_address(&br); fprintf(br.ip, " type bridge"); out: - ixif_br_fini(&br); + err = collect_snippets(&br); return err; }