Feat: support IPv6 routing for Wireguard
This commit is contained in:
33
internal/wireguard/ipv6.go
Normal file
33
internal/wireguard/ipv6.go
Normal file
@@ -0,0 +1,33 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user