]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Netlink: Allow RTA_VIA even without MPLS support
authorLuiz Amaral <email@luiz.eng.br>
Thu, 15 Jun 2023 13:01:50 +0000 (15:01 +0200)
committerOndrej Zajicek <santiago@crfreenet.org>
Thu, 15 Jun 2023 14:07:36 +0000 (16:07 +0200)
It is necessary for IPv4 over IPv6 nexthop support on FreeBSD,
and RTA_VIA is not really related to MPLS.

It breaks build for some very old systems like Debian 8 and CentOS 7,
but we generally do not support older kernels than 4.14 LTS anyway.

sysdep/linux/netlink.c

index 7f0d4736898a3b2ad33bf2fdf69301206d01df65..e3298a0f5549c5f677cc5467ddd0ebcba2d45020 100644 (file)
@@ -485,7 +485,6 @@ static inline ip_addr rta_get_ipa(struct rtattr *a)
     return ipa_from_ip6(rta_get_ip6(a));
 }
 
-#ifdef HAVE_MPLS_KERNEL
 static inline ip_addr rta_get_via(struct rtattr *a)
 {
   struct rtvia *v = RTA_DATA(a);
@@ -496,6 +495,7 @@ static inline ip_addr rta_get_via(struct rtattr *a)
   return IPA_NONE;
 }
 
+#ifdef HAVE_MPLS_KERNEL
 static u32 rta_mpls_stack[MPLS_MAX_LABEL_STACK];
 static inline int rta_get_mpls(struct rtattr *a, u32 *stack)
 {
@@ -763,10 +763,8 @@ nl_parse_multipath(struct nl_parse_state *s, struct krt_proto *p, const net_addr
       if (a[RTA_FLOW])
        s->rta_flow = rta_get_u32(a[RTA_FLOW]);
 
-#ifdef HAVE_MPLS_KERNEL
       if (a[RTA_VIA])
        rv->gw = rta_get_via(a[RTA_VIA]);
-#endif
 
       if (nh->rtnh_flags & RTNH_F_ONLINK)
        rv->flags |= RNF_ONLINK;
@@ -1659,10 +1657,8 @@ nl_parse_route(struct nl_parse_state *s, struct nlmsghdr *h)
       if (a[RTA_GATEWAY])
        ra->nh.gw = rta_get_ipa(a[RTA_GATEWAY]);
 
-#ifdef HAVE_MPLS_KERNEL
       if (a[RTA_VIA])
        ra->nh.gw = rta_get_via(a[RTA_VIA]);
-#endif
 
       if (i->rtm_flags & RTNH_F_ONLINK)
        ra->nh.flags |= RNF_ONLINK;