| // Copyright 2019 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package poll_test | |
| import ( | |
| "errors" | |
| "internal/poll" | |
| "os" | |
| "syscall" | |
| ) | |
| func badStateFile() (*os.File, error) { | |
| if os.Getuid() != 0 { | |
| return nil, errors.New("must be root") | |
| } | |
| // Using OpenFile for a device file is an easy way to make a | |
| // file attached to the runtime-integrated network poller and | |
| // configured in halfway. | |
| return os.OpenFile("/dev/net/tun", os.O_RDWR, 0) | |
| } | |
| func isBadStateFileError(err error) (string, bool) { | |
| switch err { | |
| case poll.ErrNotPollable, syscall.EBADFD: | |
| return "", true | |
| default: | |
| return "not pollable or file in bad state error", false | |
| } | |
| } | |