diff --git a/lib/ChangeLog b/lib/ChangeLog
index 3dbf9eb..57fd64f 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -7,6 +7,7 @@
 	* memory.h: Add MTYPE_THREAD_FUNCNAME and MTYPE_THREAD_STATS
 	* thread.c: Update stats and funcname alloc/free to use previous
 	  specific memory type defines
+	* smux.c: fix int to size_t compile warnings
 
 2004-10-29 Paul Jakma <paul@dishone.st>
 
diff --git a/lib/smux.c b/lib/smux.c
index 0997700..2578609 100644
--- a/lib/smux.c
+++ b/lib/smux.c
@@ -271,7 +271,7 @@
   int ret;
   u_char buf[BUFSIZ];
   u_char *ptr, *h1, *h1e, *h2, *h2e;
-  int len, length;
+  size_t len, length;
 
   ptr = buf;
   len = BUFSIZ;
@@ -322,13 +322,13 @@
   asn_build_sequence(h1,&length,(u_char)SMUX_GETRSP,ptr-h1e);
 
   if (debug_smux)
-    zlog_info ("SMUX getresp send: %d", ptr - buf);
+    zlog_info ("SMUX getresp send: %ld", (ptr - buf));
   
   ret = send (smux_sock, buf, (ptr - buf), 0);
 }
 
 char *
-smux_var (char *ptr, int len, oid objid[], size_t *objid_len,
+smux_var (char *ptr, size_t len, oid objid[], size_t *objid_len,
           size_t *var_val_len,
           u_char *var_val_type,
           void **var_value)
@@ -339,14 +339,14 @@
   u_char *val;
 
   if (debug_smux)
-    zlog_info ("SMUX var parse: len %d", len);
+    zlog_info ("SMUX var parse: len %ld", len);
 
   /* Parse header. */
   ptr = asn_parse_header (ptr, &len, &type);
   
   if (debug_smux)
     {
-      zlog_info ("SMUX var parse: type %d len %d", type, len);
+      zlog_info ("SMUX var parse: type %d len %ld", type, len);
       zlog_info ("SMUX var parse: type must be %d", 
 		 (ASN_SEQUENCE | ASN_CONSTRUCTOR));
     }
@@ -437,7 +437,7 @@
   struct variable *v;
   int subresult;
   oid *suffix;
-  int suffix_len;
+  size_t suffix_len;
   int result;
   u_char *statP = NULL;
   WriteMethod *write_method = NULL;
@@ -506,7 +506,7 @@
   struct variable *v;
   int subresult;
   oid *suffix;
-  int suffix_len;
+  size_t suffix_len;
   int result;
   WriteMethod *write_method=NULL;
   struct listnode *node;
@@ -575,7 +575,7 @@
   struct variable *v;
   int subresult;
   oid *suffix;
-  int suffix_len;
+  size_t suffix_len;
   int result;
   WriteMethod *write_method=NULL;
   struct listnode *node;
@@ -668,13 +668,13 @@
   ptr = asn_parse_int (ptr, len, &type, &errstat, sizeof (errstat));
 
   if (debug_smux)
-    zlog_info ("SMUX GET errstat %ld len: %d", errstat, *len);
+    zlog_info ("SMUX GET errstat %ld len: %ld", errstat, *len);
 
   /* Error index. */
   ptr = asn_parse_int (ptr, len, &type, &errindex, sizeof (errindex));
 
   if (debug_smux)
-    zlog_info ("SMUX GET errindex %ld len: %d", errindex, *len);
+    zlog_info ("SMUX GET errindex %ld len: %ld", errindex, *len);
 
   return ptr;
 }
@@ -691,7 +691,7 @@
   int ret;
 
   if (debug_smux)
-    zlog_info ("SMUX SET(%s) message parse: len %d",
+    zlog_info ("SMUX SET(%s) message parse: len %ld",
                (RESERVE1 == action) ? "RESERVE1" : ((FREE == action) ? "FREE" : "COMMIT"),
                len);
 
@@ -722,7 +722,7 @@
   int ret;
 
   if (debug_smux)
-    zlog_info ("SMUX GET message parse: len %d", len);
+    zlog_info ("SMUX GET message parse: len %ld", len);
   
   /* Parse GET message header. */
   ptr = smux_parse_get_header (ptr, &len, &reqid);
@@ -759,7 +759,7 @@
 
 /* SMUX_RRSP message. */
 void
-smux_parse_rrsp (char *ptr, int len)
+smux_parse_rrsp (char *ptr, size_t len)
 {
   char val;
   long errstat;
@@ -772,7 +772,7 @@
 
 /* Parse SMUX message. */
 int
-smux_parse (char *ptr, int len)
+smux_parse (char *ptr, size_t len)
 {
   /* This buffer we'll use for SOUT message. We could allocate it with
      malloc and save only static pointer/lenght, but IMHO static
@@ -792,7 +792,7 @@
   ptr = asn_parse_header (ptr, &len, &type);
 
   if (debug_smux)
-    zlog_info ("SMUX message received type: %d rest len: %d", type, len);
+    zlog_info ("SMUX message received type: %d rest len: %ld", type, len);
 
   switch (type)
     {
@@ -945,7 +945,7 @@
 {
   u_char buf[BUFSIZ];
   u_char *ptr;
-  int len;
+  size_t len;
   u_long version;
   u_char progname[] = QUAGGA_PROGNAME "-" QUAGGA_VERSION;
 
@@ -1002,7 +1002,7 @@
   unsigned int i;
   u_char buf[BUFSIZ];
   u_char *ptr;
-  int len, length;
+  size_t len, length;
   struct in_addr addr;
   unsigned long val;
   u_char *h1, *h1e;
@@ -1103,7 +1103,8 @@
 {
   u_char buf[BUFSIZ];
   u_char *ptr;
-  int len, ret;
+  int ret;
+  size_t len;
   long priority;
   long operation;
   struct subtree *subtree;
