virtual-vxlan/tun/tun.go

54 lines
1.2 KiB
Go
Raw Normal View History

2025-01-05 22:22:24 -06:00
/* 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
}