various arm fixes (mostly nowarn_align)
authormarkus <markus@omap.(none)>
Thu, 3 Feb 2011 12:06:45 +0000 (06:06 -0600)
committermarkus <markus@omap.(none)>
Thu, 3 Feb 2011 12:06:45 +0000 (06:06 -0600)
lib/bmf/src/Address.c
lib/bmf/src/Bmf.c
lib/bmf/src/NetworkInterfaces.c
lib/bmf/src/Packet.c
lib/bmf/src/PacketHistory.c
lib/p2pd/src/NetworkInterfaces.c
lib/p2pd/src/Packet.c
lib/p2pd/src/PacketHistory.c
lib/p2pd/src/p2pd.c
src/ipcalc.h

index 855f3ba..ed3ac95 100644 (file)
@@ -125,7 +125,7 @@ int IsOlsrOrBmfPacket(unsigned char* ipPacket)
    * OLSR-Autodetect probe packets are UDP - port 51698 */
 
   /* Check if UDP */
-  ipHeader = (struct ip*) ipPacket;
+  ipHeader = (struct ip*) ARM_NOWARN_ALIGN(ipPacket);
   if (ipHeader->ip_p != SOL_UDP)
   {
     /* Not UDP */
@@ -141,7 +141,7 @@ int IsOlsrOrBmfPacket(unsigned char* ipPacket)
   }
 
   /* Go into the UDP header and check port number */
-  udpHeader = (struct udphdr*) (ipPacket + ipHeaderLen);
+  udpHeader = (struct udphdr*) ARM_NOWARN_ALIGN((ipPacket + ipHeaderLen));
   destPort = ntohs(udpHeader->dest);
 
   if (destPort == olsr_cnf->olsrport || destPort == BMF_ENCAP_PORT || destPort == 51698)
index ab66bba..c53512e 100644 (file)
@@ -987,14 +987,14 @@ BMF_handle_listeningFd(int skfd, void *data, unsigned int flags __attribute__ ((
   } /* if (pktAddr.sll_pkttype ...) */
 
   /* Check if the received packet is UDP - BMF port */
-  ipHeader = (struct ip*)rxBuffer;
+  ipHeader = (struct ip*) ARM_NOWARN_ALIGN(rxBuffer);
   if (ipHeader->ip_p != SOL_UDP)
   {
     /* Not UDP */
     return;
   }
 
-  udpHeader = (struct udphdr*)(rxBuffer + GetIpHeaderLength(rxBuffer));
+  udpHeader = (struct udphdr*) ARM_NOWARN_ALIGN((rxBuffer + GetIpHeaderLength(rxBuffer)));
   destPort = ntohs(udpHeader->dest);
   if (destPort != BMF_ENCAP_PORT)
   {
index 92763e9..674b65b 100644 (file)
@@ -1241,17 +1241,17 @@ static int CreateLocalEtherTunTap(void)
     EtherTunTapIp = ETHERTUNTAPDEFAULTIP;
   }
 
-  ((struct sockaddr_in*)&ifreq.ifr_addr)->sin_addr.s_addr = htonl(EtherTunTapIp);
+  ((struct sockaddr_in*) ARM_NOWARN_ALIGN(&ifreq.ifr_addr))->sin_addr.s_addr = htonl(EtherTunTapIp);
   ioctlres = ioctl(ioctlSkfd, SIOCSIFADDR, &ifreq);
   if (ioctlres >= 0)
   {
     /* Set net mask */
-    ((struct sockaddr_in*)&ifreq.ifr_netmask)->sin_addr.s_addr = htonl(EtherTunTapIpMask);
+    ((struct sockaddr_in*) ARM_NOWARN_ALIGN(&ifreq.ifr_netmask))->sin_addr.s_addr = htonl(EtherTunTapIpMask);
     ioctlres = ioctl(ioctlSkfd, SIOCSIFNETMASK, &ifreq);
     if (ioctlres >= 0)
     {
       /* Set broadcast IP */
-      ((struct sockaddr_in*)&ifreq.ifr_broadaddr)->sin_addr.s_addr = htonl(EtherTunTapIpBroadcast);
+      ((struct sockaddr_in*) ARM_NOWARN_ALIGN(&ifreq.ifr_broadaddr))->sin_addr.s_addr = htonl(EtherTunTapIpBroadcast);
       ioctlres = ioctl(ioctlSkfd, SIOCSIFBRDADDR, &ifreq);
       if (ioctlres >= 0)
       {
@@ -1456,7 +1456,7 @@ static int CreateInterface(
     else
     {
       /* Downcast to correct sockaddr subtype */
-      newIf->intAddr.v4 = ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr;
+      newIf->intAddr.v4 = ((struct sockaddr_in *) ARM_NOWARN_ALIGN(&ifr.ifr_addr))->sin_addr;
     }
 
     /* For a non-OLSR interface, retrieve the IP broadcast address ourselves */
@@ -1472,7 +1472,7 @@ static int CreateInterface(
     else
     {
       /* Downcast to correct sockaddr subtype */
-      newIf->broadAddr.v4 = ((struct sockaddr_in *)&ifr.ifr_broadaddr)->sin_addr;
+      newIf->broadAddr.v4 = ((struct sockaddr_in *) ARM_NOWARN_ALIGN(&ifr.ifr_broadaddr))->sin_addr;
     }
   }
 
@@ -1585,7 +1585,7 @@ int CreateBmfNetworkInterfaces(struct interface* skipThisIntf)
     }
 
     /* ...find the OLSR interface structure, if any */
-    ipAddr.v4 =  ((struct sockaddr_in*)&ifr->ifr_addr)->sin_addr;
+    ipAddr.v4 =  ((struct sockaddr_in*) ARM_NOWARN_ALIGN(&ifr->ifr_addr))->sin_addr;
     olsrIntf = if_ifwithaddr(&ipAddr);
 
     if (skipThisIntf != NULL && olsrIntf == skipThisIntf)
@@ -1824,7 +1824,7 @@ void CheckAndUpdateLocalBroadcast(unsigned char* ipPacket, union olsr_ip_addr* b
 
   assert(ipPacket != NULL && broadAddr != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
   destIp.v4.s_addr = iph->daddr;
   if (! IsMulticast(&destIp))
   {
@@ -1852,7 +1852,7 @@ void CheckAndUpdateLocalBroadcast(unsigned char* ipPacket, union olsr_ip_addr* b
       /* Re-calculate UDP/IP checksum for new destination */
 
       int ipHeaderLen = GetIpHeaderLength(ipPacket);
-      struct udphdr* udph = (struct udphdr*) (ipPacket + ipHeaderLen);
+      struct udphdr* udph = (struct udphdr*) ARM_NOWARN_ALIGN((ipPacket + ipHeaderLen));
 
       /* RFC 1624, Eq. 3: HC' = ~(~HC - m + m') */
 
@@ -1890,13 +1890,13 @@ void AddMulticastRoute(void)
 
   memset(&kernel_route, 0, sizeof(struct rtentry));
 
-  ((struct sockaddr_in*)&kernel_route.rt_dst)->sin_family = AF_INET;
-  ((struct sockaddr_in*)&kernel_route.rt_gateway)->sin_family = AF_INET;
-  ((struct sockaddr_in*)&kernel_route.rt_genmask)->sin_family = AF_INET;
+  ((struct sockaddr_in*) ARM_NOWARN_ALIGN(&kernel_route.rt_dst))->sin_family = AF_INET;
+  ((struct sockaddr_in*) ARM_NOWARN_ALIGN(&kernel_route.rt_gateway))->sin_family = AF_INET;
+  ((struct sockaddr_in*) ARM_NOWARN_ALIGN(&kernel_route.rt_genmask))->sin_family = AF_INET;
 
   /* 224.0.0.0/4 */
-  ((struct sockaddr_in *)&kernel_route.rt_dst)->sin_addr.s_addr = htonl(0xE0000000);
-  ((struct sockaddr_in *)&kernel_route.rt_genmask)->sin_addr.s_addr = htonl(0xF0000000);
+  ((struct sockaddr_in *) ARM_NOWARN_ALIGN(&kernel_route.rt_dst))->sin_addr.s_addr = htonl(0xE0000000);
+  ((struct sockaddr_in *) ARM_NOWARN_ALIGN(&kernel_route.rt_genmask))->sin_addr.s_addr = htonl(0xF0000000);
 
   kernel_route.rt_metric = 0;
   kernel_route.rt_flags = RTF_UP;
@@ -1935,13 +1935,13 @@ void DeleteMulticastRoute(void)
 
     memset(&kernel_route, 0, sizeof(struct rtentry));
 
-    ((struct sockaddr_in*)&kernel_route.rt_dst)->sin_family = AF_INET;
-    ((struct sockaddr_in*)&kernel_route.rt_gateway)->sin_family = AF_INET;
-    ((struct sockaddr_in*)&kernel_route.rt_genmask)->sin_family = AF_INET;
+    ((struct sockaddr_in*) ARM_NOWARN_ALIGN(&kernel_route.rt_dst))->sin_family = AF_INET;
+    ((struct sockaddr_in*) ARM_NOWARN_ALIGN(&kernel_route.rt_gateway))->sin_family = AF_INET;
+    ((struct sockaddr_in*) ARM_NOWARN_ALIGN(&kernel_route.rt_genmask))->sin_family = AF_INET;
 
     /* 224.0.0.0/4 */
-    ((struct sockaddr_in *)&kernel_route.rt_dst)->sin_addr.s_addr = htonl(0xE0000000);
-    ((struct sockaddr_in *)&kernel_route.rt_genmask)->sin_addr.s_addr = htonl(0xF0000000);
+    ((struct sockaddr_in *) ARM_NOWARN_ALIGN(&kernel_route.rt_dst))->sin_addr.s_addr = htonl(0xE0000000);
+    ((struct sockaddr_in *) ARM_NOWARN_ALIGN(&kernel_route.rt_genmask))->sin_addr.s_addr = htonl(0xF0000000);
 
     kernel_route.rt_metric = 0;
     kernel_route.rt_flags = RTF_UP;
index cb302a6..8abbcbd 100644 (file)
@@ -37,6 +37,7 @@
  *
  * ------------------------------------------------------------------------- */
 
+#include "olsr.h"
 #include "Packet.h"
 
 /* System includes */
@@ -61,7 +62,7 @@ int IsIpFragment(unsigned char* ipPacket)
 
   assert(ipPacket != NULL);
 
-  iph = (struct ip*) ipPacket;
+  iph = (struct ip*) ARM_NOWARN_ALIGN(ipPacket);
   if ((ntohs(iph->ip_off) & IP_OFFMASK) != 0)
   {
     return 1;
@@ -84,7 +85,7 @@ u_int16_t GetIpTotalLength(unsigned char* ipPacket)
 
   assert(ipPacket != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
   return ntohs(iph->tot_len);
 } /* GetIpTotalLength */
 
@@ -102,7 +103,7 @@ unsigned int GetIpHeaderLength(unsigned char* ipPacket)
 
   assert(ipPacket != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
   return iph->ihl << 2;
 } /* GetIpHeaderLength */
 
@@ -121,7 +122,7 @@ u_int8_t GetTtl(unsigned char* ipPacket)
 
   assert(ipPacket != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
   return iph->ttl;
 } /* GetTtl */
 
@@ -140,7 +141,7 @@ void SaveTtlAndChecksum(unsigned char* ipPacket, struct TSaveTtl* sttl)
 
   assert(ipPacket != NULL && sttl != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
   sttl->ttl = iph->ttl;
   sttl->check = ntohs(iph->check);
 } /* SaveTtlAndChecksum */
@@ -161,7 +162,7 @@ void RestoreTtlAndChecksum(unsigned char* ipPacket, struct TSaveTtl* sttl)
 
   assert(ipPacket != NULL && sttl != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
   iph->ttl = sttl->ttl;
   iph->check = htons(sttl->check);
 } /* RestoreTtlAndChecksum */
@@ -183,7 +184,7 @@ void DecreaseTtlAndUpdateHeaderChecksum(unsigned char* ipPacket)
 
   assert(ipPacket != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
 
   iph->ttl--; /* decrement ttl */
   sum = ntohs(iph->check) + 0x100; /* increment checksum high byte */
@@ -200,7 +201,7 @@ void DecreaseTtlAndUpdateHeaderChecksum(unsigned char* ipPacket)
  * ------------------------------------------------------------------------- */
 struct ip* GetIpHeader(unsigned char* encapsulationUdpData)
 {
-  return (struct ip*)(encapsulationUdpData + ENCAP_HDR_LEN);
+  return (struct ip*) ARM_NOWARN_ALIGN((encapsulationUdpData + ENCAP_HDR_LEN));
 } /* GetIpHeader */
 
 /* -------------------------------------------------------------------------
index a1150da..5eac01c 100644 (file)
@@ -180,7 +180,7 @@ u_int32_t PacketCrc32(unsigned char* ipPacket, ssize_t len)
 
   SaveTtlAndChecksum(ipPacket, &sttl);
 
-  ipHeader = (struct ip*)ipPacket;
+  ipHeader = (struct ip*) ARM_NOWARN_ALIGN(ipPacket);
   ipHeader->ip_ttl = 0xFF; /* fixed value of TTL for CRC-32 calculation */
   ipHeader->ip_sum = 0x5A5A; /* fixed value of IP header checksum for CRC-32 calculation */
 
index c767b16..99206ce 100644 (file)
@@ -244,7 +244,7 @@ CreateInterface(const char *ifName, struct interface *olsrIntf)
       newIf->intAddr.v4.s_addr = inet_addr("0.0.0.0");
     } else {
       /* Downcast to correct sockaddr subtype */
-      newIf->intAddr.v4 = ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr;
+      newIf->intAddr.v4 = ((struct sockaddr_in *) ARM_NOWARN_ALIGN(&ifr.ifr_addr))->sin_addr;
     }
 
     /* For a non-OLSR interface, retrieve the IP broadcast address ourselves */
@@ -257,7 +257,7 @@ CreateInterface(const char *ifName, struct interface *olsrIntf)
       newIf->broadAddr.v4.s_addr = inet_addr("0.0.0.0");
     } else {
       /* Downcast to correct sockaddr subtype */
-      newIf->broadAddr.v4 = ((struct sockaddr_in *)&ifr.ifr_broadaddr)->sin_addr;
+      newIf->broadAddr.v4 = ((struct sockaddr_in *) ARM_NOWARN_ALIGN(&ifr.ifr_broadaddr))->sin_addr;
     }
   }
 
@@ -364,7 +364,7 @@ CreateNonOlsrNetworkInterfaces(struct interface *skipThisIntf)
     //}
 
     /* ...find the OLSR interface structure, if any */
-    ipAddr.v4 = ((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr;
+    ipAddr.v4 = ((struct sockaddr_in *) ARM_NOWARN_ALIGN(&ifr->ifr_addr))->sin_addr;
     olsrIntf = if_ifwithaddr(&ipAddr);
 
     if (skipThisIntf != NULL && olsrIntf == skipThisIntf) {
index 7612b61..30e2051 100644 (file)
@@ -38,6 +38,7 @@
  *
  */
 
+#include "olsr.h"
 #include "Packet.h"
 
 /* System includes */
@@ -62,7 +63,7 @@ int IsIpFragment(unsigned char* ipPacket)
 
   assert(ipPacket != NULL);
 
-  iph = (struct ip*) ipPacket;
+  iph = (struct ip*) ARM_NOWARN_ALIGN(ipPacket);
   if ((ntohs(iph->ip_off) & IP_OFFMASK) != 0)
   {
     return 1;
@@ -85,7 +86,7 @@ u_int16_t GetIpTotalLength(unsigned char* ipPacket)
 
   assert(ipPacket != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
   return ntohs(iph->tot_len);
 } /* GetIpTotalLength */
 
@@ -176,7 +177,7 @@ GetIpHeaderLength(unsigned char *ipPacket)
 
   assert(ipPacket != NULL);
 
-  iph = (struct iphdr *)ipPacket;
+  iph = (struct iphdr *) ARM_NOWARN_ALIGN(ipPacket);
   return iph->ihl << 2;
 }                               /* GetIpHeaderLength */
 
@@ -209,7 +210,7 @@ u_int8_t GetTtl(unsigned char* ipPacket)
 
   assert(ipPacket != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
   return iph->ttl;
 } /* GetTtl */
 
@@ -228,7 +229,7 @@ void SaveTtlAndChecksum(unsigned char* ipPacket, struct TSaveTtl* sttl)
 
   assert(ipPacket != NULL && sttl != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
   sttl->ttl = iph->ttl;
   sttl->check = ntohs(iph->check);
 } /* SaveTtlAndChecksum */
@@ -249,7 +250,7 @@ void RestoreTtlAndChecksum(unsigned char* ipPacket, struct TSaveTtl* sttl)
 
   assert(ipPacket != NULL && sttl != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
   iph->ttl = sttl->ttl;
   iph->check = htons(sttl->check);
 } /* RestoreTtlAndChecksum */
@@ -271,7 +272,7 @@ void DecreaseTtlAndUpdateHeaderChecksum(unsigned char* ipPacket)
 
   assert(ipPacket != NULL);
 
-  iph = (struct iphdr*) ipPacket;
+  iph = (struct iphdr*) ARM_NOWARN_ALIGN(ipPacket);
 
   iph->ttl--; /* decrement ttl */
   sum = ntohs(iph->check) + 0x100; /* increment checksum high byte */
index 295e6a4..53a1864 100644 (file)
@@ -180,7 +180,7 @@ u_int32_t PacketCrc32(unsigned char* ipPacket, ssize_t len)
 
   SaveTtlAndChecksum(ipPacket, &sttl);
 
-  ipHeader = (struct ip*)ipPacket;
+  ipHeader = (struct ip*) ARM_NOWARN_ALIGN(ipPacket);
   ipHeader->ip_ttl = 0xFF; /* fixed value of TTL for CRC-32 calculation */
   ipHeader->ip_sum = 0x5A5A; /* fixed value of IP header checksum for CRC-32 calculation */
 
index adac99c..1638ffa 100644 (file)
@@ -123,8 +123,8 @@ PacketReceivedFromOLSR(unsigned char *encapsulationUdpData, int len)
   int destPort;
   bool isInList = false;
 
-  ipHeader = (struct ip *)encapsulationUdpData;
-  ip6Header = (struct ip6_hdr *)encapsulationUdpData;
+  ipHeader = (struct ip *) ARM_NOWARN_ALIGN(encapsulationUdpData);
+  ip6Header = (struct ip6_hdr *) ARM_NOWARN_ALIGN(encapsulationUdpData);
   //OLSR_DEBUG(LOG_PLUGINS, "P2PD PLUGIN got packet from OLSR message\n");
 
   if (check_and_mark_recent_packet(encapsulationUdpData, len))
@@ -196,8 +196,8 @@ PacketReceivedFromOLSR(unsigned char *encapsulationUdpData, int len)
       if (olsr_cnf->ip_version == AF_INET) {
         // Determine the IP address and the port from the header information
         if (ipHeader->ip_p == SOL_UDP && !IsIpv4Fragment(ipHeader)) {
-          udpHeader = (struct udphdr*)(encapsulationUdpData +
-                                       GetIpHeaderLength(encapsulationUdpData));
+          udpHeader = (struct udphdr*) ARM_NOWARN_ALIGN((encapsulationUdpData +
+                                       GetIpHeaderLength(encapsulationUdpData)));
           destAddr.v4.s_addr = ipHeader->ip_dst.s_addr;
           destPort = htons(udpHeader->dest);
           isInList = InUdpDestPortList(AF_INET, &destAddr, destPort);
@@ -216,7 +216,7 @@ PacketReceivedFromOLSR(unsigned char *encapsulationUdpData, int len)
         }
       } else /* (olsr_cnf->ip_version == AF_INET6) */ {
         if (ip6Header->ip6_nxt == SOL_UDP && !IsIpv6Fragment(ip6Header)) {
-          udpHeader = (struct udphdr*)(encapsulationUdpData + 40);
+          udpHeader = (struct udphdr*) ARM_NOWARN_ALIGN((encapsulationUdpData + 40));
           memcpy(&destAddr.v6, &ip6Header->ip6_dst, sizeof(struct in6_addr));
           destPort = htons(udpHeader->dest);
           isInList = InUdpDestPortList(AF_INET6, &destAddr, destPort);
@@ -627,7 +627,7 @@ P2pdPacketCaptured(unsigned char *encapsulationUdpData, int nBytes)
 
   if ((encapsulationUdpData[0] & 0xf0) == 0x40) {       //IPV4
 
-    ipHeader = (struct ip *)encapsulationUdpData;
+    ipHeader = (struct ip *) ARM_NOWARN_ALIGN(encapsulationUdpData);
 
     dst.v4 = ipHeader->ip_dst;
 
@@ -651,8 +651,8 @@ P2pdPacketCaptured(unsigned char *encapsulationUdpData, int nBytes)
     if (check_and_mark_recent_packet(encapsulationUdpData, nBytes))
       return;
 
-    udpHeader = (struct udphdr *)(encapsulationUdpData +
-                                  GetIpHeaderLength(encapsulationUdpData));
+    udpHeader = (struct udphdr *) ARM_NOWARN_ALIGN((encapsulationUdpData +
+                                  GetIpHeaderLength(encapsulationUdpData)));
     destPort = ntohs(udpHeader->dest);
 
     if (!InUdpDestPortList(AF_INET, &dst, destPort)) {
@@ -666,7 +666,7 @@ P2pdPacketCaptured(unsigned char *encapsulationUdpData, int nBytes)
   }                            //END IPV4
   else if ((encapsulationUdpData[0] & 0xf0) == 0x60) {  //IPv6
 
-    ipHeader6 = (struct ip6_hdr *)encapsulationUdpData;
+    ipHeader6 = (struct ip6_hdr *) ARM_NOWARN_ALIGN(encapsulationUdpData);
 
     memcpy(&dst.v6, &ipHeader6->ip6_dst, sizeof(struct in6_addr));
 
@@ -693,7 +693,7 @@ P2pdPacketCaptured(unsigned char *encapsulationUdpData, int nBytes)
     if (check_and_mark_recent_packet(encapsulationUdpData, nBytes))
       return;
 
-    udpHeader = (struct udphdr *)(encapsulationUdpData + 40);
+    udpHeader = (struct udphdr *) ARM_NOWARN_ALIGN((encapsulationUdpData + 40));
     destPort = ntohs(udpHeader->dest);
 
     if (!InUdpDestPortList(AF_INET6, &dst, destPort)) {
index ea23d5f..e6c6e7b 100644 (file)
@@ -157,7 +157,7 @@ olsr_string_to_prefix(int ipversion, struct olsr_ip_prefix *dst, const char *buf
 static INLINE const char *
 sockaddr4_to_string(struct ipaddr_str *const buf, const struct sockaddr *const addr)
 {
-  const struct sockaddr_in *addr4 = (const struct sockaddr_in *)addr;
+  const struct sockaddr_in *addr4 = (const struct sockaddr_in *)CONST_ARM_NOWARN_ALIGN(addr);
   return ip4_to_string(buf, addr4->sin_addr);
 }