]> Cypherpunks.ru repositories - govpn.git/blobdiff - src/govpn/cmd/govpn-server/common.go
Ability to explicitly specify TAP interface, without up-script using
[govpn.git] / src / govpn / cmd / govpn-server / common.go
index 3b3fcdae97f6168feeea8dccbcb067a694caca1a..313fc394aed7b70fc21e28d32b7f01bf5236ac9b 100644 (file)
@@ -67,15 +67,23 @@ Processor:
 }
 
 func callUp(peerId *govpn.PeerId) (string, error) {
-       result, err := govpn.ScriptCall(confs[*peerId].Up, "")
-       if err != nil {
-               log.Println("Script", confs[*peerId].Up, "call failed", err)
-               return "", err
+       ifaceName := confs[*peerId].Iface
+       if confs[*peerId].Up != "" {
+               result, err := govpn.ScriptCall(confs[*peerId].Up, "")
+               if err != nil {
+                       log.Println("Script", confs[*peerId].Up, "call failed", err)
+                       return "", err
+               }
+               if ifaceName == "" {
+                       sepIndex := bytes.Index(result, []byte{'\n'})
+                       if sepIndex < 0 {
+                               sepIndex = len(result)
+                       }
+                       ifaceName = string(result[:sepIndex])
+               }
        }
-       sepIndex := bytes.Index(result, []byte{'\n'})
-       if sepIndex < 0 {
-               sepIndex = len(result)
+       if ifaceName == "" {
+               log.Println("Can not obtain interface name for", *peerId)
        }
-       ifaceName := string(result[:sepIndex])
        return ifaceName, nil
 }