func (c *Client) SetWakeOnLAN(wol WakeOnLAN) error {
	return c.c.SetWakeOnLAN(wol)
}
SetWakeOnLAN sets the WakeOnLAN parameters for the Interface in wol.

Setting Wake-on-LAN parameters requires elevated privileges and if the caller
does not have permission, an error compatible with errors.Is(err,
os.ErrPermission) will be returned.

If the requested device does not exist or is not supported by the ethtool
interface, an error compatible with errors.Is(err, os.ErrNotExist) will be
returned.
package ethtool
import "fmt"
var (
	_ error = &Error{}
	_ interface{ Unwrap() error } = &Error{}
)
type Error struct {
	Message string
	Err     error
}
func (e *Error) Error() string {
	return e.Err.Error()
}
func (e *Error) Unwrap() error { return e.Err }
type Client struct {
	c *client
}
func New() (*Client, error) {
	c, err := newClient()
	if err != nil {
		return nil, err
	}
	return &Client{c: c}, nil
}
type Interface struct {
	Index int
	Name  string
}
type LinkInfo struct {
	Interface Interface
	Port      Port
}
type Port int
const (
	TwistedPair  Port = 0x00
	AUI          Port = 0x01
	MII          Port = 0x02
	Fibre        Port = 0x03
	BNC          Port = 0x04
	DirectAttach Port = 0x05
	None         Port = 0xef
	Other        Port = 0xff
)
func (c *Client) LinkInfos() ([]*LinkInfo, error) {
	return c.c.LinkInfos()
}
func (c *Client) LinkInfo(ifi Interface) (*LinkInfo, error) {
	return c.c.LinkInfo(ifi)
}
type LinkMode struct {
	Interface     Interface
	SpeedMegabits int
	Ours, Peer    []AdvertisedLinkMode
	Duplex        Duplex
}
type Duplex int
const (
	Half    Duplex = 0x00
	Full    Duplex = 0x01
	Unknown Duplex = 0xff
)
type AdvertisedLinkMode struct {
	Index int
	Name  string
}
func (c *Client) LinkModes() ([]*LinkMode, error) {
	return c.c.LinkModes()
}
func (c *Client) LinkMode(ifi Interface) (*LinkMode, error) {
	return c.c.LinkMode(ifi)
}
type LinkState struct {
	Interface Interface
	Link      bool
}
func (c *Client) LinkStates() ([]*LinkState, error) {
	return c.c.LinkStates()
}
func (c *Client) LinkState(ifi Interface) (*LinkState, error) {
	return c.c.LinkState(ifi)
}
type WakeOnLAN struct {
	Interface Interface
	Modes     WOLMode
}
type WOLMode int
const (
	PHY         WOLMode = 1 << 0
	Unicast     WOLMode = 1 << 1
	Multicast   WOLMode = 1 << 2
	Broadcast   WOLMode = 1 << 3
	ARP         WOLMode = 1 << 4
	Magic       WOLMode = 1 << 5
	MagicSecure WOLMode = 1 << 6
	Filter      WOLMode = 1 << 7
)
func (m WOLMode) String() string {
	names := []string{
		"PHY",
		"Unicast",
		"Multicast",
		"Broadcast",
		"ARP",
		"Magic",
		"MagicSecure",
		"Filter",
	}
	var s string
	left := uint(m)
	for i, name := range names {
		if m&(1<<uint(i)) != 0 {
			if s != "" {
				s += "|"
			}
			s += name
			left ^= (1 << uint(i))
		}
	}
	if s == "" && left == 0 {
		s = "0"
	}
	if left > 0 {
		if s != "" {
			s += "|"
		}
		s += fmt.Sprintf("%#x", left)
	}
	return s
}
func (c *Client) WakeOnLANs() ([]*WakeOnLAN, error) {
	return c.c.WakeOnLANs()
}
func (c *Client) WakeOnLAN(ifi Interface) (*WakeOnLAN, error) {
	return c.c.WakeOnLAN(ifi)
}