| 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[:] | 
 | +			} | 
 |  		} | 
 |  	} | 
 |   |