From a76b1adc1ef20a76b1db85f97c68c22e46fb923c Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Fri, 7 Nov 2025 14:36:15 +0100 Subject: [PATCH] confd: enable IFF_MULTICAST on GRE tunnel interfaces Required for protocol daemons like ospfd to join multicast groups. Signed-off-by: Joachim Wiberg --- src/confd/src/infix-if-gre.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/confd/src/infix-if-gre.c b/src/confd/src/infix-if-gre.c index 45771669..dbb96224 100644 --- a/src/confd/src/infix-if-gre.c +++ b/src/confd/src/infix-if-gre.c @@ -6,6 +6,7 @@ int gre_gen(struct lyd_node *dif, struct lyd_node *cif, FILE *ip) { const char *local, *remote, *ttl, *tos, *pmtudisc; + const char *ifname = lydx_get_cattr(cif, "name"); struct lyd_node *gre; int ipv6; @@ -15,8 +16,7 @@ int gre_gen(struct lyd_node *dif, struct lyd_node *cif, FILE *ip) ipv6 = !!strstr(local, ":"); - fprintf(ip, "link add name %s", - lydx_get_cattr(cif, "name")); + fprintf(ip, "link add name %s", ifname); switch (iftype_from_iface(cif)) { case IFT_GRE: @@ -45,5 +45,9 @@ int gre_gen(struct lyd_node *dif, struct lyd_node *cif, FILE *ip) fprintf(ip, " nopmtudisc"); fputc('\n', ip); + + /* GRE interfaces don't have IFF_MULTICAST by default */ + fprintf(ip, "link set dev %s multicast on\n", ifname); + return 0; }