Skip to content

Commit

Permalink
Merge pull request #42 from mysteriumnetwork/check-tun-status
Browse files Browse the repository at this point in the history
Check if device exists before fetching state
  • Loading branch information
zolia committed Aug 8, 2019
2 parents 127686d + fe7612a commit d870ba8
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 7 deletions.
9 changes: 9 additions & 0 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 13 additions & 7 deletions openvpn/tunnel/setup_tun_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import (
"strconv"

log "github.com/cihub/seelog"
"github.com/pkg/errors"

"github.com/mysteriumnetwork/go-openvpn/openvpn/config"
)

Expand Down Expand Up @@ -82,22 +84,26 @@ func (service *LinuxTunDeviceManager) Stop() {
func (service *LinuxTunDeviceManager) createTunDevice(device tunDevice) (err error) {
err = service.createDeviceNode()
if err != nil {
return err
return errors.Wrap(err, "failed to create device node")
}

exists, err := service.deviceExists(device)
if err != nil {
return err
return errors.Wrap(err, "failed to check if device exists")
}

used, err := service.deviceUsed(device)
if err != nil {
return
var used bool

if exists {
used, err = service.deviceUsed(device)
if err != nil {
return errors.Wrap(err, "failed to check device used status")
}
}

if exists && !used {
log.Info(tunLogPrefix, device.Name+" device already exists, but not used, attempting to use it")
return
return nil
} else if used {
return log.Error("failed to get free tunnel device")
}
Expand All @@ -121,7 +127,7 @@ func (service *LinuxTunDeviceManager) deviceExists(device tunDevice) (exists boo
return false, err
}

func (service *LinuxTunDeviceManager) deviceUsed(device tunDevice) (exists bool, err error) {
func (service *LinuxTunDeviceManager) deviceUsed(device tunDevice) (used bool, err error) {
contents, err := ioutil.ReadFile("/sys/class/net/" + device.Name + "/carrier")
if err != nil {
return false, err
Expand Down

0 comments on commit d870ba8

Please sign in to comment.