diff --git a/lib/sockunion.c b/lib/sockunion.c
index 1a355d3..5e6cf68 100644
--- a/lib/sockunion.c
+++ b/lib/sockunion.c
@@ -116,7 +116,7 @@
 #endif /* ! HAVE_INET_NTOP */
 
 const char *
-inet_sutop (union sockunion *su, char *str)
+inet_sutop (const union sockunion *su, char *str)
 {
   switch (su->sa.sa_family)
     {
@@ -163,7 +163,7 @@
 }
 
 const char *
-sockunion2str (union sockunion *su, char *buf, size_t len)
+sockunion2str (const union sockunion *su, char *buf, size_t len)
 {
   if  (su->sa.sa_family == AF_INET)
     return inet_ntop (AF_INET, &su->sin.sin_addr, buf, len);
@@ -207,7 +207,7 @@
 
 /* Return socket of sockunion. */
 int
-sockunion_socket (union sockunion *su)
+sockunion_socket (const union sockunion *su)
 {
   int sock;
 
@@ -237,7 +237,7 @@
 
 /* Return sizeof union sockunion.  */
 static int
-sockunion_sizeof (union sockunion *su)
+sockunion_sizeof (const union sockunion *su)
 {
   int ret;
 
@@ -258,7 +258,7 @@
 
 /* return sockunion structure : this function should be revised. */
 static const char *
-sockunion_log (union sockunion *su, char *buf, size_t len)
+sockunion_log (const union sockunion *su, char *buf, size_t len)
 {
   switch (su->sa.sa_family) 
     {
@@ -282,7 +282,7 @@
    0 : connect success
    1 : connect is in progress */
 enum connect_result
-sockunion_connect (int fd, union sockunion *peersu, unsigned short port,
+sockunion_connect (int fd, const union sockunion *peersu, unsigned short port,
 		   unsigned int ifindex)
 {
   int ret;
@@ -547,7 +547,7 @@
 
 /* If same family and same prefix return 1. */
 int
-sockunion_same (union sockunion *su1, union sockunion *su2)
+sockunion_same (const union sockunion *su1, const union sockunion *su2)
 {
   int ret = 0;
 
@@ -666,7 +666,7 @@
 
 /* Print sockunion structure */
 static void __attribute__ ((unused))
-sockunion_print (union sockunion *su)
+sockunion_print (const union sockunion *su)
 {
   if (su == NULL)
     return;
@@ -705,7 +705,7 @@
 
 #ifdef HAVE_IPV6
 static int
-in6addr_cmp (struct in6_addr *addr1, struct in6_addr *addr2)
+in6addr_cmp (const struct in6_addr *addr1, const struct in6_addr *addr2)
 {
   unsigned int i;
   u_char *p1, *p2;
@@ -725,7 +725,7 @@
 #endif /* HAVE_IPV6 */
 
 int
-sockunion_cmp (union sockunion *su1, union sockunion *su2)
+sockunion_cmp (const union sockunion *su1, const union sockunion *su2)
 {
   if (su1->sa.sa_family > su2->sa.sa_family)
     return 1;
@@ -750,7 +750,7 @@
 
 /* Duplicate sockunion. */
 union sockunion *
-sockunion_dup (union sockunion *su)
+sockunion_dup (const union sockunion *su)
 {
   union sockunion *dup = XCALLOC (MTYPE_SOCKUNION, sizeof (union sockunion));
   memcpy (dup, su, sizeof (union sockunion));
