@@ -0,0 +1,30 @@
+package libbox
+
+import (
+ "net"
+ "syscall"
+)
+// copied from net.linkFlags
+func linkFlags(rawFlags uint32) net.Flags {
+ var f net.Flags
+ if rawFlags&syscall.IFF_UP != 0 {
+ f |= net.FlagUp
+ }
+ if rawFlags&syscall.IFF_RUNNING != 0 {
+ f |= net.FlagRunning
+ if rawFlags&syscall.IFF_BROADCAST != 0 {
+ f |= net.FlagBroadcast
+ if rawFlags&syscall.IFF_LOOPBACK != 0 {
+ f |= net.FlagLoopback
+ if rawFlags&syscall.IFF_POINTOPOINT != 0 {
+ f |= net.FlagPointToPoint
+ if rawFlags&syscall.IFF_MULTICAST != 0 {
+ f |= net.FlagMulticast
+ return f
+}
@@ -0,0 +1,11 @@
+//go:build !linux
+ panic("stub!")
@@ -38,6 +38,7 @@ type NetworkInterface struct {
MTU int32
Name string
Addresses StringIterator
+ Flags int32
}
type WIFIState struct {
@@ -181,6 +181,7 @@ func (w *platformInterfaceWrapper) Interfaces() ([]control.Interface, error) {
MTU: int(netInterface.MTU),
Name: netInterface.Name,
Addresses: common.Map(iteratorToArray[string](netInterface.Addresses), netip.MustParsePrefix),
+ Flags: linkFlags(uint32(netInterface.Flags)),
})
return interfaces, nil