54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
|
/* SPDX-License-Identifier: MIT
|
||
|
*
|
||
|
* Copyright (C) 2017-2023 WireGuard LLC. All Rights Reserved.
|
||
|
*/
|
||
|
|
||
|
package tun
|
||
|
|
||
|
import (
|
||
|
"net/netip"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
type Event int
|
||
|
|
||
|
const (
|
||
|
EventUp = 1 << iota
|
||
|
EventDown
|
||
|
EventMTUUpdate
|
||
|
)
|
||
|
|
||
|
type Device interface {
|
||
|
// File returns the file descriptor of the device.
|
||
|
File() *os.File
|
||
|
|
||
|
// Read one packet from the Device (without any additional headers).
|
||
|
// On a successful read it returns the number of bytes read.
|
||
|
Read(b []byte) (int, error)
|
||
|
|
||
|
// Write one packet to the device (without any additional headers).
|
||
|
// On a successful write it returns the number of bytes written.
|
||
|
Write(b []byte) (int, error)
|
||
|
|
||
|
// Set MTU on the device.
|
||
|
SetMTU(int) error
|
||
|
|
||
|
// MTU returns the MTU of the Device.
|
||
|
MTU() (int, error)
|
||
|
|
||
|
// Name returns the current name of the Device.
|
||
|
Name() (string, error)
|
||
|
|
||
|
// Set IP Addresses for the device.
|
||
|
SetIPAddresses(addresses []netip.Prefix) error
|
||
|
|
||
|
// Get IP Addresses for the device.
|
||
|
GetIPAddresses() ([]netip.Prefix, error)
|
||
|
|
||
|
// Events returns a channel of type Event, which is fed Device events.
|
||
|
Events() <-chan Event
|
||
|
|
||
|
// Close stops the Device and closes the Event channel.
|
||
|
Close() error
|
||
|
}
|