|
@@ -44,17 +44,29 @@ func writeBroadcasts(ctx context.Context, inbox <-chan []byte, port int) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
- addrs, err := net.InterfaceAddrs()
|
|
|
+ intfs, err := net.Interfaces()
|
|
|
if err != nil {
|
|
|
l.Debugln(err)
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
var dsts []net.IP
|
|
|
- for _, addr := range addrs {
|
|
|
- if iaddr, ok := addr.(*net.IPNet); ok && len(iaddr.IP) >= 4 && iaddr.IP.IsGlobalUnicast() && iaddr.IP.To4() != nil {
|
|
|
- baddr := bcast(iaddr)
|
|
|
- dsts = append(dsts, baddr.IP)
|
|
|
+ for _, intf := range intfs {
|
|
|
+ if intf.Flags&net.FlagBroadcast == 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ addrs, err := intf.Addrs()
|
|
|
+ if err != nil {
|
|
|
+ l.Debugln(err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, addr := range addrs {
|
|
|
+ if iaddr, ok := addr.(*net.IPNet); ok && len(iaddr.IP) >= 4 && iaddr.IP.IsGlobalUnicast() && iaddr.IP.To4() != nil {
|
|
|
+ baddr := bcast(iaddr)
|
|
|
+ dsts = append(dsts, baddr.IP)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|