2 GoVPN -- simple secure free software virtual private network daemon
3 Copyright (C) 2014-2019 Sergey Matveev <stargrave@stargrave.org>
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, version 3 of the License.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
24 "go.cypherpunks.ru/govpn/v7"
27 type PeerState struct {
29 terminator chan struct{}
40 func callUp(peerID *govpn.PeerID, remoteAddr string) (string, error) {
41 ifaceName := confs[*peerID].Iface
42 if confs[*peerID].Up != "" {
43 result, err := govpn.ScriptCall(confs[*peerID].Up, ifaceName, remoteAddr)
46 `[script-failed bind="%s" path="%s" err="%s"]`,
54 sepIndex := bytes.Index(result, []byte{'\n'})
56 sepIndex = len(result)
58 ifaceName = string(result[:sepIndex])
62 govpn.Printf(`[tap-failed bind="%s" peer="%s"]`, *bindAddr, *peerID)