34 lines
624 B
Go
34 lines
624 B
Go
|
|
package wireguard
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"fmt"
|
||
|
|
|
||
|
|
"github.com/qdm12/gluetun/internal/netlink"
|
||
|
|
)
|
||
|
|
|
||
|
|
var (
|
||
|
|
errLinkList = errors.New("cannot list links")
|
||
|
|
errRouteList = errors.New("cannot list routes")
|
||
|
|
)
|
||
|
|
|
||
|
|
func (w *Wireguard) isIPv6Supported() (supported bool, err error) {
|
||
|
|
links, err := w.netlink.LinkList()
|
||
|
|
if err != nil {
|
||
|
|
return false, fmt.Errorf("%w: %s", errLinkList, err)
|
||
|
|
}
|
||
|
|
|
||
|
|
for _, link := range links {
|
||
|
|
routes, err := w.netlink.RouteList(link, netlink.FAMILY_V6)
|
||
|
|
if err != nil {
|
||
|
|
return false, fmt.Errorf("%w: %s", errRouteList, err)
|
||
|
|
}
|
||
|
|
|
||
|
|
if len(routes) > 0 {
|
||
|
|
return true, nil
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return false, nil
|
||
|
|
}
|