2023-08-16 22:26:55 +00:00
|
|
|
- #1: add support for on-link routes
|
|
|
|
|
|
|
|
- #2, #3: don't advertise an RTA_IFP that is not actually included
|
|
|
|
|
|
|
|
Index: src/openvpn/route.c
|
|
|
|
--- src/openvpn/route.c.orig
|
|
|
|
+++ src/openvpn/route.c
|
2023-08-18 18:38:43 +00:00
|
|
|
@@ -1545,7 +1545,7 @@ local_route(in_addr_t network,
|
|
|
|
|
|
|
|
/* Return true if the "on-link" form of the route should be used. This is when the gateway for
|
|
|
|
* a route is specified as an interface rather than an address. */
|
|
|
|
-#if defined(TARGET_LINUX) || defined(_WIN32) || defined(TARGET_DARWIN)
|
|
|
|
+#if defined(TARGET_LINUX) || defined(_WIN32) || defined(TARGET_DARWIN) || defined(TARGET_OPENBSD)
|
|
|
|
static inline bool
|
|
|
|
is_on_link(const int is_local_route, const unsigned int flags, const struct route_gateway_info *rgi)
|
|
|
|
{
|
|
|
|
@@ -1817,12 +1817,17 @@ add_route(struct route_ipv4 *r,
|
2023-08-16 22:26:55 +00:00
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
- argv_printf_cat(&argv, "-net %s %s -netmask %s",
|
|
|
|
+ argv_printf_cat (&argv, "-net %s -netmask %s",
|
|
|
|
network,
|
|
|
|
- gateway,
|
|
|
|
netmask);
|
|
|
|
|
|
|
|
- /* FIXME -- add on-link support for OpenBSD/NetBSD */
|
|
|
|
+ /* FIXME -- add on-link support for NetBSD */
|
|
|
|
+#ifdef TARGET_OPENBSD
|
|
|
|
+ if (is_on_link (is_local_route, flags, rgi))
|
|
|
|
+ argv_printf_cat (&argv, "-link -iface %s", rgi->iface);
|
|
|
|
+ else
|
|
|
|
+#endif
|
|
|
|
+ argv_printf_cat (&argv, "%s", gateway);
|
|
|
|
|
|
|
|
argv_msg(D_ROUTE, &argv);
|
|
|
|
bool ret = openvpn_execve_check(&argv, es, 0,
|
2023-08-18 18:38:43 +00:00
|
|
|
@@ -3513,7 +3518,7 @@ get_default_gateway(struct route_gateway_info *rgi, op
|
2023-08-16 22:26:55 +00:00
|
|
|
/* setup data to send to routing socket */
|
|
|
|
pid = getpid();
|
|
|
|
seq = 0;
|
|
|
|
- rtm_addrs = RTA_DST | RTA_NETMASK | RTA_IFP;
|
|
|
|
+ rtm_addrs = RTA_DST | RTA_NETMASK;
|
|
|
|
|
|
|
|
bzero(&m_rtmsg, sizeof(m_rtmsg));
|
|
|
|
bzero(&so_dst, sizeof(so_dst));
|
2023-08-18 18:38:43 +00:00
|
|
|
@@ -3731,7 +3736,7 @@ get_default_gateway_ipv6(struct route_ipv6_gateway_inf
|
2023-08-16 22:26:55 +00:00
|
|
|
/* setup data to send to routing socket */
|
|
|
|
pid = getpid();
|
|
|
|
seq = 0;
|
|
|
|
- rtm_addrs = RTA_DST | RTA_NETMASK | RTA_IFP;
|
|
|
|
+ rtm_addrs = RTA_DST | RTA_NETMASK;
|
|
|
|
|
|
|
|
bzero(&m_rtmsg, sizeof(m_rtmsg));
|
|
|
|
bzero(&so_dst, sizeof(so_dst));
|