diff --git a/ifupdown2/nlmanager/nlpacket.py b/ifupdown2/nlmanager/nlpacket.py index 28c43c2..94463d0 100644 --- a/ifupdown2/nlmanager/nlpacket.py +++ b/ifupdown2/nlmanager/nlpacket.py @@ -535,11 +535,18 @@ class AttributeMACAddress(Attribute): self.decode_length_type(data) try: - if self.length == 10: + # MAC Address + if self.length == 8: + self.value = IPv4Address(unpack('>L', self.data[4:])[0]) + self.value_int = int(self.value) + self.value_int_str = str(self.value_int) + # GRE interface uses a 4-byte IP address for this attribute + elif self.length == 10: (data1, data2) = unpack(self.PACK, self.data[4:]) self.value = mac_int_to_str(data1 << 16 | data2) - elif self.length == 8: - self.value = IPv4Address(unpack('>L', self.data[4:])[0]) + # GREv6 interface uses a 16-byte IP address for this attribute + elif self.length == 20: + self.value = IPv6Address(unpack('>L', self.data[16:])[0]) self.value_int = int(self.value) self.value_int_str = str(self.value_int) else: