Browse Source

More bug fixing for AARCH64.

Adam Ierymenko 6 years ago
parent
commit
92f199ab98
1 changed files with 6 additions and 11 deletions
  1. 6 11
      osdep/LinuxNetLink.cpp

+ 6 - 11
osdep/LinuxNetLink.cpp

@@ -362,7 +362,7 @@ void LinuxNetLink::_routeDeleted(struct nlmsghdr *nlp)
 
 void LinuxNetLink::_linkAdded(struct nlmsghdr *nlp)
 {
-	char mac_bin[6] = {0};
+	unsigned char mac_bin[6] = {0};
 	unsigned int mtu = 0;
 	char ifname[IFNAMSIZ] = {0};
 
@@ -370,17 +370,16 @@ void LinuxNetLink::_linkAdded(struct nlmsghdr *nlp)
 	struct rtattr *rtap = (struct rtattr *)IFLA_RTA(ifip);
 	int ifil = RTM_PAYLOAD(nlp);
 
-	const char *ptr;
-	unsigned char *ptr2;
+	const char *ptr = (const char *)0;
 	for(;RTA_OK(rtap, ifil);rtap=RTA_NEXT(rtap, ifil))
 	{
 		switch(rtap->rta_type) {
 		case IFLA_ADDRESS:
-			ptr2 = (unsigned char*)RTA_DATA(rtap);
+			ptr = (const char *)RTA_DATA(rtap);
 			memcpy(mac_bin, ptr, 6);
 			break;
 		case IFLA_IFNAME:
-			ptr = (const char*)RTA_DATA(rtap);
+			ptr = (const char *)RTA_DATA(rtap);
 			memcpy(ifname, ptr, strlen(ptr));
 			break;
 		case IFLA_MTU:
@@ -394,7 +393,7 @@ void LinuxNetLink::_linkAdded(struct nlmsghdr *nlp)
 		struct iface_entry &entry = _interfaces[ifip->ifi_index];
 		entry.index = ifip->ifi_index;
 		memcpy(entry.ifacename, ifname, sizeof(ifname));
-		memcpy(entry.mac, mac, sizeof(mac));
+		snprintf(entry.mac,sizeof(entry.mac),"%.02x:%.02x:%.02x:%.02x:%.02x:%.02x",(unsigned int)mac_bin[0],(unsigned int)mac_bin[1],(unsigned int)mac_bin[2],(unsigned int)mac_bin[3],(unsigned int)mac_bin[4],(unsigned int)mac_bin[5]);
 		memcpy(entry.mac_bin, mac_bin, 6);
 		entry.mtu = mtu;
 	}
@@ -409,14 +408,10 @@ void LinuxNetLink::_linkDeleted(struct nlmsghdr *nlp)
 	struct rtattr *rtap = (struct rtattr *)IFLA_RTA(ifip);
 	int ifil = RTM_PAYLOAD(nlp);
 
-	const char *ptr;
-	unsigned char *ptr2;
+	const char *ptr = (const char *)0;
 	for(;RTA_OK(rtap, ifil);rtap=RTA_NEXT(rtap, ifil))
 	{
 		switch(rtap->rta_type) {
-		case IFLA_ADDRESS:
-			ptr2 = (unsigned char*)RTA_DATA(rtap);
-			break;
 		case IFLA_IFNAME:
 			ptr = (const char*)RTA_DATA(rtap);
 			memcpy(ifname, ptr, strlen(ptr));