| 299 | } |
| 300 | |
| 301 | func buildPeerConfigsForRestart(peers []*PeerInfo, presharedKey *wgtypes.Key) ([]wgtypes.PeerConfig, error) { |
| 302 | orderedPeers := append([]*PeerInfo(nil), peers...) |
| 303 | sort.Slice(orderedPeers, func(i, j int) bool { |
| 304 | return orderedPeers[i].PublicKey.String() < orderedPeers[j].PublicKey.String() |
| 305 | }) |
| 306 | |
| 307 | peerConfigs := make([]wgtypes.PeerConfig, 0, len(orderedPeers)) |
| 308 | for _, peer := range orderedPeers { |
| 309 | if len(peer.AllowedIPs) == 0 { |
| 310 | return nil, fmt.Errorf("peer %s has no allowed IPs", peer.Email) |
| 311 | } |
| 312 | |
| 313 | peerConfigs = append(peerConfigs, buildAddConfig(peer.PublicKey, peer.AllowedIPs, presharedKey)) |
| 314 | } |
| 315 | |
| 316 | return peerConfigs, nil |
| 317 | } |
| 318 | |
| 319 | func (wg *WireGuard) shutdownLocked() { |
| 320 | if wg.cancelFunc != nil { |