diff -up freeradius-1.1.6/src/main/smux.c.snmp_64 freeradius-1.1.6/src/main/smux.c
--- freeradius-1.1.6/src/main/smux.c.snmp_64	2004-02-26 20:04:26.000000000 +0100
+++ freeradius-1.1.6/src/main/smux.c	2007-08-01 11:20:16.000000000 +0200
@@ -71,9 +71,9 @@ oid_copy (void *dest, void *src, size_t 
 
 #if 0
 static void
-oid2in_addr (oid my_oid[], int len, struct in_addr *addr)
+oid2in_addr (oid my_oid[], size_t len, struct in_addr *addr)
 {
-	int i;
+	size_t i;
 	u_char *pnt;
 
 	if (len == 0)
@@ -86,9 +86,9 @@ oid2in_addr (oid my_oid[], int len, stru
 }
 
 static void
-oid_copy_addr (oid my_oid[], struct in_addr *addr, int len)
+oid_copy_addr (oid my_oid[], struct in_addr *addr, size_t len)
 {
-	int i;
+	size_t i;
 	u_char *pnt;
 
 	if (len == 0)
@@ -140,7 +140,7 @@ oid_compare_part (oid *o1, int o1_len, o
 static void
 smux_oid_dump(const char *prefix, oid *my_oid, size_t oid_len)
 {
-	int i;
+	size_t i;
 	int first = 1;
 	char buf[MAX_OID_LEN * 3];
 
@@ -240,10 +240,10 @@ static void
 smux_getresp_send (oid objid[], size_t objid_len, long reqid, long errstat,
 		long errindex, u_char val_type, const void *arg, size_t arg_len)
 {
-	int ret;
+	size_t ret;
 	u_char buf[BUFSIZ];
 	u_char *ptr, *h1, *h1e, *h2, *h2e;
-	int len, length;
+	size_t len, length;
 
 	ptr = buf;
 	len = BUFSIZ;
@@ -280,7 +280,7 @@ smux_getresp_send (oid objid[], size_t o
 	h2e = ptr;
 
 	ptr = snmp_build_var_op (ptr, objid, &objid_len,
-			val_type, arg_len, arg, &len);
+			val_type, arg_len, (u_char *)arg, &len);
 
 	/* Now variable size is known, fill in size */
 	asn_build_sequence(h2,&length,(u_char)(ASN_SEQUENCE|ASN_CONSTRUCTOR),ptr-h2e);
@@ -288,13 +288,13 @@ smux_getresp_send (oid objid[], size_t o
 	/* Fill in size of whole sequence */
 	asn_build_sequence(h1,&length,(u_char)SMUX_GETRSP,ptr-h1e);
 
-	DEBUG2("SMUX getresp send: %d", ptr - buf);
+	DEBUG2("SMUX getresp send: %zd", ptr - buf);
 
 	ret = send (rad_snmp.smux_fd, buf, (ptr - buf), 0);
 }
 
-static char *
-smux_var (char *ptr, int len, oid objid[], size_t *objid_len,
+static u_char *
+smux_var (u_char *ptr, size_t len, oid objid[], size_t *objid_len,
 		size_t *var_val_len,
 		u_char *var_val_type,
 		void **var_value)
@@ -304,12 +304,12 @@ smux_var (char *ptr, int len, oid objid[
 	size_t val_len;
 	u_char *val;
 
-	DEBUG2("SMUX var parse: len %d", len);
+	DEBUG2("SMUX var parse: len %zd", len);
 
 	/* Parse header. */
 	ptr = asn_parse_header (ptr, &len, &type);
 
-	DEBUG2("SMUX var parse: type %d len %d", type, len);
+	DEBUG2("SMUX var parse: type %d len %zd", type, len);
 	DEBUG2("SMUX var parse: type must be %d", (ASN_SEQUENCE | ASN_CONSTRUCTOR));
 
 	/* Parse var option. */
@@ -395,7 +395,7 @@ smux_set (oid *reqid, size_t *reqid_len,
 	struct list *l;
 	int subresult;
 	oid *suffix;
-	int suffix_len;
+	size_t suffix_len;
 	int result;
 	const unsigned char *statP = NULL;
 	WriteMethod *write_method = NULL;
@@ -459,7 +459,7 @@ smux_get (oid *reqid, size_t *reqid_len,
 	struct list *l;
 	int subresult;
 	oid *suffix;
-	int suffix_len;
+	size_t suffix_len;
 	int result;
 	WriteMethod *write_method=NULL;
 
@@ -523,7 +523,7 @@ smux_getnext (oid *reqid, size_t *reqid_
 	struct list *l;
 	int subresult;
 	oid *suffix;
-	int suffix_len;
+	size_t suffix_len;
 	int result;
 	WriteMethod *write_method=NULL;
 
@@ -591,8 +591,8 @@ smux_getnext (oid *reqid, size_t *reqid_
 }
 
 /* GET message header. */
-static char *
-smux_parse_get_header (char *ptr, size_t *len, long *reqid)
+static u_char *
+smux_parse_get_header (u_char *ptr, size_t *len, long *reqid)
 {
 	u_char type;
 	long errstat;
@@ -606,18 +606,18 @@ smux_parse_get_header (char *ptr, size_t
 	/* Error status. */
 	ptr = asn_parse_int (ptr, len, &type, &errstat, sizeof (errstat));
 
-	DEBUG2 ("SMUX GET errstat %ld len: %d", errstat, *len);
+	DEBUG2 ("SMUX GET errstat %ld len: %zd", errstat, *len);
 
 	/* Error index. */
 	ptr = asn_parse_int (ptr, len, &type, &errindex, sizeof (errindex));
 
-	DEBUG2 ("SMUX GET errindex %ld len: %d", errindex, *len);
+	DEBUG2 ("SMUX GET errindex %ld len: %zd", errindex, *len);
 
 	return ptr;
 }
 
 static void
-smux_parse_set (char *ptr, size_t len, int action)
+smux_parse_set (u_char *ptr, size_t len, int action)
 {
 	long reqid;
 	oid my_oid[MAX_OID_LEN];
@@ -627,7 +627,7 @@ smux_parse_set (char *ptr, size_t len, i
 	size_t val_len;
 	int ret;
 
-	DEBUG2 ("SMUX SET(%s) message parse: len %d",
+	DEBUG2 ("SMUX SET(%s) message parse: len %zd",
 			(RESERVE1 == action) ? "RESERVE1" : ((FREE == action) ? "FREE" : "COMMIT"),
 			len);
 
@@ -646,7 +646,7 @@ smux_parse_set (char *ptr, size_t len, i
 }
 
 static void
-smux_parse_get (char *ptr, size_t len, int exact)
+smux_parse_get (u_char *ptr, size_t len, int exact)
 {
 	long reqid;
 	oid my_oid[MAX_OID_LEN];
@@ -656,7 +656,7 @@ smux_parse_get (char *ptr, size_t len, i
 	size_t val_len;
 	int ret;
 
-	DEBUG2 ("SMUX GET message parse: len %d", len);
+	DEBUG2 ("SMUX GET message parse: len %zd", len);
 
 	/* Parse GET message header. */
 	ptr = smux_parse_get_header (ptr, &len, &reqid);
@@ -679,7 +679,7 @@ smux_parse_get (char *ptr, size_t len, i
 
 /* Parse SMUX_CLOSE message. */
 static void
-smux_parse_close (char *ptr, int len)
+smux_parse_close (u_char *ptr, size_t len)
 {
 	long reason = 0;
 
@@ -692,26 +692,26 @@ smux_parse_close (char *ptr, int len)
 
 /* SMUX_RRSP message. */
 static void
-smux_parse_rrsp (char *ptr, int len)
+smux_parse_rrsp (u_char *ptr, size_t len)
 {
-	char val;
+	u_char val;
 	long errstat;
 
 	ptr = asn_parse_int (ptr, &len, &val, &errstat, sizeof (errstat));
 
-	DEBUG2 ("SMUX_RRSP value: %d errstat: %ld", val, errstat);
+	DEBUG2 ("SMUX_RRSP value: %d errstat: %zd", val, errstat);
 }
 
 /* Parse SMUX message. */
 static int
-smux_parse (char *ptr, int len)
+smux_parse (u_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 buffer is a faster solusion */
 	static u_char sout_save_buff[SMUXMAXPKTSIZE];
 	static int sout_save_len = 0;
 
-	int len_income = len; /* see note below: YYY */
+	size_t len_income = len; /* see note below: YYY */
 	u_char type;
 	u_char rollback;
 
@@ -722,7 +722,7 @@ process_rest: /* see note below: YYY */
 	/* Parse SMUX message type and subsequent length. */
 	ptr = asn_parse_header (ptr, &len, &type);
 
-	DEBUG2 ("SMUX message received type: %d rest len: %d", type, len);
+	DEBUG2 ("SMUX message received type: %d rest len: %zd", type, len);
 
 	switch (type) {
 		case SMUX_OPEN:
@@ -806,7 +806,7 @@ process_rest: /* see note below: YYY */
 int
 smux_read ()
 {
-	int len;
+	size_t len;
 	u_char buf[SMUXMAXPKTSIZE];
 	int ret;
 
@@ -832,7 +832,7 @@ smux_read ()
 		return -1;
 	}
 
-	DEBUG2 ("SMUX read len: %d", len);
+	DEBUG2 ("SMUX read len: %zd", len);
 
 	/* Parse the message. */
 	ret = smux_parse (buf, len);
@@ -854,9 +854,9 @@ smux_open(void)
 {
 	u_char buf[BUFSIZ];
 	u_char *ptr;
-	int len;
-	u_long smux_proto_version;
-	u_char rad_progname[] = "radiusd";
+	size_t len;
+	long smux_proto_version;
+	char rad_progname[] = "radiusd";
 
 	smux_oid_dump ("SMUX open oid", smux_oid, smux_oid_len);
 	DEBUG2 ("SMUX open progname: %s", rad_progname);
@@ -884,13 +884,13 @@ smux_open(void)
 	ptr = asn_build_string (ptr, &len,
 			(u_char)
 			(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR),
-			rad_progname, strlen (rad_progname));
+				(u_char *)rad_progname, strlen (rad_progname));
 
 	/* SMUX connection password. */
 	ptr = asn_build_string (ptr, &len,
 			(u_char)
 			(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR),
-			rad_snmp.smux_password, strlen(rad_snmp.smux_password));
+				(u_char *)rad_snmp.smux_password, strlen(rad_snmp.smux_password));
 
 	/* Fill in real SMUX header.	We exclude ASN header size (2). */
 	len = BUFSIZ;
@@ -904,7 +904,7 @@ smux_register(void)
 {
 	u_char buf[BUFSIZ];
 	u_char *ptr;
-	int len, ret;
+	size_t len, ret;
 	long priority;
 	long operation;
 	struct subtree *subtree;
@@ -956,7 +956,7 @@ smux_register(void)
 int
 smux_connect ()
 {
-	int ret;
+	size_t ret;
 
 	rad_snmp.smux_event=SMUX_NONE;
 	DEBUG2 ("SMUX connect try %d", rad_snmp.smux_failures + 1);
@@ -1008,7 +1008,7 @@ smux_stop(void)
 int
 smux_str2oid (char *str, oid *my_oid, size_t *oid_len)
 {
-	int len;
+	size_t len;
 	int val;
 
 	len = 0;
diff -up freeradius-1.1.6/src/main/radius_snmp.c.snmp_64 freeradius-1.1.6/src/main/radius_snmp.c
--- freeradius-1.1.6/src/main/radius_snmp.c.snmp_64	2006-02-07 16:29:10.000000000 +0100
+++ freeradius-1.1.6/src/main/radius_snmp.c	2007-08-01 11:19:34.000000000 +0200
@@ -203,7 +203,7 @@ static RADCLIENT *
 get_client(struct variable *v, oid objid[], size_t *objid_len, int exact) {
 
 	RADCLIENT *c;
-	int i, len;
+	size_t i, len;
 
 	len = *objid_len - v->namelen;
 
@@ -252,7 +252,7 @@ radServReset (int action, u_char *var_va
 		size_t name_len) {
 
 	long i;
-	int big = SNMP_MAX_LEN;
+	size_t big = SNMP_MAX_LEN;
 
 	switch (action) {
 		case RESERVE1:
