Insert MPLS VPN routes with the RTF_GATEWAY flag cleared. mpe(4) is now
authorclaudio <claudio@openbsd.org>
Wed, 29 Nov 2017 19:40:47 +0000 (19:40 +0000)
committerclaudio <claudio@openbsd.org>
Wed, 29 Nov 2017 19:40:47 +0000 (19:40 +0000)
expecting this and will use the route gateway and the mpls label to forward
packets. This plus the other diffs to if_mpe.c and route.c should fix
L3 MPLS VPNs. Problem reported by henning@

usr.sbin/bgpd/kroute.c

index d885fe5..53dc857 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: kroute.c,v 1.216 2017/07/24 11:00:01 friehm Exp $ */
+/*     $OpenBSD: kroute.c,v 1.217 2017/11/29 19:40:47 claudio Exp $ */
 
 /*
  * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -2644,6 +2644,8 @@ send_rtmsg(int fd, int action, struct ktable *kt, struct kroute *kroute,
                hdr.rtm_mpls = MPLS_OP_PUSH;
                hdr.rtm_addrs |= RTA_SRC;
                hdr.rtm_msglen += sizeof(mpls);
+               /* clear gateway flag since this is for mpe(4) */
+               hdr.rtm_flags &= ~RTF_GATEWAY;
                /* adjust iovec */
                iov[iovcnt].iov_base = &mpls;
                iov[iovcnt++].iov_len = sizeof(mpls);