Lorenz Brun | d8290c8 | 2023-03-06 18:31:49 +0100 | [diff] [blame] | 1 | diff --git a/link.go b/link.go |
| 2 | index 8e6b09e..fcbecfc 100644 |
| 3 | --- a/link.go |
| 4 | +++ b/link.go |
| 5 | @@ -50,7 +50,9 @@ type LinkAttrs struct { |
| 6 | GROMaxSize uint32 |
| 7 | Vfs []VfInfo // virtual functions available on link |
| 8 | Group uint32 |
| 9 | - Slave LinkSlave |
| 10 | + |
| 11 | + PermHardwareAddr net.HardwareAddr |
| 12 | + Slave LinkSlave |
| 13 | } |
| 14 | |
| 15 | // LinkSlave represents a slave device. |
| 16 | diff --git a/link_linux.go b/link_linux.go |
| 17 | index cc80fb6..8681c75 100644 |
| 18 | --- a/link_linux.go |
| 19 | +++ b/link_linux.go |
| 20 | @@ -2018,6 +2018,16 @@ func LinkDeserialize(hdr *unix.NlMsghdr, m []byte) (Link, error) { |
| 21 | base.NumRxQueues = int(native.Uint32(attr.Value[0:4])) |
| 22 | case unix.IFLA_GROUP: |
| 23 | base.Group = native.Uint32(attr.Value[0:4]) |
| 24 | + case unix.IFLA_PERM_ADDRESS: |
| 25 | + var nonzero bool |
| 26 | + for _, b := range attr.Value { |
| 27 | + if b != 0 { |
| 28 | + nonzero = true |
| 29 | + } |
| 30 | + } |
| 31 | + if nonzero { |
| 32 | + base.PermHardwareAddr = attr.Value[:] |
| 33 | + } |
| 34 | } |
| 35 | } |
| 36 | |