diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index 843f12e..677643e 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,13 @@
+2005-06-14 Paul Jakma <paul.jakma@sun.com>
+
+	* kernel_socket.c: consolidate the IFAM{ADDR,MASK}GET and 
+	  RTM{ADDR,MASK}GET macros into generic rta_addrs macros,
+	  RTA_{ADDR,ATTR}_GET.
+	  (af_check) could use 'inline' attribute
+	  (ifam_read_mesg) remove IFAM{ADDR,MASK}GET macro, change to
+	  generic macro.
+	  (rtm_read_mesg) similar
+
 2005-06-12 Hasso Tepper <hasso at quagga.net>
 
 	* rt_netlink.c: Remove netlink-addr socket declaration, it's not used.
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index c1f785d..d17ffe8 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -77,6 +77,24 @@
            ROUNDUP(sizeof(struct sockaddr_dl)) : sizeof(struct sockaddr)))
 #endif /* HAVE_SA_LEN */
 
+#define RTA_ADDR_GET(DEST, RTA, RTMADDRS, PNT) \
+  if ((RTMADDRS) & (RTA)) \
+    { \
+      int len = SAROUNDUP ((PNT)); \
+      if ( ((RTA) != NULL) && \
+           af_check (((struct sockaddr *)(PNT))->sa_family)) \
+        memcpy ((caddr_t)(DEST), (PNT), len); \
+      (PNT) += len; \
+    }
+#define RTA_ATTR_GET(DEST, RTA, RTMADDRS, PNT) \
+  if ((RTMADDRS) & (RTA)) \
+    { \
+      int len = SAROUNDUP ((PNT)); \
+      if ( ((RTA) != NULL) ) \
+        memcpy ((caddr_t)(DEST), (PNT), len); \
+      (PNT) += len; \
+    }
+
 /* Routing socket message types. */
 struct message rtm_type_str[] =
 {
@@ -159,7 +177,7 @@
 /* #define DEBUG */
 
 /* Supported address family check. */
-static int
+static int inline
 af_check (int family)
 {
   if (family == AF_INET)
@@ -411,37 +429,20 @@
   pnt = (caddr_t)(ifm + 1);
   end = ((caddr_t)ifm) + ifm->ifam_msglen;
 
-#define IFAMADDRGET(X,R) \
-    if (ifm->ifam_addrs & (R)) \
-      { \
-        int len = SAROUNDUP(pnt); \
-        if (((X) != NULL) && af_check (((struct sockaddr *)pnt)->sa_family)) \
-          memcpy ((caddr_t)(X), pnt, len); \
-        pnt += len; \
-      }
-#define IFAMMASKGET(X,R) \
-    if (ifm->ifam_addrs & (R)) \
-      { \
-	int len = SAROUNDUP(pnt); \
-        if ((X) != NULL) \
-	  memcpy ((caddr_t)(X), pnt, len); \
-	pnt += len; \
-      }
-
   /* Be sure structure is cleared */
   memset (mask, 0, sizeof (union sockunion));
   memset (addr, 0, sizeof (union sockunion));
   memset (dest, 0, sizeof (union sockunion));
 
   /* We fetch each socket variable into sockunion. */
-  IFAMADDRGET (NULL, RTA_DST);
-  IFAMADDRGET (NULL, RTA_GATEWAY);
-  IFAMMASKGET (mask, RTA_NETMASK);
-  IFAMADDRGET (NULL, RTA_GENMASK);
-  IFAMADDRGET (NULL, RTA_IFP);
-  IFAMADDRGET (addr, RTA_IFA);
-  IFAMADDRGET (NULL, RTA_AUTHOR);
-  IFAMADDRGET (dest, RTA_BRD);
+  RTA_ADDR_GET (NULL, RTA_DST, ifm->ifam_addrs, pnt);
+  RTA_ADDR_GET (NULL, RTA_GATEWAY, ifm->ifam_addrs, pnt);
+  RTA_ATTR_GET (mask, RTA_NETMASK, ifm->ifam_addrs, pnt);
+  RTA_ADDR_GET (NULL, RTA_GENMASK, ifm->ifam_addrs, pnt);
+  RTA_ADDR_GET (NULL, RTA_IFP, ifm->ifam_addrs, pnt);
+  RTA_ADDR_GET (addr, RTA_IFA, ifm->ifam_addrs, pnt);
+  RTA_ADDR_GET (NULL, RTA_AUTHOR, ifm->ifam_addrs, pnt);
+  RTA_ADDR_GET (dest, RTA_BRD, ifm->ifam_addrs, pnt);
 
   /* Assert read up end point matches to end point */
   if (pnt != end)
@@ -526,38 +527,21 @@
       zlog (NULL, LOG_WARNING,
 	      "Routing message version different %d should be %d."
 	      "This may cause problem\n", rtm->rtm_version, RTM_VERSION);
-
-#define RTMADDRGET(X,R) \
-    if (rtm->rtm_addrs & (R)) \
-      { \
-	int len = SAROUNDUP (pnt); \
-        if (((X) != NULL) && af_check (((struct sockaddr *)pnt)->sa_family)) \
-	  memcpy ((caddr_t)(X), pnt, len); \
-	pnt += len; \
-      }
-#define RTMMASKGET(X,R) \
-    if (rtm->rtm_addrs & (R)) \
-      { \
-	int len = SAROUNDUP (pnt); \
-        if ((X) != NULL) \
-	  memcpy ((caddr_t)(X), pnt, len); \
-	pnt += len; \
-      }
-
+  
   /* Be sure structure is cleared */
   memset (dest, 0, sizeof (union sockunion));
   memset (gate, 0, sizeof (union sockunion));
   memset (mask, 0, sizeof (union sockunion));
 
   /* We fetch each socket variable into sockunion. */
-  RTMADDRGET (dest, RTA_DST);
-  RTMADDRGET (gate, RTA_GATEWAY);
-  RTMMASKGET (mask, RTA_NETMASK);
-  RTMADDRGET (NULL, RTA_GENMASK);
-  RTMADDRGET (NULL, RTA_IFP);
-  RTMADDRGET (NULL, RTA_IFA);
-  RTMADDRGET (NULL, RTA_AUTHOR);
-  RTMADDRGET (NULL, RTA_BRD);
+  RTA_ADDR_GET (dest, RTA_DST, rtm->rtm_addrs, pnt);
+  RTA_ADDR_GET (gate, RTA_GATEWAY, rtm->rtm_addrs, pnt);
+  RTA_ATTR_GET (mask, RTA_NETMASK, rtm->rtm_addrs, pnt);
+  RTA_ADDR_GET (NULL, RTA_GENMASK, rtm->rtm_addrs, pnt);
+  RTA_ADDR_GET (NULL, RTA_IFP, rtm->rtm_addrs, pnt);
+  RTA_ADDR_GET (NULL, RTA_IFA, rtm->rtm_addrs, pnt);
+  RTA_ADDR_GET (NULL, RTA_AUTHOR, rtm->rtm_addrs, pnt);
+  RTA_ADDR_GET (NULL, RTA_BRD, rtm->rtm_addrs, pnt);
 
   /* If there is netmask information set it's family same as
      destination family*/
