|  | diff --git a/link.go b/link.go | 
|  | index 8e6b09e..fcbecfc 100644 | 
|  | --- a/link.go | 
|  | +++ b/link.go | 
|  | @@ -50,7 +50,9 @@ type LinkAttrs struct { | 
|  | GROMaxSize   uint32 | 
|  | Vfs          []VfInfo // virtual functions available on link | 
|  | Group        uint32 | 
|  | -	Slave        LinkSlave | 
|  | + | 
|  | +	PermHardwareAddr net.HardwareAddr | 
|  | +	Slave            LinkSlave | 
|  | } | 
|  |  | 
|  | // LinkSlave represents a slave device. | 
|  | diff --git a/link_linux.go b/link_linux.go | 
|  | index cc80fb6..8681c75 100644 | 
|  | --- a/link_linux.go | 
|  | +++ b/link_linux.go | 
|  | @@ -2018,6 +2018,16 @@ func LinkDeserialize(hdr *unix.NlMsghdr, m []byte) (Link, error) { | 
|  | base.NumRxQueues = int(native.Uint32(attr.Value[0:4])) | 
|  | case unix.IFLA_GROUP: | 
|  | base.Group = native.Uint32(attr.Value[0:4]) | 
|  | +		case unix.IFLA_PERM_ADDRESS: | 
|  | +			var nonzero bool | 
|  | +			for _, b := range attr.Value { | 
|  | +				if b != 0 { | 
|  | +					nonzero = true | 
|  | +				} | 
|  | +			} | 
|  | +			if nonzero { | 
|  | +				base.PermHardwareAddr = attr.Value[:] | 
|  | +			} | 
|  | } | 
|  | } | 
|  |  |