mirror of
https://github.com/OpenVPN/openvpn.git
synced 2026-06-11 01:40:05 -04:00
Make "topology subnet" work on Solaris (ifconfig + route metric changes by Kazuyoshi Aizawa, adding of local "connected subnet" route by me)
Tested on OpenSolaris/i386, no impact for other TARGETs. Signed-off-by: Gert Doering <gert@greenie.muc.de> Acked-by: Kazuyoshi Aizawa <admin2@whiteboard.ne.jp> Signed-off-by: David Sommerseth <dazo@users.sourceforge.net>
This commit is contained in:
parent
121755c2cb
commit
f0eac1a597
2 changed files with 30 additions and 5 deletions
8
route.c
8
route.c
|
|
@ -923,16 +923,14 @@ add_route (struct route *r, const struct tuntap *tt, unsigned int flags, const s
|
|||
argv_printf (&argv, "%s add",
|
||||
ROUTE_PATH);
|
||||
|
||||
#if 0
|
||||
if (r->metric_defined)
|
||||
argv_printf_cat (&argv, "-rtt %d", r->metric);
|
||||
#endif
|
||||
|
||||
argv_printf_cat (&argv, "%s -netmask %s %s",
|
||||
network,
|
||||
netmask,
|
||||
gateway);
|
||||
|
||||
if (r->metric_defined)
|
||||
argv_printf_cat (&argv, "%d", r->metric);
|
||||
|
||||
argv_msg (D_ROUTE, &argv);
|
||||
status = openvpn_execve_check (&argv, es, 0, "ERROR: Solaris route add command failed");
|
||||
|
||||
|
|
|
|||
27
tun.c
27
tun.c
|
|
@ -702,6 +702,19 @@ do_ifconfig (struct tuntap *tt,
|
|||
);
|
||||
}
|
||||
else
|
||||
if (tt->topology == TOP_SUBNET)
|
||||
{
|
||||
argv_printf (&argv,
|
||||
"%s %s %s %s netmask %s mtu %d up",
|
||||
IFCONFIG_PATH,
|
||||
actual,
|
||||
ifconfig_local,
|
||||
ifconfig_local,
|
||||
ifconfig_remote_netmask,
|
||||
tun_mtu
|
||||
);
|
||||
}
|
||||
else
|
||||
argv_printf (&argv,
|
||||
" %s %s %s netmask %s broadcast + up",
|
||||
IFCONFIG_PATH,
|
||||
|
|
@ -714,6 +727,20 @@ do_ifconfig (struct tuntap *tt,
|
|||
if (!openvpn_execve_check (&argv, es, 0, "Solaris ifconfig phase-2 failed"))
|
||||
solaris_error_close (tt, es, actual);
|
||||
|
||||
if (!tun && tt->topology == TOP_SUBNET)
|
||||
{
|
||||
/* Add a network route for the local tun interface */
|
||||
struct route r;
|
||||
CLEAR (r);
|
||||
r.defined = true;
|
||||
r.network = tt->local & tt->remote_netmask;
|
||||
r.netmask = tt->remote_netmask;
|
||||
r.gateway = tt->local;
|
||||
r.metric_defined = true;
|
||||
r.metric = 0;
|
||||
add_route (&r, tt, 0, es);
|
||||
}
|
||||
|
||||
tt->did_ifconfig = true;
|
||||
|
||||
#elif defined(TARGET_OPENBSD)
|
||||
|
|
|
|||
Loading…
Reference in a new issue