Additional Cleanup (DRY)

This commit is contained in:
Matthew Ellison 2017-05-23 10:01:22 -04:00
parent f9df1e79f2
commit 6a94337a59
No known key found for this signature in database
GPG key ID: A815A44BDC8DD409

View file

@ -39,23 +39,8 @@ func newTAP(config Config) (ifce *Interface, err error) {
return nil, err return nil, err
} }
// Set Device Owner if err = setDeviceOptions(file.Fd(), config); err != nil {
if config.Owner >= 0 { return nil, err
if err = ioctl(file.Fd(), syscall.TUNSETOWNER, uintptr(config.Owner)); err != nil {
return
}
}
// Set Device Group
if config.Group >= 0 {
if err = ioctl(file.Fd(), syscall.TUNSETGROUP, uintptr(config.Group)); err != nil {
return
}
}
// Set/Clear Persist Device Flag
if err = setPersistence(file.Fd(), config.Persist); err != nil {
return
} }
ifce = &Interface{isTAP: true, ReadWriteCloser: file, name: name} ifce = &Interface{isTAP: true, ReadWriteCloser: file, name: name}
@ -72,23 +57,8 @@ func newTUN(config Config) (ifce *Interface, err error) {
return nil, err return nil, err
} }
// Set Device Owner if err = setDeviceOptions(file.Fd(), config); err != nil {
if config.Owner >= 0 { return nil, err
if err = ioctl(file.Fd(), syscall.TUNSETOWNER, uintptr(config.Owner)); err != nil {
return
}
}
// Set Device Group
if config.Group >= 0 {
if err = ioctl(file.Fd(), syscall.TUNSETGROUP, uintptr(config.Group)); err != nil {
return
}
}
// Set/Clear Persist Device Flag
if err = setPersistence(file.Fd(), config.Persist); err != nil {
return
} }
ifce = &Interface{isTAP: false, ReadWriteCloser: file, name: name} ifce = &Interface{isTAP: false, ReadWriteCloser: file, name: name}
@ -109,10 +79,27 @@ func createInterface(fd uintptr, ifName string, flags uint16) (createdIFName str
return return
} }
func setPersistence(fd uintptr, enabled bool) error { func setDeviceOptions(fd uintptr, config Config) (err error) {
// Set Device Owner
if config.Owner >= 0 {
if err = ioctl(fd, syscall.TUNSETOWNER, uintptr(config.Owner)); err != nil {
return
}
}
// Set Device Group
if config.Group >= 0 {
if err = ioctl(fd, syscall.TUNSETGROUP, uintptr(config.Group)); err != nil {
return
}
}
// Set/Clear Persist Device Flag
value := 0 value := 0
if enabled { if config.Persist {
value = 1 value = 1
} }
return ioctl(fd, syscall.TUNSETPERSIST, uintptr(value)) return ioctl(fd, syscall.TUNSETPERSIST, uintptr(value))
} }