Jason A. Donenfeld
d669c78c43
device: combine debug and info log levels into 'verbose'
...
There are very few cases, if any, in which a user only wants one of
these levels, so combine it into a single level.
While we're at it, reduce indirection on the loggers by using an empty
function rather than a nil function pointer. It's not like we have
retpolines anyway, and we were always calling through a function with a
branch prior, so this seems like a net gain.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-01-26 23:05:48 +01:00
Josh Bleecher Snyder
7139279cd0
device: change logging interface to use functions
...
This commit overhauls wireguard-go's logging.
The primary, motivating change is to use a function instead
of a *log.Logger as the basic unit of logging.
Using functions provides a lot more flexibility for
people to bring their own logging system.
It also introduces logging helper methods on Device.
These reduce line noise at the call site.
They also allow for log functions to be nil;
when nil, instead of generating a log line and throwing it away,
we don't bother generating it at all.
This spares allocation and pointless work.
This is a breaking change, although the fix required
of clients is fairly straightforward.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
2021-01-26 22:40:20 +01:00
Jason A. Donenfeld
da9d300cf8
main: now that we're upstreamed, relax Linux warning
...
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-05-02 02:20:47 -06:00
Jason A. Donenfeld
db0aa39b76
global: update header comments and modules
...
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-05-02 02:08:26 -06:00
Jason A. Donenfeld
84b5a4d83d
main: simplify warnings
2019-09-08 10:56:00 -05:00
Matt Layher
1f48971a80
tun: remove TUN prefix from types to reduce stutter elsewhere
...
Signed-off-by: Matt Layher <mdlayher@gmail.com>
2019-06-14 18:35:57 +02:00
Jason A. Donenfeld
3bf41b06ae
global: regroup all imports
2019-05-14 09:09:52 +02:00
Jason A. Donenfeld
d9078fe772
main: revise warnings
2019-04-19 07:48:09 +09:00
Jason A. Donenfeld
69f0fe67b6
global: begin modularization
2019-03-03 05:00:40 +01:00
Jason A. Donenfeld
366cbd11a4
tun: use netpoll instead of rwcancel
...
The new sysconn function of Go 1.12 makes this possible:
package main
import "log"
import "os"
import "unsafe"
import "time"
import "syscall"
import "sync"
import "golang.org/x/sys/unix"
func main() {
fd, err := os.OpenFile("/dev/net/tun", os.O_RDWR, 0)
if err != nil {
log.Fatal(err)
}
var ifr [unix.IFNAMSIZ + 64]byte
copy(ifr[:], []byte("cheese"))
*(*uint16)(unsafe.Pointer(&ifr[unix.IFNAMSIZ])) = unix.IFF_TUN
var errno syscall.Errno
s, _ := fd.SyscallConn()
s.Control(func(fd uintptr) {
_, _, errno = unix.Syscall(
unix.SYS_IOCTL,
fd,
uintptr(unix.TUNSETIFF),
uintptr(unsafe.Pointer(&ifr[0])),
)
})
if errno != 0 {
log.Fatal(errno)
}
b := [4]byte{}
wait := sync.WaitGroup{}
wait.Add(1)
go func() {
_, err := fd.Read(b[:])
log.Print("Read errored: ", err)
wait.Done()
}()
time.Sleep(time.Second)
log.Print("Closing")
err = fd.Close()
if err != nil {
log.Print("Close errored: " , err)
}
wait.Wait()
log.Print("Exiting")
}
2019-02-27 01:52:55 +01:00
Jason A. Donenfeld
42c6d0e261
Change package path
2019-02-18 05:11:39 +01:00
Jason A. Donenfeld
6f76edd045
Import windows scafolding
2019-02-05 12:59:42 +01:00
Jason A. Donenfeld
dff424baf8
Update copyright
2019-02-05 12:59:42 +01:00
Jason A. Donenfeld
5be541d147
global: fix up copyright headers
2018-09-16 18:49:19 +02:00
Jason A. Donenfeld
955e89839f
Print version number in log
2018-05-30 01:09:18 +02:00
Jason A. Donenfeld
2f2eca8947
Catch EINTR
2018-05-24 15:36:29 +02:00
Jason A. Donenfeld
4a9de3218e
Add undocumented --version flag
2018-05-24 02:25:36 +02:00
Jason A. Donenfeld
588b9f01ae
Adopt GOPATH
...
GOPATH is annoying, but the Go community pushing me to adopt it is even
more annoying.
2018-05-23 05:18:13 +02:00
Jason A. Donenfeld
0a63188afa
Move tun to subpackage
2018-05-23 03:58:27 +02:00
Filippo Valsorda
bc05eb1c3c
Minor main.go signal fixes
...
* Buffer the signal channel as it's non-blocking on the sender side
* Notify on SIGTERM instead of the uncatchable SIGKILL
License: MIT
Signed-off-by: Filippo Valsorda <valsorda@google.com>
2018-05-21 20:22:12 +02:00
Mathias Hall-Andersen
38accea986
Add copyright headers
2018-05-19 02:40:22 +02:00
Jason A. Donenfeld
115a2e3946
Use /dev/null as place holder
2018-05-14 20:06:33 +02:00
Jason A. Donenfeld
a62c770a99
Ugly hack to suppress warning on backgrounded process
2018-05-14 16:01:58 +02:00
Jason A. Donenfeld
795f76cffa
Netlink sockets can't be shutdown
2018-05-14 14:08:03 +02:00
Jason A. Donenfeld
355e9bd619
Clean more
2018-05-14 12:27:29 +02:00
Jason A. Donenfeld
c1e097d6d0
Optional logging even in background
2018-05-14 03:38:06 +02:00
Jason A. Donenfeld
233f079a94
Rewrite timers and related state machines
2018-05-10 16:08:03 +02:00
Mathias Hall-Andersen
abe2651ad5
Removed remaining signals from peer
...
1. Removed remaining signals from peer struct
2. Made needAnotherKeepalive local
3. Removed environment check from warning text (annoying when debugging)
2018-05-05 22:07:58 +02:00
Mathias Hall-Andersen
7a83f2565a
Removed old signals
2018-05-05 04:15:07 +02:00
Jason A. Donenfeld
e1de0f229a
uapi: use kqueue for sock deletion on darwin
2018-05-04 21:51:55 +02:00
Jason A. Donenfeld
de7ecc571b
tun: allow darwin to auto assign names
2018-05-04 21:11:51 +02:00
Jason A. Donenfeld
0f322f83f5
warning: put into main
2018-05-04 19:50:08 +02:00
Jason A. Donenfeld
a040786645
global: Add SPDX tags and copyright header
...
Mathias should probably add his copyright headers to each file too.
2018-05-03 15:06:25 +02:00
Jason A. Donenfeld
209dd22ea0
Daemonize with environment variable
2018-05-03 14:55:10 +02:00
Jason A. Donenfeld
258a9223b9
Start to dust off Darwin
2018-05-03 14:55:10 +02:00
Jason A. Donenfeld
676bb91434
We can determine the interface name ourselves
2018-04-19 16:00:20 +02:00
Mathias Hall-Andersen
a0f54cbe5a
Align with go library layout
2018-02-04 16:08:26 +01:00