blob: cedc9b0661dbf775bfe40b1a47ba33d4e5925f7a [file] [log] [blame]
Lorenz Brund8290c82023-03-06 18:31:49 +01001diff --git a/link.go b/link.go
2index 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.
16diff --git a/link_linux.go b/link_linux.go
17index 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