// 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 } }