As /31 subnet now works (as we stop setting broadcast address), the server directives can be fixed for it as well. --- src/openvpn/helper.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/openvpn/helper.c b/src/openvpn/helper.c index 470b9120..5b2ca0cc 100644 --- a/src/openvpn/helper.c +++ b/src/openvpn/helper.c @@ -328,31 +328,36 @@ helper_client_server(struct options *o) } else if (dev == DEV_TYPE_TAP || (dev == DEV_TYPE_TUN && topology == TOP_SUBNET)) { - if (netbits > 30) + int ptp = 1; + + if (netbits > 31) { msg(M_USAGE, "subnet must be %s or lower", - print_netmask(30, &gc)); + print_netmask(31, &gc)); } + if (netbits == 31) + ptp = 0; + o->mode = MODE_SERVER; o->tls_server = true; - o->ifconfig_local = print_in_addr_t(o->server_network + 1, 0, &o->gc); + o->ifconfig_local = print_in_addr_t(o->server_network + ptp, 0, &o->gc); o->ifconfig_remote_netmask = print_in_addr_t(o->server_netmask, 0, &o->gc); if (!(o->server_flags & SF_NOPOOL)) { o->ifconfig_pool_defined = true; - o->ifconfig_pool_start = o->server_network + 2; - o->ifconfig_pool_end = (o->server_network | ~o->server_netmask) - 2; + o->ifconfig_pool_start = o->server_network + ptp + 1; + o->ifconfig_pool_end = (o->server_network | ~o->server_netmask) - ptp * 2; ifconfig_pool_verify_range(M_USAGE, o->ifconfig_pool_start, o->ifconfig_pool_end); } o->ifconfig_pool_netmask = o->server_netmask; - push_option(o, print_opt_route_gateway(o->server_network + 1, &o->gc), M_USAGE); + push_option(o, print_opt_route_gateway(o->server_network + ptp, &o->gc), M_USAGE); if (dev == DEV_TYPE_TUN && !o->route_default_gateway) { - o->route_default_gateway = print_in_addr_t(o->server_network + 2, 0, &o->gc); + o->route_default_gateway = print_in_addr_t(o->server_network + ptp + 1, 0, &o->gc); } } else -- 2.24.0 _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel