--- openvpn.inc-orig 2014-01-23 08:34:06.000000000 -0600 +++ openvpn.inc 2014-01-23 10:45:35.000000000 -0600 @@ -767,6 +767,11 @@ $vpnid = $settings['vpnid']; $mode_id = $mode.$vpnid; + if ($mode == "server") + $devname = "ovpns{$vpnid}"; + else + $devname = "ovpnc{$vpnid}"; + /* kill the process if running */ $pfile = $g['varrun_path']."/openvpn_{$mode_id}.pid"; if (file_exists($pfile)) { @@ -803,6 +808,19 @@ openvpn_clear_route($mode, $settings); mwexec_bg("/usr/local/sbin/openvpn --config {$fpath}"); + /* look for interface to come up before continuing */ + $i = 1; + while(mwexec("/sbin/ifconfig $devname | grep '[<,]UP[,>]'", true)) { + if($g['debug']) + log_error("Sleeping 1 second waiting for openvpn interface to come up attempt: $i of 10.\n"); + sleep(1); + $i++; + if ($i > 10) { + log_error("Timeout waiting for openvpn interface $devname to come up.\n"); + break; + } + } + if (!$g['booting']) send_event("filter reload"); }