IPACM: support 8994 linux Android build

changes are needed to make IPACM compile in
Android platform as 8994 for example

Change-Id: Ic3aa95cb962a5ec7cae1a622d9355afad7986a3c
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
diff --git a/ipacm/inc/IPACM_ConntrackListener.h b/ipacm/inc/IPACM_ConntrackListener.h
index b4c3f28..8ae53e8 100644
--- a/ipacm/inc/IPACM_ConntrackListener.h
+++ b/ipacm/inc/IPACM_ConntrackListener.h
@@ -34,6 +34,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <fcntl.h>
 
 #include <arpa/inet.h>
 #include <netinet/in.h>
diff --git a/ipacm/inc/IPACM_Listener.h b/ipacm/inc/IPACM_Listener.h
index 02a082e..9d774fe 100644
--- a/ipacm/inc/IPACM_Listener.h
+++ b/ipacm/inc/IPACM_Listener.h
@@ -47,9 +47,8 @@
 class IPACM_Listener
 {
 public:
-	virtual void event_callback(ipa_cm_event_id event,
-															void *data) = 0;
+	virtual void event_callback(ipa_cm_event_id event,															void *data) = 0;
+	virtual ~IPACM_Listener(void) {};
 };
 
 #endif /* IPACM_LISTENER_H */
-
diff --git a/ipacm/inc/IPACM_Wan.h b/ipacm/inc/IPACM_Wan.h
index 357163f..f92cc8a 100644
--- a/ipacm/inc/IPACM_Wan.h
+++ b/ipacm/inc/IPACM_Wan.h
@@ -63,7 +63,7 @@
 	static bool wan_up_v6;
 
 	IPACM_Wan(int iface_index, bool is_sta_mode);
-	~IPACM_Wan();
+	virtual ~IPACM_Wan();
 
 	static bool isWanUP()
 	{
diff --git a/ipacm/inc/IPACM_Wlan.h b/ipacm/inc/IPACM_Wlan.h
index fbb7ddb..909ded0 100644
--- a/ipacm/inc/IPACM_Wlan.h
+++ b/ipacm/inc/IPACM_Wlan.h
@@ -82,12 +82,11 @@
 public:
 
 	IPACM_Wlan(int iface_index);
-	~IPACM_Wlan(void);
+	virtual ~IPACM_Wlan(void);
 
 	static int total_num_wifi_clients;
 
-	void event_callback(ipa_cm_event_id event,
-											void *data);
+	void event_callback(ipa_cm_event_id event, void *data);
 
 private:
 	int wlan_client_len;
diff --git a/ipacm/src/IPACM_ConntrackClient.cpp b/ipacm/src/IPACM_ConntrackClient.cpp
index b747e0c..e97bc59 100644
--- a/ipacm/src/IPACM_ConntrackClient.cpp
+++ b/ipacm/src/IPACM_ConntrackClient.cpp
@@ -26,7 +26,6 @@
 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
-#include <iostream>
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -285,9 +284,7 @@
 			{
 				IPACMDBG("ignore connections destinated to interface %s\n", item->ifr_name);
 				IPACM_ConntrackClient::iptodot("with ipv4 address:", filter_ipv4.addr);
-				nfct_filter_set_logic(filter,
-															NFCT_FILTER_DST_IPV4,
-															NFCT_FILTER_LOGIC_NEGATIVE);
+				nfct_filter_set_logic(filter, NFCT_FILTER_DST_IPV4, NFCT_FILTER_LOGIC_NEGATIVE);
 
 				nfct_filter_add_attr(filter, NFCT_FILTER_DST_IPV4, &filter_ipv4);
 
@@ -504,8 +501,7 @@
 	}
 
 	/* Attach the filter to net filter handler */
-	ret = nfct_filter_attach(nfct_fd(pClient->tcp_hdl),
-													 pClient->tcp_filter);
+	ret = nfct_filter_attach(nfct_fd(pClient->tcp_hdl), pClient->tcp_filter);
 	if(ret == -1)
 	{
 		IPACMDBG("unable to attach TCP filter\n");
@@ -515,7 +511,7 @@
 	/* Register callback with netfilter handler */
 	IPACMDBG("tcp handle:%p, fd:%d\n", pClient->tcp_hdl, nfct_fd(pClient->tcp_hdl));
 	nfct_callback_register(pClient->tcp_hdl, 
-				(NFCT_T_UPDATE | NFCT_T_DESTROY), 
+			(nf_conntrack_msg_type)	(NFCT_T_UPDATE | NFCT_T_DESTROY), 
 						IPAConntrackEventCB, NULL);
 
 	/* Block to catch events from net filter connection track */
@@ -601,7 +597,7 @@
 	/* Register callback with netfilter handler */
 	IPACMDBG("udp handle:%p, fd:%d\n", pClient->udp_hdl, nfct_fd(pClient->udp_hdl));
 	nfct_callback_register(pClient->udp_hdl,
-												 (nf_conntrack_msg_type)(NFCT_T_NEW | NFCT_T_DESTROY),
+				(nf_conntrack_msg_type)(NFCT_T_NEW | NFCT_T_DESTROY),
 												 IPAConntrackEventCB,
 												 NULL);
 
diff --git a/ipacm/src/IPACM_ConntrackListener.cpp b/ipacm/src/IPACM_ConntrackListener.cpp
index 3b62bd4..4f4fc58 100644
--- a/ipacm/src/IPACM_ConntrackListener.cpp
+++ b/ipacm/src/IPACM_ConntrackListener.cpp
@@ -29,11 +29,13 @@
 
 #include <sys/ioctl.h>
 #include <net/if.h>
+#include <unistd.h>
 
 #include "IPACM_ConntrackListener.h"
 #include "IPACM_ConntrackClient.h"
 #include "IPACM_EvtDispatcher.h"
 
+
 IPACM_ConntrackListener::IPACM_ConntrackListener()
 {
 	 IPACMDBG("\n");
@@ -335,34 +337,9 @@
 
 			isCTReg = true;
 	 }
-
-	 //pthread_join(tcp_thread, NULL);
-	 //pthread_join(udp_thread, NULL);
-	 //pthread_join(udpcto_thread, NULL);
-
 	 return 0;
 
 error:
-	 if(tcp_thread)
-	 {
-			pthread_cancel(tcp_thread);
-	 }
-
-	 if(udp_thread)
-	 {
-			pthread_cancel(tcp_thread);
-	 }
-
-	 if(udpcto_thread)
-	 {
-			pthread_cancel(udpcto_thread);
-	 }
-
-	 if(to_monitor_thread)
-	 {
-		 pthread_cancel(to_monitor_thread);
-	 }
-
 	 return -1;
 }
 
diff --git a/ipacm/src/IPACM_Iface.cpp b/ipacm/src/IPACM_Iface.cpp
index af31028..d1cdebc 100644
--- a/ipacm/src/IPACM_Iface.cpp
+++ b/ipacm/src/IPACM_Iface.cpp
@@ -39,7 +39,6 @@
 */
 #include <fcntl.h>
 #include <sys/ioctl.h>
-#include <ifaddrs.h>
 
 #include <IPACM_Netlink.h>
 #include <IPACM_Iface.h>
diff --git a/ipacm/src/IPACM_Netlink.cpp b/ipacm/src/IPACM_Netlink.cpp
index ecb61b7..1635bdc 100644
--- a/ipacm/src/IPACM_Netlink.cpp
+++ b/ipacm/src/IPACM_Netlink.cpp
@@ -47,13 +47,70 @@
 #include "IPACM_EvtDispatcher.h"
 #include "IPACM_Log.h"
 
-char dev_pre_name[IF_NAME_LEN];
-struct sockaddr_storage  dst_pre_addr;
-
 int ipa_get_if_name(char *if_name, int if_index);
 int find_mask(int ip_v4_last, int *mask_value);
 
+#ifdef FEATURE_IPA_ANDROID
+
+#define IPACM_NL_COPY_ADDR( event_info, element )                                        \
+        memcpy( &event_info->attr_info.element.__data,                                   \
+                RTA_DATA(rtah),                                                          \
+                sizeof(event_info->attr_info.element.__data) );
+
+#define IPACM_EVENT_COPY_ADDR_v6( event_data, element)                                   \
+        memcpy( event_data, element.__data, sizeof(event_data));
+
+#define IPACM_EVENT_COPY_ADDR_v4( event_data, element)                                   \
+        memcpy( &event_data, element.__data, sizeof(event_data));
+
+#define IPACM_NL_REPORT_ADDR( prefix, addr )                                             \
+        if( AF_INET6 == (addr).ss_family ) {                                             \
+          IPACM_LOG_IPV6_ADDR( prefix, addr.__data);                                    \
+        } else {                                                                         \
+          IPACM_LOG_IPV4_ADDR( prefix, (*(unsigned int*)&(addr).__data) );               \
+        }
+
+#else/* defined(FEATURE_IPA_ANDROID) */
+
+#define IPACM_NL_COPY_ADDR( event_info, element )                                        \
+        memcpy( &event_info->attr_info.element.__ss_padding,                             \
+                RTA_DATA(rtah),                                                          \
+                sizeof(event_info->attr_info.element.__ss_padding) );
+
+#define IPACM_EVENT_COPY_ADDR_v6( event_data, element)                                   \
+        memcpy( event_data, element.__ss_padding, sizeof(event_data));
+
+#define IPACM_EVENT_COPY_ADDR_v4( event_data, element)                                   \
+        memcpy( &event_data, element.__ss_padding, sizeof(event_data));
+
+#define IPACM_NL_REPORT_ADDR( prefix, addr )                                             \
+        if( AF_INET6 == (addr).ss_family ) {                                             \
+          IPACM_LOG_IPV6_ADDR( prefix, addr.__ss_padding);                               \
+        } else {                                                                         \
+          IPACM_LOG_IPV4_ADDR( prefix, (*(unsigned int*)&(addr).__ss_padding) );         \
+        }
+#endif /* defined(FEATURE_IPA_ANDROID)*/
+
 #define NDA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ndmsg))))
+#define IPACM_LOG_IPV6_ADDR(prefix, ip_addr)                            \
+        IPACMDBG(prefix);                                               \
+		IPACMDBG(" IPV6 Address %02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x\n", \
+                  (int)ip_addr[0],  (int)ip_addr[1],                                                        \
+                  (int)ip_addr[2],  (int)ip_addr[3],                                                        \
+                  (int)ip_addr[4],  (int)ip_addr[5],                                                        \
+                  (int)ip_addr[6],  (int)ip_addr[7],                                                        \
+                  (int)ip_addr[8],  (int)ip_addr[9],                                                        \
+                  (int)ip_addr[10], (int)ip_addr[11],                                                       \
+                  (int)ip_addr[12], (int)ip_addr[13],                                                       \
+                  (int)ip_addr[14], (int)ip_addr[15]);
+
+#define IPACM_LOG_IPV4_ADDR(prefix, ip_addr)                            \
+        IPACMDBG(prefix);                                               \
+        IPACMDBG(" IPV4 Address %d.%d.%d.%d\n",                         \
+                    (unsigned char)(ip_addr),                               \
+                    (unsigned char)(ip_addr >> 8),                          \
+                    (unsigned char)(ip_addr >> 16) ,                        \
+                    (unsigned char)(ip_addr >> 24));
 
 /* Opens a netlink socket*/
 static int ipa_nl_open_socket
@@ -118,25 +175,23 @@
 /* Add fd to fdmap array and store read handler function ptr (up to MAX_NUM_OF_FD).*/
 static int ipa_nl_addfd_map
 (
-	 ipa_nl_sk_fd_set_info_t *fd_set,
+	 ipa_nl_sk_fd_set_info_t *info,
 	 int fd,
 	 ipa_sock_thrd_fd_read_f read_f
 	 )
 {
-	if(fd_set->num_fd < MAX_NUM_OF_FD)
+	if(info->num_fd < MAX_NUM_OF_FD)
 	{
-		FD_SET(fd, &(fd_set->fdset));
+		FD_SET(fd, &info->fdset);
 
 		/* Add fd to fdmap array and store read handler function ptr */
-		fd_set->sk_fds[fd_set->num_fd].sk_fd = fd;
-		fd_set->sk_fds[fd_set->num_fd].read_func = read_f;
+		info->sk_fds[info->num_fd].sk_fd = fd;
+		info->sk_fds[info->num_fd].read_func = read_f;
 
 		/* Increment number of fds stored in fdmap */
-		fd_set->num_fd++;
-		if(fd_set->max_fd < fd)
-		{
-			fd_set->max_fd = fd;
-		}
+		info->num_fd++;
+		if(info->max_fd < fd)
+			info->max_fd = fd;
 	}
 	else
 	{
@@ -395,9 +450,7 @@
 
 		case IFA_ADDRESS:
 			addr_info->attr_info.prefix_addr.ss_family = addr_info->metainfo.ifa_family;
-			memcpy(&addr_info->attr_info.prefix_addr.__ss_padding,
-						 RTA_DATA(rtah),
-						 sizeof(addr_info->attr_info.prefix_addr.__ss_padding));
+			IPACM_NL_COPY_ADDR( addr_info, prefix_addr );
 			addr_info->attr_info.param_mask |= IPA_NLA_PARAM_PREFIXADDR;
 			break;
 
@@ -439,9 +492,7 @@
 
 		case NDA_DST:
 			neigh_info->attr_info.local_addr.ss_family = neigh_info->metainfo.ndm_family;
-			memcpy(&neigh_info->attr_info.local_addr.__ss_padding,
-						 RTA_DATA(rtah),
-						 sizeof(neigh_info->attr_info.local_addr.__ss_padding));
+			IPACM_NL_COPY_ADDR( neigh_info, local_addr );
 			break;
 
 		case NDA_LLADDR:
@@ -486,40 +537,20 @@
 		{
 
 		case RTA_DST:
-			if((route_info->metainfo.rtm_type == RTN_UNICAST) &&
-				 (route_info->metainfo.rtm_protocol == RTPROT_BOOT) &&
-				 (route_info->metainfo.rtm_scope == RT_SCOPE_LINK) &&
-				 (route_info->metainfo.rtm_table == RT_TABLE_MAIN))
-			{
-				route_info->metainfo.rtm_type = RTN_BROADCAST;
-				memcpy(&route_info->attr_info.dst_addr.__ss_padding,
-							 dst_pre_addr.__ss_padding,
-							 sizeof(route_info->attr_info.dst_addr.__ss_padding));
-				route_info->attr_info.param_mask |= IPA_RTA_PARAM_DST;
-			}
-			else
-			{
 				route_info->attr_info.dst_addr.ss_family = route_info->metainfo.rtm_family;
-				memcpy(&route_info->attr_info.dst_addr.__ss_padding,
-							 RTA_DATA(rtah),
-							 sizeof(route_info->attr_info.dst_addr.__ss_padding));
+				IPACM_NL_COPY_ADDR( route_info, dst_addr );
 				route_info->attr_info.param_mask |= IPA_RTA_PARAM_DST;
-			}
 			break;
 
 		case RTA_SRC:
 			route_info->attr_info.src_addr.ss_family = route_info->metainfo.rtm_family;
-			memcpy(&route_info->attr_info.src_addr.__ss_padding,
-						 RTA_DATA(rtah),
-						 sizeof(route_info->attr_info.src_addr.__ss_padding));
+			IPACM_NL_COPY_ADDR( route_info, src_addr );
 			route_info->attr_info.param_mask |= IPA_RTA_PARAM_SRC;
 			break;
 
 		case RTA_GATEWAY:
 			route_info->attr_info.gateway_addr.ss_family = route_info->metainfo.rtm_family;
-			memcpy(&route_info->attr_info.gateway_addr.__ss_padding,
-						 RTA_DATA(rtah),
-						 sizeof(route_info->attr_info.gateway_addr.__ss_padding));
+			IPACM_NL_COPY_ADDR( route_info, gateway_addr );
 			route_info->attr_info.param_mask |= IPA_RTA_PARAM_GATEWAY;
 			break;
 
@@ -747,20 +778,8 @@
 				if(AF_INET6 == msg_ptr->nl_addr_info.attr_info.prefix_addr.ss_family)
 				{
 					data_addr->iptype = IPA_IP_v6;
-					IPACMDBG("IFA_ADDRESS:IPV6 %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding)[0])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding)[0] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding)[0] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding)[0] >> 48)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding)[1])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding)[1] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding)[1] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding)[1] >> 48)));
-
-					memcpy(data_addr->ipv6_addr,
-								 msg_ptr->nl_addr_info.attr_info.prefix_addr.__ss_padding,
-								 sizeof(data_addr->ipv6_addr));
-
+					IPACM_NL_REPORT_ADDR( "IFA_ADDRESS:", msg_ptr->nl_addr_info.attr_info.prefix_addr );
+					IPACM_EVENT_COPY_ADDR_v6( data_addr->ipv6_addr, msg_ptr->nl_addr_info.attr_info.prefix_addr);
 					data_addr->ipv6_addr[0] = ntohl(data_addr->ipv6_addr[0]);
 					data_addr->ipv6_addr[1] = ntohl(data_addr->ipv6_addr[1]);
 					data_addr->ipv6_addr[2] = ntohl(data_addr->ipv6_addr[2]);
@@ -769,15 +788,8 @@
 				else
 				{
 					data_addr->iptype = IPA_IP_v4;
-					IPACMDBG("IFA_ADDRESS:IPV4 %d.%d.%d.%d\n",
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding >> 8),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding >> 16),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_addr_info.attr_info.prefix_addr).__ss_padding >> 24));
-					
-					memcpy(&data_addr->ipv4_addr,
-								 msg_ptr->nl_addr_info.attr_info.prefix_addr.__ss_padding,
-								 sizeof(data_addr->ipv4_addr));
+					IPACM_NL_REPORT_ADDR( "IFA_ADDRESS:", msg_ptr->nl_addr_info.attr_info.prefix_addr );
+					IPACM_EVENT_COPY_ADDR_v4( data_addr->ipv4_addr, msg_ptr->nl_addr_info.attr_info.prefix_addr);
 					data_addr->ipv4_addr = ntohl(data_addr->ipv4_addr);
          
 				}
@@ -814,104 +826,12 @@
 
 			IPACMDBG("In case RTM_NEWROUTE\n");
 			IPACMDBG("rtm_type: %d\n", msg_ptr->nl_route_info.metainfo.rtm_type);
-			IPACMDBG("ss_padding: %d\n", ((unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 24)));
 			IPACMDBG("rtm_type: %d\n", msg_ptr->nl_route_info.metainfo.rtm_type);
 			IPACMDBG("protocol: %d\n", msg_ptr->nl_route_info.metainfo.rtm_protocol);
 			IPACMDBG("rtm_scope: %d\n", msg_ptr->nl_route_info.metainfo.rtm_scope);
-      IPACMDBG("rtm_table: %d\n", msg_ptr->nl_route_info.metainfo.rtm_table);
+			IPACMDBG("rtm_table: %d\n", msg_ptr->nl_route_info.metainfo.rtm_table);
 			IPACMDBG("rtm_family: %d\n", msg_ptr->nl_route_info.metainfo.rtm_family);
 			IPACMDBG("param_mask: 0x%x\n", msg_ptr->nl_route_info.attr_info.param_mask);
-
-			/* ipv4 interface route and its subnet mask	*/
-			if((msg_ptr->nl_route_info.metainfo.rtm_type == RTN_BROADCAST) && 
-				 ((unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 24)) != 0)
-			{
-				if(IPACM_SUCCESS != 
-					 find_mask((unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 24), &mask_value))
-				{
-					IPACMERR("Failed to decode rtm_addroute message\n");
-				}
-				else
-				{
-					IPACMDBG("\n GOT useful RTM_NEWROUTE event\n");
-
-					/* take care of subnet mask */
-					if(msg_ptr->nl_route_info.attr_info.param_mask & IPA_RTA_PARAM_DST)
-					{
-						IPACMDBG("DST_ADDRESS:IPV4 %d.%d.%d.0\n",
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 8),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 16));
-						IPACMDBG("MASK:IPV4 255.255.255.%d\n", mask_value);
-						ret_val = ipa_get_if_name(dev_name, msg_ptr->nl_route_info.attr_info.oif_index);
-						if(ret_val != IPACM_SUCCESS)
-						{
-							IPACMERR("Error while getting interface name");
-						}
-						IPACMDBG("RTA_OIF, output Interface %s \n", dev_name);
-						memcpy(&dst_pre_addr.__ss_padding,
-									 msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-									 sizeof(dst_pre_addr.__ss_padding));
-						memcpy(&dev_pre_name,
-									 dev_name,
-									 sizeof(dev_pre_name));
-						IPACMDBG("save pre_DST_ADDRESS:IPV4 %d.%d.%d.%d %s\n",
-										 (unsigned char)(*(unsigned int *)&(dst_pre_addr).__ss_padding),
-										 (unsigned char)(*(unsigned int *)&(dst_pre_addr).__ss_padding >> 8),
-										 (unsigned char)(*(unsigned int *)&(dst_pre_addr).__ss_padding >> 16),
-										 (unsigned char)(*(unsigned int *)&(dst_pre_addr).__ss_padding >> 24), dev_pre_name);
-					}
-
-					data_addr = (ipacm_event_data_addr *)malloc(sizeof(ipacm_event_data_addr));
-					if(data_addr == NULL)
-					{
-						IPACMERR("unable to allocate memory for event data_addr\n");
-						return IPACM_FAILURE;
-					}
-
-					if(msg_ptr->nl_route_info.attr_info.param_mask & IPA_RTA_PARAM_PRIORITY)
-					{
-						IPACMDBG("route add -net %d.%d.%d.0 netmask 255.255.255.%d dev %s  metric %d \n",
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 8),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 16),
-										 mask_value,
-										 dev_pre_name,
-										 msg_ptr->nl_route_info.attr_info.priority);
-					}
-					else
-					{
-						IPACMDBG("route add -net %d.%d.%d.0 netmask 255.255.255.%d dev %s \n",
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 8),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 16),
-										 mask_value,
-										 dev_name);
-					}
-
-					memcpy(&if_ipv4_addr, msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-								 sizeof(if_ipv4_addr));
-					if_ipv4_addr = (if_ipv4_addr << 8) >> 8;
-					temp = (-1) << 8;
-					temp = temp | mask_value;
-
-					/* insert to command queue */
-					evt_data.event = IPA_ROUTE_ADD_EVENT;
-
-					data_addr->if_index = msg_ptr->nl_route_info.attr_info.oif_index;
-					data_addr->iptype = IPA_IP_v4;
-					data_addr->ipv4_addr = ntohl(if_ipv4_addr);
-					data_addr->ipv4_addr_mask = ntohl(if_ipipv4_addr_mask);
-
-					IPACMDBG("Posting IPA_ROUTE_ADD_EVENT with if index:%d, ipv4 address 0x%x\n",
-									 data_addr->if_index,
-									 data_addr->ipv4_addr);
-					evt_data.evt_data = data_addr;
-					IPACM_EvtDispatcher::PostEvt(&evt_data);
-					/* finish command queue */
-				}
-			}
-
 			
 			/* take care of route add default route & uniroute */
 			if((msg_ptr->nl_route_info.metainfo.rtm_type == RTN_UNICAST) && 
@@ -929,21 +849,11 @@
 						IPACMERR("Error while getting interface name\n");
 					}
 
-					IPACMDBG("route add -host %d.%d.%d.%d gw %d.%d.%d.%d dev %s\n",
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 8),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 16),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 24),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 8),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 16),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 24),
-									 dev_name
-									 );
-
+					IPACM_NL_REPORT_ADDR( "route add -host", msg_ptr->nl_route_info.attr_info.dst_addr );				 
+					IPACM_NL_REPORT_ADDR( "gw", msg_ptr->nl_route_info.attr_info.gateway_addr );				 
+					IPACMDBG("dev %s\n",dev_name );
 					/* insert to command queue */
-					memcpy(&if_ipv4_addr, msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-								 sizeof(if_ipv4_addr));
+					IPACM_EVENT_COPY_ADDR_v4( if_ipv4_addr, msg_ptr->nl_route_info.attr_info.dst_addr);
 					temp = (-1);
 
 					evt_data.event = IPA_ROUTE_ADD_EVENT;
@@ -997,18 +907,12 @@
 							IPACMDBG("ip -6 route add default dev %s\n", dev_name);
 						}
 
-						memcpy(data_addr->ipv6_addr,
-									 msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-									 sizeof(data_addr->ipv6_addr));
-
+						IPACM_EVENT_COPY_ADDR_v6( data_addr->ipv6_addr, msg_ptr->nl_route_info.attr_info.dst_addr);
 						data_addr->ipv6_addr[0] = ntohl(data_addr->ipv6_addr[0]);
 						data_addr->ipv6_addr[1] = ntohl(data_addr->ipv6_addr[1]);
 						data_addr->ipv6_addr[2] = ntohl(data_addr->ipv6_addr[2]);
 						data_addr->ipv6_addr[3] = ntohl(data_addr->ipv6_addr[3]);
-
-						memcpy(data_addr->ipv6_addr_mask, 
-									 msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-									 sizeof(data_addr->ipv6_addr_mask));
+						IPACM_EVENT_COPY_ADDR_v6( data_addr->ipv6_addr_mask, msg_ptr->nl_route_info.attr_info.dst_addr);
 
 						data_addr->ipv6_addr_mask[0] = ntohl(data_addr->ipv6_addr_mask[0]);
 						data_addr->ipv6_addr_mask[1] = ntohl(data_addr->ipv6_addr_mask[1]);
@@ -1028,17 +932,9 @@
 					}
 					else
 					{
-						IPACMDBG("route add default gw %d.%d.%d.%d dev %s dstIP: %d.%d.%d.%d\n",
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 8),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 16),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 24),
-										 dev_name,
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 8),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 16),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 24)
-										 );
+						IPACM_NL_REPORT_ADDR( "route add default gw", msg_ptr->nl_route_info.attr_info.gateway_addr );
+						IPACMDBG("dev %s", dev_name);
+						IPACM_NL_REPORT_ADDR( "dstIP:", msg_ptr->nl_route_info.attr_info.dst_addr );
 
 						/* insert to command queue */
 						data_addr = (ipacm_event_data_addr *)malloc(sizeof(ipacm_event_data_addr));
@@ -1048,10 +944,8 @@
 							return IPACM_FAILURE;
 						}
 
-						memcpy(&if_ipv4_addr, msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-									 sizeof(if_ipv4_addr));
-						memcpy(&if_ipipv4_addr_mask, msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-									 sizeof(if_ipipv4_addr_mask));
+						IPACM_EVENT_COPY_ADDR_v4( if_ipv4_addr, msg_ptr->nl_route_info.attr_info.dst_addr);			 
+						IPACM_EVENT_COPY_ADDR_v4( if_ipipv4_addr_mask, msg_ptr->nl_route_info.attr_info.dst_addr);			 
 
 						evt_data.event = IPA_ROUTE_ADD_EVENT;
 						data_addr->if_index = msg_ptr->nl_route_info.attr_info.oif_index;
@@ -1086,19 +980,12 @@
 
 				if(msg_ptr->nl_route_info.attr_info.param_mask & IPA_RTA_PARAM_DST)
 				{
-					IPACMDBG("Route ADD IPV6 DST: %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x/%d, metric %d, dev %s\n",
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[0])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[0] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[0] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[0] >> 48)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[1])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[1] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[1] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[1] >> 48)),
+					IPACM_NL_REPORT_ADDR( "Route ADD DST:", msg_ptr->nl_route_info.attr_info.dst_addr );
+					IPACMDBG("%d, metric %d, dev %s\n",
 									 msg_ptr->nl_route_info.metainfo.rtm_dst_len,
 									 msg_ptr->nl_route_info.attr_info.priority,
 									 dev_name);
-
+					
 					/* insert to command queue */
 					data_addr = (ipacm_event_data_addr *)malloc(sizeof(ipacm_event_data_addr));
 					if(data_addr == NULL)
@@ -1107,9 +994,7 @@
 						return IPACM_FAILURE;
 					}
 
-					memcpy(data_addr->ipv6_addr, 
-								 msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-								 sizeof(data_addr->ipv6_addr));
+					 IPACM_EVENT_COPY_ADDR_v6( data_addr->ipv6_addr, msg_ptr->nl_route_info.attr_info.dst_addr);
 
 					data_addr->ipv6_addr[0] = ntohl(data_addr->ipv6_addr[0]);
 					data_addr->ipv6_addr[1] = ntohl(data_addr->ipv6_addr[1]);
@@ -1155,18 +1040,11 @@
 				}
 				if(msg_ptr->nl_route_info.attr_info.param_mask & IPA_RTA_PARAM_GATEWAY)
 				{
-					IPACMDBG("Route ADD ::/0  Next Hop: %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x, metric %d, dev %s\n",
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding)[0])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding)[0] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding)[0] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding)[0] >> 48)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding)[1])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding)[1] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding)[1] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding)[1] >> 48)),
+					IPACM_NL_REPORT_ADDR( "Route ADD ::/0  Next Hop:", msg_ptr->nl_route_info.attr_info.gateway_addr );
+					IPACMDBG(" metric %d, dev %s\n",
 									 msg_ptr->nl_route_info.attr_info.priority,
 									 dev_name);
-
+					
 					/* insert to command queue */
 					data_addr = (ipacm_event_data_addr *)malloc(sizeof(ipacm_event_data_addr));
 					if(data_addr == NULL)
@@ -1175,16 +1053,14 @@
 						return IPACM_FAILURE;
 					}
 
-					memcpy(data_addr->ipv6_addr, msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-								 sizeof(data_addr->ipv6_addr));
+					IPACM_EVENT_COPY_ADDR_v6( data_addr->ipv6_addr, msg_ptr->nl_route_info.attr_info.dst_addr);
 
                     data_addr->ipv6_addr[0]=ntohl(data_addr->ipv6_addr[0]);								 
                     data_addr->ipv6_addr[1]=ntohl(data_addr->ipv6_addr[1]);								 
                     data_addr->ipv6_addr[2]=ntohl(data_addr->ipv6_addr[2]);								 
                     data_addr->ipv6_addr[3]=ntohl(data_addr->ipv6_addr[3]);								 
 
-					memcpy(data_addr->ipv6_addr_mask, msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-								 sizeof(data_addr->ipv6_addr_mask));
+					IPACM_EVENT_COPY_ADDR_v6( data_addr->ipv6_addr_mask, msg_ptr->nl_route_info.attr_info.dst_addr);
 
 					data_addr->ipv6_addr_mask[0]=ntohl(data_addr->ipv6_addr_mask[0]);								 
                     data_addr->ipv6_addr_mask[1]=ntohl(data_addr->ipv6_addr_mask[1]);								 
@@ -1210,78 +1086,6 @@
 				IPACMERR("Failed to decode rtm route message\n");
 				return IPACM_FAILURE;
 			}
-
-			if((msg_ptr->nl_route_info.metainfo.rtm_type == RTN_BROADCAST) && 
-				 ((unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 24)) != 0)
-			{
-				if(IPACM_SUCCESS != find_mask((unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 24), &mask_value))
-				{
-					IPACMERR("Failed to decode rtm_delroute message\n");
-				}
-				else
-				{
-					IPACMDBG("\n GOT useful RTM_DELROUTE event\n");
-
-					/* take care of subnet mask */
-					if(msg_ptr->nl_route_info.attr_info.param_mask & IPA_RTA_PARAM_DST)
-					{
-							 IPACMDBG("DST_ADDRESS:IPV4 %d.%d.%d.0\n",
-												(unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding),
-												(unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 8),
-												(unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 16));
-						IPACMDBG("MASK:IPV4 255.255.255.%d\n", mask_value);
-						ret_val = ipa_get_if_name(dev_name, msg_ptr->nl_route_info.attr_info.oif_index);
-						if(ret_val != IPACM_SUCCESS)
-						{
-							IPACMERR("Error while getting interface name\n");
-						}
-						IPACMDBG("RTA_OIF, output Interface %s \n", dev_name);
-					}
-					IPACMDBG("route del -net %d.%d.%d.0 netmask 255.255.255.%d dev %s \n",
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 8),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 16),
-									 mask_value,
-									 dev_name);
-
-					/* post event to command queue */
-					data_addr = (ipacm_event_data_addr *)malloc(sizeof(ipacm_event_data_addr));
-					if(data_addr == NULL)
-					{
-						IPACMERR("unable to allocate memory for event data_addr\n");
-						return IPACM_FAILURE;
-					}
-
-					if(msg_ptr->nl_route_info.attr_info.param_mask & IPA_RTA_PARAM_PRIORITY)
-					{
-						IPACMDBG("Priority %d \n",
-										 msg_ptr->nl_route_info.attr_info.priority);
-					}
-					else;
-
-					memcpy(&if_ipv4_addr, msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-								 sizeof(if_ipv4_addr));
-					if_ipv4_addr = (if_ipv4_addr << 8) >> 8;
-					temp = (-1) << 8;
-					temp = temp | mask_value;
-					if_ipipv4_addr_mask = ntohl(temp);
-
-					evt_data.event = IPA_ROUTE_DEL_EVENT;
-					data_addr->if_index = msg_ptr->nl_route_info.attr_info.oif_index;
-					data_addr->iptype = IPA_IP_v4;
-					data_addr->ipv4_addr = ntohl(if_ipv4_addr);
-					data_addr->ipv4_addr_mask = ntohl(if_ipipv4_addr_mask);
-
-					IPACMDBG("Posting IPA_ROUTE_DEL_EVENT with ifindex:%d, ipv4 address 0x%x, mask:0x%x\n",
-									 data_addr->if_index,
-									 data_addr->ipv4_addr,
-									 data_addr->ipv4_addr_mask);
-					evt_data.evt_data = data_addr;
-					IPACM_EvtDispatcher::PostEvt(&evt_data);
-					/* finish command queue */
-				}
-			}
-
 			/* take care of route delete of default route & uniroute */
 			if((msg_ptr->nl_route_info.metainfo.rtm_type == RTN_UNICAST) && 
 				 (msg_ptr->nl_route_info.metainfo.rtm_protocol == RTPROT_BOOT) && 
@@ -1296,17 +1100,9 @@
 					{
 						IPACMERR("Error while getting interface name\n");
 					}
-					IPACMDBG("route del -host %d.%d.%d.%d gw %d.%d.%d.%d dev %s\n",
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 8),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 16),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding >> 24),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 8),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 16),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 24),
-									 dev_name
-									 );
+					IPACM_NL_REPORT_ADDR( "route del -host ", msg_ptr->nl_route_info.attr_info.dst_addr);
+					IPACM_NL_REPORT_ADDR( " gw ", msg_ptr->nl_route_info.attr_info.gateway_addr);
+					IPACMDBG("dev %s\n", dev_name);
 
 					/* insert to command queue */
 					data_addr = (ipacm_event_data_addr *)malloc(sizeof(ipacm_event_data_addr));
@@ -1315,8 +1111,7 @@
 						IPACMERR("unable to allocate memory for event data_addr\n");
 						return IPACM_FAILURE;
 					}
-					memcpy(&if_ipv4_addr, msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-								 sizeof(if_ipv4_addr));
+					IPACM_EVENT_COPY_ADDR_v4( if_ipv4_addr, msg_ptr->nl_route_info.attr_info.dst_addr);
 					temp = (-1);
 					if_ipipv4_addr_mask = ntohl(temp);
 
@@ -1362,16 +1157,14 @@
 						{
 							IPACMDBG("ip -6 route del default dev %s\n", dev_name);
 						}
-						memcpy(data_addr->ipv6_addr, msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-									 sizeof(data_addr->ipv6_addr));
+						 IPACM_EVENT_COPY_ADDR_v6( data_addr->ipv6_addr, msg_ptr->nl_route_info.attr_info.dst_addr);
 
 						data_addr->ipv6_addr[0] = ntohl(data_addr->ipv6_addr[0]);
 						data_addr->ipv6_addr[1] = ntohl(data_addr->ipv6_addr[1]);
 						data_addr->ipv6_addr[2] = ntohl(data_addr->ipv6_addr[2]);
 						data_addr->ipv6_addr[3] = ntohl(data_addr->ipv6_addr[3]);								 
 
-						memcpy(data_addr->ipv6_addr_mask, msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-									 sizeof(data_addr->ipv6_addr_mask));
+						IPACM_EVENT_COPY_ADDR_v6( data_addr->ipv6_addr_mask, msg_ptr->nl_route_info.attr_info.dst_addr);
 
 						data_addr->ipv6_addr_mask[0] = ntohl(data_addr->ipv6_addr_mask[0]);
 						data_addr->ipv6_addr_mask[1] = ntohl(data_addr->ipv6_addr_mask[1]);
@@ -1381,21 +1174,13 @@
 					}
 					else
 					{
-						IPACMDBG("route del default gw %d.%d.%d.%d dev %s\n",
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 8),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 16),
-										 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_route_info.attr_info.gateway_addr).__ss_padding >> 24),
-										 dev_name);
+						IPACM_NL_REPORT_ADDR( "route del default gw", msg_ptr->nl_route_info.attr_info.gateway_addr);				 
+						IPACMDBG("dev %s\n", dev_name);
 
-						memcpy(&data_addr->ipv4_addr,
-									 msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-									 sizeof(data_addr->ipv4_addr));
+						IPACM_EVENT_COPY_ADDR_v4( data_addr->ipv4_addr, msg_ptr->nl_route_info.attr_info.dst_addr);
 						data_addr->ipv4_addr = ntohl(data_addr->ipv4_addr);
 
-						memcpy(&data_addr->ipv4_addr_mask,
-									 msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-									 sizeof(data_addr->ipv4_addr_mask));
+						IPACM_EVENT_COPY_ADDR_v4( data_addr->ipv4_addr_mask, msg_ptr->nl_route_info.attr_info.dst_addr);
 						data_addr->ipv4_addr_mask = ntohl(data_addr->ipv4_addr_mask);
 
 						data_addr->iptype = IPA_IP_v4;
@@ -1427,15 +1212,8 @@
 
 				if(msg_ptr->nl_route_info.attr_info.param_mask & IPA_RTA_PARAM_DST)
 				{
-					IPACMDBG("DEL IPV6 DST: %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x/%d, metric %d, dev %s\n",
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[0])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[0] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[0] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[0] >> 48)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[1])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[1] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[1] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_route_info.attr_info.dst_addr).__ss_padding)[1] >> 48)),
+					IPACM_NL_REPORT_ADDR( "DEL", msg_ptr->nl_route_info.attr_info.dst_addr);
+					IPACMDBG("/%d, metric %d, dev %s\n",
 									 msg_ptr->nl_route_info.metainfo.rtm_dst_len,
 									 msg_ptr->nl_route_info.attr_info.priority,
 									 dev_name);
@@ -1448,8 +1226,7 @@
 						return IPACM_FAILURE;
 					}
 
-					memcpy(data_addr->ipv6_addr, msg_ptr->nl_route_info.attr_info.dst_addr.__ss_padding,
-								 sizeof(data_addr->ipv6_addr));
+					IPACM_EVENT_COPY_ADDR_v6( data_addr->ipv6_addr, msg_ptr->nl_route_info.attr_info.dst_addr);
 
 					data_addr->ipv6_addr[0] = ntohl(data_addr->ipv6_addr[0]);
 					data_addr->ipv6_addr[1] = ntohl(data_addr->ipv6_addr[1]);
@@ -1536,19 +1313,8 @@
 		    memset(data_all, 0, sizeof(ipacm_event_data_all));				
 		    if(msg_ptr->nl_neigh_info.attr_info.local_addr.ss_family == AF_INET6)
 		    {
-		    	IPACMDBG("IPV6 %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
-		    					 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0])),
-		    					 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0] >> 16)),
-		    					 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0] >> 32)),
-		    					 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0] >> 48)),
-		    					 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1])),
-		    					 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1] >> 16)),
-		    					 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1] >> 32)),
-		    					 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1] >> 48)));									 
-		    					 
-		    	memcpy(data_all->ipv6_addr, 
-		    				 msg_ptr->nl_neigh_info.attr_info.local_addr.__ss_padding,
-		    				 sizeof(data_all->ipv6_addr));
+				IPACM_NL_REPORT_ADDR( " ", msg_ptr->nl_neigh_info.attr_info.local_addr);
+				IPACM_EVENT_COPY_ADDR_v6( data_all->ipv6_addr, msg_ptr->nl_neigh_info.attr_info.local_addr);
                   
                       data_all->ipv6_addr[0]=ntohl(data_all->ipv6_addr[0]);								 
                       data_all->ipv6_addr[1]=ntohl(data_all->ipv6_addr[1]);								 
@@ -1558,16 +1324,8 @@
 		    }
 		    else if (msg_ptr->nl_neigh_info.attr_info.local_addr.ss_family == AF_INET)
 		    {
-		    	IPACMDBG("IPV4 %d.%d.%d.%d\n",
-		    					 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding),
-		    					 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding >> 8),
-		    					 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding >> 16),
-		    					 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding >> 24));
-                  
-																						 
-		    	memcpy(&data_all->ipv4_addr, 
-		    				 msg_ptr->nl_neigh_info.attr_info.local_addr.__ss_padding,
-		    				 sizeof(data_all->ipv4_addr));
+   				IPACM_NL_REPORT_ADDR( " ", msg_ptr->nl_neigh_info.attr_info.local_addr);  
+				IPACM_EVENT_COPY_ADDR_v4( data_all->ipv4_addr, msg_ptr->nl_neigh_info.attr_info.local_addr);
 		    	data_all->ipv4_addr = ntohl(data_all->ipv4_addr);
 		    	data_all->iptype = IPA_IP_v4;
 		    }
@@ -1629,19 +1387,8 @@
 		    memset(data_all, 0, sizeof(ipacm_event_data_all));				
 		    if(msg_ptr->nl_neigh_info.attr_info.local_addr.ss_family == AF_INET6)
 				{
-					IPACMDBG("IPV6 %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0] >> 48)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1] >> 48)));
-
-					memcpy(data_all->ipv6_addr, 
-								 msg_ptr->nl_neigh_info.attr_info.local_addr.__ss_padding,
-								 sizeof(data_all->ipv6_addr));
+					IPACM_NL_REPORT_ADDR( " ", msg_ptr->nl_neigh_info.attr_info.local_addr);  	
+					IPACM_EVENT_COPY_ADDR_v6( data_all->ipv6_addr, msg_ptr->nl_neigh_info.attr_info.local_addr);
 
 					data_all->ipv6_addr[0] = ntohl(data_all->ipv6_addr[0]);
 					data_all->ipv6_addr[1] = ntohl(data_all->ipv6_addr[1]);
@@ -1651,16 +1398,8 @@
 				}
 		    else if (msg_ptr->nl_neigh_info.attr_info.local_addr.ss_family == AF_INET)
 				{
-					IPACMDBG("IPV4 %d.%d.%d.%d\n",
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding >> 8),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding >> 16),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding >> 24));
-
-
-					memcpy(&data_all->ipv4_addr, 
-								 msg_ptr->nl_neigh_info.attr_info.local_addr.__ss_padding,
-								 sizeof(data_all->ipv4_addr));
+					IPACM_NL_REPORT_ADDR( " ", msg_ptr->nl_neigh_info.attr_info.local_addr);  
+					IPACM_EVENT_COPY_ADDR_v4( data_all->ipv4_addr, msg_ptr->nl_neigh_info.attr_info.local_addr);
 					data_all->ipv4_addr = ntohl(data_all->ipv4_addr);
 					data_all->iptype = IPA_IP_v4;
 				}
@@ -1693,93 +1432,6 @@
 				/* finish command queue */
 			break;
 
-#if 0
-			if(IPACM_SUCCESS != ipa_nl_decode_rtm_neigh(buffer, buflen, &(msg_ptr->nl_neigh_info)))
-			{
-				IPACMERR("Failed to decode rtm neighbor message\n");
-				return IPACM_FAILURE;
-			}
-
-			if((NUD_PERMANENT | NUD_STALE) & (msg_ptr->nl_neigh_info.metainfo.ndm_state))
-			{
-				IPACMDBG("\n GOT RTM_DELNEIGH event\n");
-				/* insert to command queue */
-				data_all = (ipacm_event_data_all *)malloc(sizeof(ipacm_event_data_all));
-				if(data_all == NULL)
-				{
-					IPACMERR("unable to allocate memory for event data_all\n");
-					return IPACM_FAILURE;
-				}
-
-				if(AF_INET6 == msg_ptr->nl_neigh_info.attr_info.local_addr.ss_family)
-				{
-					IPACMDBG("IPV6 %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[0] >> 48)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1])),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1] >> 16)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1] >> 32)),
-									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1] >> 48)));
-
-					memcpy(data_all->ipv6_addr, 
-								 msg_ptr->nl_neigh_info.attr_info.local_addr.__ss_padding,
-								 sizeof(data_all->ipv6_addr));
-
-					data_all->ipv6_addr[0] = ntohl(data_all->ipv6_addr[0]);
-					data_all->ipv6_addr[1] = ntohl(data_all->ipv6_addr[1]);
-					data_all->ipv6_addr[2] = ntohl(data_all->ipv6_addr[2]);
-					data_all->ipv6_addr[3] = ntohl(data_all->ipv6_addr[3]);	
-					data_all->iptype = IPA_IP_v6;
-				}
-				else
-				{
-					IPACMDBG("IPV4 %d.%d.%d.%d\n",
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding >> 8),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding >> 16),
-									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding >> 24));
-
-
-					memcpy(&data_all->ipv4_addr, 
-								 msg_ptr->nl_neigh_info.attr_info.local_addr.__ss_padding,
-								 sizeof(data_all->ipv4_addr));
-					data_all->iptype = IPA_IP_v4;
-				}
-
-				memcpy(data_all->mac_addr,
-							 msg_ptr->nl_neigh_info.attr_info.lladdr_hwaddr.sa_data,
-							 sizeof(data_all->mac_addr));
-				evt_data.event = IPA_DEL_NEIGH_EVENT;
-				data_all->if_index = msg_ptr->nl_neigh_info.metainfo.ndm_ifindex;
-
-				IPACMDBG("posting IPA_DEL_NEIGH_EVENT with if index:%d\n",
-								 data_all->if_index);
-				evt_data.evt_data = data_all;
-				IPACM_EvtDispatcher::PostEvt(&evt_data);
-				/* finish command queue */
-
-				IPACMDBG("NDA_LLADDR:MAC %02x:%02x:%02x:%02x:%02x:%02x\n",
-								 (unsigned char)(msg_ptr->nl_neigh_info.attr_info.lladdr_hwaddr).sa_data[0],
-								 (unsigned char)(msg_ptr->nl_neigh_info.attr_info.lladdr_hwaddr).sa_data[1],
-								 (unsigned char)(msg_ptr->nl_neigh_info.attr_info.lladdr_hwaddr).sa_data[2],
-								 (unsigned char)(msg_ptr->nl_neigh_info.attr_info.lladdr_hwaddr).sa_data[3],
-								 (unsigned char)(msg_ptr->nl_neigh_info.attr_info.lladdr_hwaddr).sa_data[4],
-								 (unsigned char)(msg_ptr->nl_neigh_info.attr_info.lladdr_hwaddr).sa_data[5]);
-
-				ret_val = ipa_get_if_name(dev_name, msg_ptr->nl_neigh_info.metainfo.ndm_ifindex);
-				if(ret_val != IPACM_SUCCESS)
-				{
-					//IPACM_LOG_MSG("Error while getting interface index");
-				}
-				else
-				{
-					IPACMDBG("Interface %s \n", dev_name);
-				}
-			}
-			break;
-#endif
 		default:
 			IPACMDBG(" ignore NL event %d!!!\n ", nlh->nlmsg_type);
 			break;
diff --git a/ipanat/src/ipa_nat_drvi.c b/ipanat/src/ipa_nat_drvi.c
index 5678306..cd0dd2b 100644
--- a/ipanat/src/ipa_nat_drvi.c
+++ b/ipanat/src/ipa_nat_drvi.c
@@ -30,6 +30,7 @@
 #include "ipa_nat_drv.h"
 #include "ipa_nat_drvi.h"
 
+#define IPANAT_DUMMY_USE(element) element++;
 struct ipa_nat_cache ipv4_nat_cache;
 
 /* ------------------------------------------
@@ -172,27 +173,7 @@
  */
 int CreateNatDevice(struct ipa_ioc_nat_alloc_mem *mem)
 {
-
-#define EVENT_SIZE  (sizeof (struct inotify_event))
-#define FILE_NAME_LENGTH (sizeof(NAT_DEV_NAME)*2 + 1)
-#define BUF_LEN     (EVENT_SIZE + FILE_NAME_LENGTH)
-
-  int length;
-  int wd;
-  char buffer[BUF_LEN];
-  int ret, inotify_fd;
-
-  inotify_fd = inotify_init();
-  if (inotify_fd < 0)
-  {
-    perror("inotify_init");
-    return -1;
-  }
-
-  IPADBG("Waiting for nofications in dir %s\n", NAT_DEV_DIR);
-  wd = inotify_add_watch(inotify_fd,
-                         NAT_DEV_DIR,
-                         IN_CREATE);
+  int ret;
   
   ret = ioctl(ipv4_nat_cache.ipa_fd, IPA_IOC_ALLOC_NAT_MEM, mem);
   if (ret != 0)
@@ -203,33 +184,6 @@
     return -1;
   }
   IPADBG("posted IPA_IOC_ALLOC_NAT_MEM to kernel successfully \n");
-
-  length = read(inotify_fd, buffer, BUF_LEN );  
-
-  if (length < 0)
-  {
-    perror("inotify read");
-    return -1;
-  }
-
-  struct inotify_event *event = (struct inotify_event *)buffer;
-  if(event->len)
-  {
-    if(event->mask & IN_CREATE)
-    {
-      if( event->mask & IN_ISDIR)
-      {
-        IPADBG("The directory %s was created.\n", event->name);       
-      }
-      else
-      {
-        IPADBG("The file %s was created.\n", event->name);
-      }
-    }
-  }
-
-  (void) inotify_rm_watch(inotify_fd, wd);
-  (void) close(inotify_fd);
   return 0;
 }
 
@@ -802,9 +756,9 @@
 
   /* Calclate the memory size for both table and index table entries */
   mem->size = (IPA_NAT_TABLE_ENTRY_SIZE * total_entries);
-	IPADBG("Nat Table size: %d\n", mem->size);
+  IPADBG("Nat Table size: %d\n", mem->size);
   mem->size += (IPA_NAT_INDEX_TABLE_ENTRY_SIZE * total_entries);
-	IPADBG("Nat Base and Index Table size: %d\n", mem->size);
+  IPADBG("Nat Base and Index Table size: %d\n", mem->size);
   
   if (!ipv4_nat_cache.ipa_fd)
   {
@@ -2329,17 +2283,19 @@
   IPADUMP("TS:0x%x  Proto:0x%x  ", sw_rule.time_stamp, sw_rule.protocol);
   IPADUMP("Prv-indx:%d  Tcp-udp-cksum-delta:0x%x", sw_rule.prev_index, sw_rule.tcp_udp_chksum);
   IPADUMP("\n");
+  IPANAT_DUMMY_USE(rule_id);
   return;
 }
 
 void ipa_nati_print_index_rule(struct ipa_nat_indx_tbl_rule *param, uint32_t rule_id)
 {
-	struct ipa_nat_sw_indx_tbl_rule sw_rule;
-	memcpy(&sw_rule, param, sizeof(sw_rule));
+  struct ipa_nat_sw_indx_tbl_rule sw_rule;
+  memcpy(&sw_rule, param, sizeof(sw_rule));
 
   IPADUMP("rule-id:%d  Table_entry:%d  Next_index:%d",
 					        rule_id, sw_rule.tbl_entry, sw_rule.next_index);
   IPADUMP("\n");
+  IPANAT_DUMMY_USE(rule_id);
   return;
 }