11 type PeerState struct {
13 terminator chan struct{}
18 handshakes map[string]*govpn.Handshake = make(map[string]*govpn.Handshake)
21 peers map[string]*PeerState = make(map[string]*PeerState)
22 peersLock sync.RWMutex
24 peersById map[govpn.PeerId]string = make(map[govpn.PeerId]string)
25 peersByIdLock sync.RWMutex
27 knownPeers govpn.KnownPeers
31 func peerReady(ps PeerState) {
33 heartbeat := time.NewTicker(ps.peer.Timeout)
38 ps.peer.EthProcess(nil)
41 case data = <-ps.tap.Sink:
42 ps.peer.EthProcess(data)
50 func callUp(peerId *govpn.PeerId) (string, error) {
51 result, err := govpn.ScriptCall(confs[*peerId].Up, "")
55 sepIndex := bytes.Index(result, []byte{'\n'})
57 sepIndex = len(result)
59 ifaceName := string(result[:sepIndex])