Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 02 Mar 2003 03:30:50 +0100
From:      Jens Rehsack <rehsack@liwing.de>
To:        freebsd-audit@freebsd.org
Subject:   patch for src/sbin/atm/ilmid/ilmid.c
Message-ID:  <3E616CDA.50808@liwing.de>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------000108030408030604070306
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

I played a little with some compiler optimizations and got an error 
message in src/sbin/atm/ilmid/ilmid.c:

===> sbin/atm/ilmid
cc -O -O3 -fforce-addr -fforce-mem -msse -mmmx -m3dnow
-momit-leaf-frame-pointer -fcse-follow-jumps -fcse-skip-blocks -fgcse
-frerun-cse-after-loop -fstrength-reduce -fgcse-lm -fgcse-sm
-frerun-loop-opt -fschedule-insns2 -pipe -DNO_WERROR -march=athlon-tbird
-I/usr/src/sbin/atm/ilmid/../../../sys   -Werror -Wall -Wno-format-y2k
-Wno-uninitialized  -c /usr/src/sbin/atm/ilmid/ilmid.c
cc1: warnings being treated as errors
In file included from /usr/src/sbin/atm/ilmid/ilmid.c:861:
/usr/src/sbin/atm/ilmid/ilmid.c: In function `parse_oids':
/usr/src/sbin/atm/ilmid/ilmid.c:456: warning: passing arg 0 of
`asn_get_pdu_len' from incompatible pointer type
In file included from /usr/src/sbin/atm/ilmid/ilmid.c:867:
/usr/src/sbin/atm/ilmid/ilmid.c:659: warning: passing arg 0 of
`asn_get_objid' from incompatible pointer type
In file included from /usr/src/sbin/atm/ilmid/ilmid.c:872:
/usr/src/sbin/atm/ilmid/ilmid.c:538: warning: passing arg 0 of
`asn_get_int' from incompatible pointer type
In file included from /usr/src/sbin/atm/ilmid/ilmid.c:879:
/usr/src/sbin/atm/ilmid/ilmid.c:659: warning: passing arg 0 of
`asn_get_objid' from incompatible pointer type
In file included from /usr/src/sbin/atm/ilmid/ilmid.c:882:
/usr/src/sbin/atm/ilmid/ilmid.c:737: warning: passing arg 0 of
`asn_get_octet' from incompatible pointer type
In file included from /usr/src/sbin/atm/ilmid/ilmid.c:2144:
/usr/src/sbin/atm/ilmid/ilmid.c: In function `process_get':
/usr/src/sbin/atm/ilmid/ilmid.c:1833: warning: passing arg 0 of
`get_local_ip' from incompatible pointer type
In file included from /usr/src/sbin/atm/ilmid/ilmid.c:2328:
/usr/src/sbin/atm/ilmid/ilmid.c: In function `ilmi_do_state':
/usr/src/sbin/atm/ilmid/ilmid.c:1074: warning: passing arg 0 of
`oid_ncmp' from incompatible pointer type
/usr/src/sbin/atm/ilmid/ilmid.c:1074: warning: passing arg 0 of
`oid_ncmp' from incompatible pointer type
In file included from /usr/src/sbin/atm/ilmid/ilmid.c:2384:
/usr/src/sbin/atm/ilmid/ilmid.c:1074: warning: passing arg 0 of
`oid_ncmp' from incompatible pointer type
/usr/src/sbin/atm/ilmid/ilmid.c:1074: warning: passing arg 0 of
`oid_ncmp' from incompatible pointer type
In file included from /usr/src/sbin/atm/ilmid/ilmid.c:2425:
/usr/src/sbin/atm/ilmid/ilmid.c:1074: warning: passing arg 0 of
`oid_ncmp' from incompatible pointer type
/usr/src/sbin/atm/ilmid/ilmid.c:1074: warning: passing arg 0 of
`oid_ncmp' from incompatible pointer type
*** Error code 1
Stop in /usr/src/sbin/atm/ilmid.
*** Error code 1

Stop in /usr/src/sbin/atm.
*** Error code 1

I checked the messages and submit a patch to current@freebsd.org. I got 
some replies and all suggesting together appended result was coming out.

I was told to send the 'final' patch (in context format) to audit for 
review. It would be nice to inform me about the further steps and time 
frames, because I submit sth. to the core distribution first time.

Thanks for patience,
Jens

--------------000108030408030604070306
Content-Type: text/plain;
 name="patch-sbin_atm_ilmid_ilmid_c"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="patch-sbin_atm_ilmid_ilmid_c"

*** sbin/atm/ilmid/ilmid.c.orig	Sun Mar  2 00:30:57 2003
--- sbin/atm/ilmid/ilmid.c	Sun Mar  2 01:45:06 2003
***************
*** 92,98 ****
  #define	ASN_IPADDR	0x40
  #define	ASN_TIMESTAMP	0x43
  
! static char *Var_Types[] = { "", "", "ASN_INTEGER", "", "ASN_OCTET", "ASN_NULL", "ASN_OBJID" };
  
  /*
   * Define SNMP PDU types
--- 92,99 ----
  #define	ASN_IPADDR	0x40
  #define	ASN_TIMESTAMP	0x43
  
! static const char * const Var_Types[] = { "", "", "ASN_INTEGER", "", "ASN_OCTET",
! 		"ASN_NULL", "ASN_OBJID" };
  
  /*
   * Define SNMP PDU types
***************
*** 103,110 ****
  #define	PDU_TYPE_SET		0xA3
  #define	PDU_TYPE_TRAP		0xA4
  
! static char *PDU_Types[] = { "GET REQUEST", "GETNEXT REQUEST", "GET RESPONSE", "SET REQUEST",
! 	"TRAP" };
  
  /*
   * Define TRAP codes
--- 104,111 ----
  #define	PDU_TYPE_SET		0xA3
  #define	PDU_TYPE_TRAP		0xA4
  
! static const char * const PDU_Types[] = { "GET REQUEST", "GETNEXT REQUEST",
! 		"GET RESPONSE", "SET REQUEST", "TRAP" };
  
  /*
   * Define TRAP codes
***************
*** 162,168 ****
  	union {
  		int		ival;		/* INTEGER/TIMESTAMP */
  		Objid		oval;		/* OBJID */
! 		long		aval;		/* IPADDR */
  		char		sval[STRLEN];	/* OCTET */
  	} var;
  	Variable	*next;
--- 163,169 ----
  	union {
  		int		ival;		/* INTEGER/TIMESTAMP */
  		Objid		oval;		/* OBJID */
! 		uint32_t	aval;		/* IPADDR */
  		char		sval[STRLEN];	/* OCTET */
  	} var;
  	Variable	*next;
***************
*** 173,182 ****
   * which doesn't have the last three fields is the TRAP type.
   */
  struct snmp_header {
! 	int		pdulen;
! 	int		version;
  	char		community[64];
! 	int		pdutype;
  
  	/* GET/GETNEXT/GETRESP/SET */
  	int		reqid;
--- 174,183 ----
   * which doesn't have the last three fields is the TRAP type.
   */
  struct snmp_header {
! 	uint32_t	pdulen;
! 	uint32_t	version;
  	char		community[64];
! 	uint32_t	pdutype;
  
  	/* GET/GETNEXT/GETRESP/SET */
  	int		reqid;
***************
*** 185,195 ****
  
  	/* TRAP */
  	Objid		enterprise;
! 	int		ipaddr;
  	int		generic_trap;
  	int		specific_trap;
  
! 	int		varlen;
  	Variable	*head,
  			*tail;
  };
--- 186,196 ----
  
  	/* TRAP */
  	Objid		enterprise;
! 	uint32_t	ipaddr;
  	int		generic_trap;
  	int		specific_trap;
  
! 	uint32_t	varlen;
  	Variable	*head,
  			*tail;
  };
***************
*** 210,216 ****
   * foresiggrp:	FORE specific Objid we see alot of (being connected to FORE
   *			switches...)
   */
! Objid	Objids[] = {
  #define	SYS_OBJID	0
  	{{  8, 43, 6, 1, 2, 1, 1, 2, 0 }},
  #define	UPTIME_OBJID	1
--- 211,217 ----
   * foresiggrp:	FORE specific Objid we see alot of (being connected to FORE
   *			switches...)
   */
! const Objid	Objids[] = {
  #define	SYS_OBJID	0
  	{{  8, 43, 6, 1, 2, 1, 1, 2, 0 }},
  #define	UPTIME_OBJID	1
***************
*** 279,285 ****
   * Temporary buffer for building response packets. Should help ensure
   * that we aren't accidently overwriting some other memory.
   */
! u_char	Resp_Buf[1024];
  
  /*
   * Copy the reponse into a buffer we can modify without
--- 280,286 ----
   * Temporary buffer for building response packets. Should help ensure
   * that we aren't accidently overwriting some other memory.
   */
! char	Resp_Buf[1024];
  
  /*
   * Copy the reponse into a buffer we can modify without
***************
*** 291,298 ****
  /*
   * TRAP generic trap types
   */
! char	*Traps[] = { "coldStart", "warmStart", "linkDown", "linkUp",
! 		"authenticationFailure", "egpNeighborLoss",
  			"enterpriseSpecific" };
  
  
--- 292,299 ----
  /*
   * TRAP generic trap types
   */
! const char	*Traps[] = { "coldStart", "warmStart", "linkDown", "linkUp",
! 			"authenticationFailure", "egpNeighborLoss",
  			"enterpriseSpecific" };
  
  
***************
*** 320,325 ****
--- 321,329 ----
   */
  Objid			addressEntry[MAX_UNITS + 1];
  
+ static const char	ilmi_ident_str[] = "ILMI";
+ static const size_t	ilmi_ident_str_len = strlen("ILMI");
+ 
  /*
   * When this daemon started
   */
***************
*** 335,345 ****
  #define	LOG_FILE	"/var/log/ilmid"
  FILE	*Log;			/* File descriptor for log messages */
  
! void	set_reqid( u_char *, int );
! void	Increment_DL( int );
! void	Decrement_DL( int );
  
! static char	*Months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
  			     "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
  
  /*
--- 339,349 ----
  #define	LOG_FILE	"/var/log/ilmid"
  FILE	*Log;			/* File descriptor for log messages */
  
! static void	set_reqid( char *, uint32_t );
! static void	Increment_DL( int );
! static void	Decrement_DL( int );
  
! static const char	*Months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
  			     "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
  
  /*
***************
*** 355,368 ****
   *	none
   *
   */
! void
! write_timestamp()
  {
! 	time_t		clock;
  	struct tm 	*tm;
  
! 	clock = time ( (time_t)NULL );
! 	tm = localtime ( &clock );
  
  	if ( Log && Debug_Level > 1 )
  	    if ( Log != stderr )
--- 359,372 ----
   *	none
   *
   */
! static void
! write_timestamp(void)
  {
! 	time_t		cur_clock;
  	struct tm 	*tm;
  
! 	cur_clock = time ( NULL );
! 	tm = localtime ( &cur_clock );
  
  	if ( Log && Debug_Level > 1 )
  	    if ( Log != stderr )
***************
*** 385,396 ****
   *	none
   *
   */
! void
! hexdump ( bp, len )
! 	u_char	*bp;
! 	int	len;
  {
! 	int	i, j;
  
  	/*
  	 * Print as 4 groups of four bytes. Each byte is separated
--- 389,398 ----
   *	none
   *
   */
! static void
! hexdump ( const char *bp, const uint32_t len )
  {
! 	uint32_t	i, j;
  
  	/*
  	 * Print as 4 groups of four bytes. Each byte is separated
***************
*** 449,471 ****
   *	<len>	- decoded length
   *
   */
! int
! asn_get_pdu_len ( bufp, plen )
! 	u_char	**bufp;
! 	int	*plen;
! {
! 	u_char	*bp = *bufp;
! 	int	len = 0;
! 	int	i, b;
  
  	b = *bp++;
  	if ( plen )
! 		(*plen)--;
! 	 if ( b & 0x80 ) {
! 		for ( i = 0; i < (b & ~0x80); i++ ) {
  			len = len * 256 + *bp++;
  			if ( plen )
! 				(*plen)--;
  		}
  	} else
  		len = b;
--- 451,471 ----
   *	<len>	- decoded length
   *
   */
! static int
! asn_get_pdu_len ( const char ** const bufp, uint32_t * const plen )
! {
! 	const char *bp =	*bufp;
! 	uint32_t	len = 0;
! 	uint32_t	i, b;
  
  	b = *bp++;
  	if ( plen )
! 		--(*plen);
! 	if ( b & 0x80 ) {
! 		for ( i = 0; i < (b & ~0x80); ++i ) {
  			len = len * 256 + *bp++;
  			if ( plen )
! 				--(*plen);
  		}
  	} else
  		len = b;
***************
*** 490,503 ****
   *	<val>	- value encoding represented
   *
   */
! int
! asn_get_encoded ( bufp, len )
! 	u_char	**bufp;
! 	int	*len;
! {
! 	u_char	*bp = *bufp;
! 	int	val = 0;
! 	int	l = *len;
  
  	/*
  	 * Keep going while high bit is set
--- 490,501 ----
   *	<val>	- value encoding represented
   *
   */
! static int
! asn_get_encoded ( const char ** const bufp, uint32_t * const len )
! {
! 	const char	*bp = *bufp;
! 	int		val = 0; /* FIXME: signed? sure? */
! 	uint32_t 	l = *len;
  
  	/*
  	 * Keep going while high bit is set
***************
*** 507,513 ****
  		 * Each byte can represent 7 bits
  	 	 */
  		val = ( val << 7 ) + ( *bp & ~0x80 );
! 		l--;
  	} while ( *bp++ & 0x80 );
  
  	*bufp = bp;		/* update buffer pointer */
--- 505,511 ----
  		 * Each byte can represent 7 bits
  	 	 */
  		val = ( val << 7 ) + ( *bp & ~0x80 );
! 		--l;
  	} while ( *bp++ & 0x80 );
  
  	*bufp = bp;		/* update buffer pointer */
***************
*** 531,553 ****
   *	<val>	- value of encoded integer
   *
   */
! int
! asn_get_int ( bufp, plen )
! 	u_char	**bufp;
! 	int	*plen;
  {
! 	int	i;
! 	int	len;
! 	int	v = 0;
! 	u_char	*bp = *bufp;
  
  	len = *bp++;
  	if ( plen )
! 		(*plen)--;
! 	for ( i = 0; i < len; i++ ) {
  		v = (v * 256) + *bp++;
  		if ( plen )
! 			(*plen)--;
  	}
  	*bufp = bp;
  	return ( v );
--- 529,549 ----
   *	<val>	- value of encoded integer
   *
   */
! static int
! asn_get_int ( const char ** const bufp, uint32_t * const plen )
  {
! 	uint32_t	i;
! 	uint32_t	len;
! 	int		v = 0;
! 	const char	*bp = *bufp;
  
  	len = *bp++;
  	if ( plen )
! 		--(*plen);
! 	for ( i = 0; i < len; ++i ) {
  		v = (v * 256) + *bp++;
  		if ( plen )
! 			--(*plen);
  	}
  	*bufp = bp;
  	return ( v );
***************
*** 565,582 ****
   *	<bufp>	- updated buffer pointer
   *
   */
! void
! asn_set_int ( bufp, val )
! 	u_char	**bufp;
! 	int	val;
  {
  	union {
! 		int	i;
! 		u_char	c[4];
  	} u;
! 	int	len = sizeof(int);
! 	int	i = 0;
! 	u_char	*bp = *bufp;
  
  	/* Check for special case where val == 0 */
  	if ( val == 0 ) {
--- 561,576 ----
   *	<bufp>	- updated buffer pointer
   *
   */
! static void
! asn_set_int ( char **bufp, const uint32_t val )
  {
  	union {
! 		uint32_t	i;
! 		u_char	c[sizeof(uint32_t)];
  	} u;
! 	uint32_t	len = sizeof(uint32_t);
! 	uint32_t	i = 0;
! 	char *bp = *bufp;
  
  	/* Check for special case where val == 0 */
  	if ( val == 0 ) {
***************
*** 588,603 ****
  
  	u.i = htonl ( val );
  
! 	while ( u.c[i] == 0  && i++ < sizeof(int) )
! 		len--;
  
  	if ( u.c[i] > 0x7f ) {
! 		i--;
! 		len++;
  	}
  
! 	*bp++ = len;
! 	bcopy ( (caddr_t)&u.c[sizeof(int)-len], bp, len );
  	bp += len;
  	*bufp = bp;
  
--- 582,597 ----
  
  	u.i = htonl ( val );
  
! 	while ( u.c[i] == 0 && ++i < sizeof(u.i) ) /* 'i++ < x' increases x even if increase break bounds */
! 		--len;
  
  	if ( u.c[i] > 0x7f ) {
! 		--i;
! 		++len;
  	}
  
! 	*bp++ = (char)len;
! 	bcopy ( &u.c[sizeof(u.i)-len], bp, len );
  	bp += len;
  	*bufp = bp;
  
***************
*** 614,624 ****
   *	none
   *
   */
! void
! print_objid ( objid )
! 	Objid	*objid;
  {
! 	int	i;
  
  	/*
  	 * First oid coded as 40 * X + Y
--- 608,617 ----
   *	none
   *
   */
! static void
! print_objid ( const Objid * const objid )
  {
! 	uint32_t	i, cmp = objid->oid[0];
  
  	/*
  	 * First oid coded as 40 * X + Y
***************
*** 628,634 ****
  	    fprintf ( Log, ".%d.%d", objid->oid[1] / 40,
  		objid->oid[1] % 40 );
  	}
! 	for ( i = 2; i <= objid->oid[0]; i++ )
  	    if ( Log )
  		fprintf ( Log, ".%d", objid->oid[i] );
  	if ( Log )
--- 621,627 ----
  	    fprintf ( Log, ".%d.%d", objid->oid[1] / 40,
  		objid->oid[1] % 40 );
  	}
! 	for ( i = 2; i <= cmp; ++i )
  	    if ( Log )
  		fprintf ( Log, ".%d", objid->oid[i] );
  	if ( Log )
***************
*** 651,675 ****
   *	plen	- (possibly) adjusted PDU length
   *
   */
! void
! asn_get_objid ( bufp, objid, plen )
! 	u_char	**bufp;
! 	Objid	*objid;
! 	int	*plen;
! {
! 	int	len;
! 	u_char	*bp = *bufp;
! 	int	*ip = (int *)objid + 1;	/* First byte will contain length */
! 	int	oidlen = 0;
  
  	len = *bp++;
  	if ( plen )
! 		(*plen)--;
  	while ( len ) {
  		*ip++ = asn_get_encoded ( &bp, &len );
  		if ( plen )
! 			(*plen)--;
! 		oidlen++;
  	}
  	objid->oid[0] = oidlen;
  	*bufp = bp;
--- 644,665 ----
   *	plen	- (possibly) adjusted PDU length
   *
   */
! static void
! asn_get_objid ( const char **bufp, Objid * const objid, uint32_t * const plen )
! {
! 	uint32_t	len;
! 	const char	*bp = *bufp;
! 	int		*ip = (int *)objid + 1;	/* First byte will contain length */ /* FIXME: first byte or first word? */
! 	uint32_t	oidlen = 0;
  
  	len = *bp++;
  	if ( plen )
! 		--(*plen);
  	while ( len ) {
  		*ip++ = asn_get_encoded ( &bp, &len );
  		if ( plen )
! 			--(*plen);
! 		++oidlen;
  	}
  	objid->oid[0] = oidlen;
  	*bufp = bp;
***************
*** 681,710 ****
   * Put OBJID - assumes elements <= 16383 for two byte coding
   *
   */
! int
! asn_put_objid ( bufp, objid )
! 	u_char	**bufp;
! 	Objid	*objid;
! {
! 	int	len = 0;
! 	u_char	*bp = *bufp;
! 	u_char	*cpp;
! 	int	i;
  
  	cpp = bp;
  	*bp++ = objid->oid[0];
! 	len++;
! 	for ( i = 1; i <= objid->oid[0]; i++ ) {
! 		u_int	c = objid->oid[i];
  
  		while ( c > 127 ) {
  			*bp++ = ( ( c >> 7 ) & 0x7f ) | 0x80;
! 			len++;
  			c &= 0x7f;		/* XXX - assumption of two bytes */
! 			(*cpp)++;
  		}
  		*bp++ = c;
! 		len++;
  	}
  
  	*bufp = bp;
--- 671,699 ----
   * Put OBJID - assumes elements <= 16383 for two byte coding
   *
   */
! static int
! asn_put_objid ( char **bufp, const Objid * const objid )
! {
! 	uint32_t	len = 0;
! 	char		*bp = *bufp;
! 	char		*cpp;
! 	uint32_t	i;
! 	const uint32_t	oidlen = objid->oid[0];
  
  	cpp = bp;
  	*bp++ = objid->oid[0];
! 	++len;
! 	for ( i = 1; i <= oidlen; ++i ) { /* FIXME: objid->oid[0] can be greater than 128 which is sizeof(objid->oid) */
! 		unsigned char	c = objid->oid[i];
  
  		while ( c > 127 ) {
  			*bp++ = ( ( c >> 7 ) & 0x7f ) | 0x80;
! 			++len;
  			c &= 0x7f;		/* XXX - assumption of two bytes */
! 			++(*cpp);
  		}
  		*bp++ = c;
! 		++len;
  	}
  
  	*bufp = bp;
***************
*** 729,754 ****
   *	plen	- (possibly) adjusted PDU length
   *
   */
! void
! asn_get_octet ( bufp, octet, plen )
! 	u_char	**bufp;
! 	char	*octet;
! 	int	*plen;
! {
! 	u_char	*bp = *bufp;
! 	int	i = 0;
! 	int	len = 0;
  
  	/*
  	 * &i is really a dummy value here as we don't keep track
  	 * of the ongoing buffer length
  	 */
! 	len = asn_get_encoded ( &bp, &i, plen );
  
! 	for ( i = 0; i < len; i++ ) {
  		*octet++ = *bp++;
  		if ( plen )
! 			(*plen)--;
  	}
  
  	*bufp = bp;
--- 718,740 ----
   *	plen	- (possibly) adjusted PDU length
   *
   */
! static void
! asn_get_octet ( const char ** const bufp, char *octet, uint32_t	* const plen )
! {
! 	const char	*bp = *bufp;
! 	uint32_t	i = 0;
! 	uint32_t	len = 0;
  
  	/*
  	 * &i is really a dummy value here as we don't keep track
  	 * of the ongoing buffer length
  	 */
! 	len = (uint32_t)asn_get_encoded ( &bp, &i /* FIXME: what's that? , plen */ );
  
! 	for ( i = 0; i < len; ++i ) {
  		*octet++ = *bp++;
  		if ( plen )
! 			--(*plen);
  	}
  
  	*bufp = bp;
***************
*** 767,777 ****
   *	none
   *
   */
! void
! print_header ( Hdr )
! 	Snmp_Header *Hdr;
  {
! 	Variable	*var;
  
  	if ( Log ) {
  	    write_timestamp();
--- 753,762 ----
   *	none
   *
   */
! static void
! print_header ( const Snmp_Header * const Hdr )
  {
! 	const Variable	*var;
  
  	if ( Log ) {
  	    write_timestamp();
***************
*** 826,852 ****
   *	none
   *
   */
! void
! parse_oids ( h, bp )
! 	Snmp_Header	*h;
! 	caddr_t		*bp;
  {
! 	int		len = h->varlen;
! 	int		sublen;
  	Variable	*var;
! 	caddr_t		bufp = *bp;
  
  	while ( len > 0 ) {
  	    if ( *bufp++ == ASN_SEQUENCE ) {
! 		len--;
  
  		/* Create new Variable instance */
! 		if ( ( var = (Variable *)malloc(sizeof(Variable)) ) == NULL )
  		{
  			*bp = bufp;
  			return;
  		}
! 		bzero(var, sizeof(Variable));
  		/* Link to tail */
  		if ( h->tail )
  			h->tail->next = var;
--- 811,835 ----
   *	none
   *
   */
! static void
! parse_oids ( Snmp_Header * const h, const char ** const bp )
  {
! 	uint32_t	len = h->varlen;
! 	uint32_t	sublen;
  	Variable	*var;
! 	const char	*bufp = *bp;
  
  	while ( len > 0 ) {
  	    if ( *bufp++ == ASN_SEQUENCE ) {
! 		--len;
  
  		/* Create new Variable instance */
! 		if ( ( var = malloc(sizeof(*var)) ) == NULL )
  		{
  			*bp = bufp;
  			return;
  		}
! 		bzero(var, sizeof(*var));
  		/* Link to tail */
  		if ( h->tail )
  			h->tail->next = var;
***************
*** 872,879 ****
  			var->var.ival = asn_get_int ( &bufp, &len );
  			break;
  		case ASN_NULL:
! 			bufp++;
! 			len--;
  			break;
  		case ASN_OBJID:
  			asn_get_objid ( &bufp, &var->var.oval, &len );
--- 855,862 ----
  			var->var.ival = asn_get_int ( &bufp, &len );
  			break;
  		case ASN_NULL:
! 			++bufp;
! 			--len;
  			break;
  		case ASN_OBJID:
  			asn_get_objid ( &bufp, &var->var.oval, &len );
***************
*** 913,937 ****
   *		- generated SNMP header
   *
   */
! Snmp_Header *
! asn_get_header ( bufp )
! 	u_char **bufp;
  {
  	Snmp_Header	*h;
! 	u_char		*bp = *bufp;
! 	int		len = 0;
! 	int		dummy = 0;
  
  	/*
  	 * Allocate memory to hold the SNMP header
  	 */
! 	if ( ( h = (Snmp_Header *)malloc(sizeof(Snmp_Header)) ) == NULL )
  		return ( (Snmp_Header *)NULL );
  
  	/*
  	 * Ensure that we wipe the slate clean
  	 */
! 	bzero(h, sizeof(Snmp_Header));
  
  	/*
  	 * PDU has to start as SEQUENCE OF
--- 896,921 ----
   *		- generated SNMP header
   *
   */
! static Snmp_Header *
! asn_get_header ( const char **bufp )
  {
  	Snmp_Header	*h;
! 	const char	*bp = *bufp;
! 	uint32_t	len = 0;
! 	/*
! 	uint32_t	dummy = 0;
! 	*/
  
  	/*
  	 * Allocate memory to hold the SNMP header
  	 */
! 	if ( ( h = malloc(sizeof(*h)) ) == NULL ) /* void * matches any pointer type */
  		return ( (Snmp_Header *)NULL );
  
  	/*
  	 * Ensure that we wipe the slate clean
  	 */
! 	bzero(h, sizeof(*h));
  
  	/*
  	 * PDU has to start as SEQUENCE OF
***************
*** 970,976 ****
  	 */
  	if ( h->pdutype != PDU_TYPE_TRAP ) {	/* TRAP uses different format */
  
! 		(void) asn_get_pdu_len ( &bp, &dummy );
  
  		/* Request ID */
  		if ( *bp++ != ASN_INTEGER ) {
--- 954,960 ----
  	 */
  	if ( h->pdutype != PDU_TYPE_TRAP ) {	/* TRAP uses different format */
  
! 		(void) asn_get_pdu_len ( &bp, NULL ); /* &dummy -> NULL */
  
  		/* Request ID */
  		if ( *bp++ != ASN_INTEGER ) {
***************
*** 1025,1041 ****
   *	1	- Objid's don't match
   *
   */
! int
! oid_cmp ( oid1, oid2 )
! 	Objid *oid1, *oid2;
  {
! 	int	i;
! 	int	len;
  
  	/*
  	 * Compare lengths
  	 */
! 	if ( !(oid1->oid[0] == oid2->oid[0] ) )
  		/* Different lengths */
  		return ( 1 );
  
--- 1009,1024 ----
   *	1	- Objid's don't match
   *
   */
! static int
! oid_cmp ( const Objid * const oid1, const Objid * const oid2 )
  {
! 	uint32_t	i;
! 	uint32_t	len;
  
  	/*
  	 * Compare lengths
  	 */
! 	if ( !(oid1->oid[0] == oid2->oid[0] ) ) /* FIXME: how about if( oid1->oid[0] != oid2->oid[0] ) */
  		/* Different lengths */
  		return ( 1 );
  
***************
*** 1067,1078 ****
   *	1	- Objid's don't match
   *
   */
! int
! oid_ncmp ( oid1, oid2, len )
! 	Objid *oid1, *oid2;
! 	int	len;
  {
! 	int	i;
  
  	/*
  	 * value by value compare
--- 1050,1059 ----
   *	1	- Objid's don't match
   *
   */
! static int
! oid_ncmp ( const Objid * const oid1, const Objid * const oid2, const uint32_t len )
  {
! 	uint32_t	i;
  
  	/*
  	 * value by value compare
***************
*** 1098,1108 ****
   *	-1	- no matching Variable found
   *
   */
! int
! find_var ( var )
! 	Variable	*var;
  {
! 	int	i;
  
  	for ( i = 0; i < NUM_OIDS; i++ )
  		if ( oid_cmp ( &var->oid, &Objids[i] ) == 0 ) {
--- 1079,1088 ----
   *	-1	- no matching Variable found
   *
   */
! static int
! find_var ( const Variable * const var )
  {
! 	size_t		i;
  
  	for ( i = 0; i < NUM_OIDS; i++ )
  		if ( oid_cmp ( &var->oid, &Objids[i] ) == 0 ) {
***************
*** 1167,1185 ****
   *	none
   *
   */
! void
! build_pdu ( hdr, type )
! 	Snmp_Header 	*hdr;
! 	int		type;
  {
! 	u_char		*bp = Resp_Buf;
! 	u_char		*vpp;
! 	u_char		*ppp;
  	int		erridx = 0;
  	int		varidx = 1;
! 	int		varlen = 0;
! 	int		pdulen = 0;
! 	int		traplen = 0;
  	Variable	*var;
  
  	/*
--- 1147,1163 ----
   *	none
   *
   */
! static void
! build_pdu ( Snmp_Header * const hdr, const int type )
  {
! 	char		*bp = Resp_Buf;
! 	char		*vpp;
! 	char		*ppp;
  	int		erridx = 0;
  	int		varidx = 1;
! 	uint32_t	varlen = 0;
! 	uint32_t	pdulen = 0;
! 	uint32_t	traplen = 0;
  	Variable	*var;
  
  	/*
***************
*** 1188,1201 ****
  	bzero ( Resp_Buf, sizeof(Resp_Buf) );
  
  	/* [0] is reserved for overall length */
! 	bp++;
  
  	/* Start with SEQUENCE OF */
  	*bp++ = ASN_SEQUENCE;
  	/* - assume we can code length in two octets */
! 	*bp++ = 0x82;
! 	bp++;
! 	bp++;
  	/* Version */
  	*bp++ = ASN_INTEGER;
  	asn_set_int ( &bp, hdr->version );
--- 1166,1179 ----
  	bzero ( Resp_Buf, sizeof(Resp_Buf) );
  
  	/* [0] is reserved for overall length */
! 	++bp;
  
  	/* Start with SEQUENCE OF */
  	*bp++ = ASN_SEQUENCE;
  	/* - assume we can code length in two octets */
! 	*bp++ = (unsigned char)0x82;
! 	++bp;
! 	++bp;
  	/* Version */
  	*bp++ = ASN_INTEGER;
  	asn_set_int ( &bp, hdr->version );
***************
*** 1208,1214 ****
  	*bp++ = type;
  	ppp = bp;
  	/* Length of OID data - assume it'll fit in one octet */
! 	bp++;
  
  	if ( type != PDU_TYPE_TRAP ) {
  	    /* Sequence ID */
--- 1186,1192 ----
  	*bp++ = type;
  	ppp = bp;
  	/* Length of OID data - assume it'll fit in one octet */
! 	++bp;
  
  	if ( type != PDU_TYPE_TRAP ) {
  	    /* Sequence ID */
***************
*** 1250,1256 ****
  		/* Fill in IP address */
  		*bp++ = ASN_IPADDR;
  		*bp++ = sizeof ( hdr->ipaddr );
! 		bcopy ( (caddr_t)&hdr->ipaddr, bp, sizeof(hdr->ipaddr) );
  		bp += sizeof(hdr->ipaddr);
  
  		/* Fill in generic and specific trap types */
--- 1228,1234 ----
  		/* Fill in IP address */
  		*bp++ = ASN_IPADDR;
  		*bp++ = sizeof ( hdr->ipaddr );
! 		bcopy ( &hdr->ipaddr, bp, sizeof(hdr->ipaddr) );
  		bp += sizeof(hdr->ipaddr);
  
  		/* Fill in generic and specific trap types */
***************
*** 1271,1314 ****
  
  	/* SEQUENCE OF */
  	*bp++ = ASN_SEQUENCE;
! 	*bp++ = 0x82;
  	/* - assume we can code length in two octets */
  	vpp = bp;
  	varlen = 0;
! 	bp++;
! 	bp++;
  
  	/* Install Variables */
  	var = hdr->head;
  	varidx = 1;
  	while ( var ) {
! 		u_char *bpp;
! 		int	len = 0;
  
  		/* SEQUENCE OF */
  		*bp++ = ASN_SEQUENCE;
! 		*bp++ = 0x82;
  		/* - assume we can code length in two octets */
  		bpp = bp;
! 		bp++;
! 		bp++;
  		/* OBJID */
  		*bp++ = ASN_OBJID;
! 		len++;
  
  		len += asn_put_objid ( &bp, &var->oid );
  
  		if ( erridx && varidx >= erridx ) {
  			/* Code this variable as NULL */
  			*bp++ = ASN_NULL;
! 			len++;
! 			bp++;
! 			len++;
  		} else {
! 			u_char *lpp;
  			/* Variable type */
  			*bp++ = var->type;
! 			len++;
  			lpp = bp;
  			switch ( var->type ) {
  			case ASN_INTEGER:
--- 1249,1292 ----
  
  	/* SEQUENCE OF */
  	*bp++ = ASN_SEQUENCE;
! 	*bp++ = (unsigned char)0x82;
  	/* - assume we can code length in two octets */
  	vpp = bp;
  	varlen = 0;
! 	++bp;
! 	++bp;
  
  	/* Install Variables */
  	var = hdr->head;
  	varidx = 1;
  	while ( var ) {
! 		char		*bpp;
! 		uint32_t	len = 0;
  
  		/* SEQUENCE OF */
  		*bp++ = ASN_SEQUENCE;
! 		*bp++ = (unsigned char)0x82;
  		/* - assume we can code length in two octets */
  		bpp = bp;
! 		++bp;
! 		++bp;
  		/* OBJID */
  		*bp++ = ASN_OBJID;
! 		++len;
  
  		len += asn_put_objid ( &bp, &var->oid );
  
  		if ( erridx && varidx >= erridx ) {
  			/* Code this variable as NULL */
  			*bp++ = ASN_NULL;
! 			++len;
! 			++bp;
! 			++len;
  		} else {
! 			char	*lpp;
  			/* Variable type */
  			*bp++ = var->type;
! 			++len;
  			lpp = bp;
  			switch ( var->type ) {
  			case ASN_INTEGER:
***************
*** 1317,1331 ****
  				break;
  			case ASN_OCTET:
  				*bp++ = var->var.sval[0];
! 				len++;
! 				bcopy ( (caddr_t)&var->var.sval[1],
  					bp, var->var.sval[0] );
  				len += var->var.sval[0];
  				bp += var->var.sval[0];
  				break;
  			case ASN_NULL:
  				*bp++ = 0x00;
! 				len++;
  				break;
  			case ASN_OBJID:
  				len += asn_put_objid ( &bp, &var->var.oval );
--- 1295,1309 ----
  				break;
  			case ASN_OCTET:
  				*bp++ = var->var.sval[0];
! 				++len;
! 				bcopy ( &var->var.sval[1],
  					bp, var->var.sval[0] );
  				len += var->var.sval[0];
  				bp += var->var.sval[0];
  				break;
  			case ASN_NULL:
  				*bp++ = 0x00;
! 				++len;
  				break;
  			case ASN_OBJID:
  				len += asn_put_objid ( &bp, &var->var.oval );
***************
*** 1333,1343 ****
  			case ASN_SEQUENCE:
  				break;
  			case ASN_IPADDR:
! 				*bp++ = 4;
! 				len++;
! 				bcopy ( (caddr_t)&var->var.aval, bp, 4 );
! 				len += 4;
! 				bp += 4;
  				break;
  			case ASN_TIMESTAMP:
  				asn_set_int ( &bp, var->var.ival );
--- 1311,1321 ----
  			case ASN_SEQUENCE:
  				break;
  			case ASN_IPADDR:
! 				*bp++ = sizeof(var->var.aval);
! 				++len;
! 				bcopy ( &var->var.aval, bp, sizeof(var->var.aval) );
! 				len += sizeof(var->var.aval);
! 				bp += sizeof(var->var.aval);
  				break;
  			case ASN_TIMESTAMP:
  				asn_set_int ( &bp, var->var.ival );
***************
*** 1349,1355 ****
  		}
  
  		/* Accumulate total Variable sequence length */
! 		varlen += (len + 4);
  
  		/* Fill in length of this sequence */
  		bpp[1] = len & 0xff;
--- 1327,1333 ----
  		}
  
  		/* Accumulate total Variable sequence length */
! 		varlen += (len + 4); /* FIXME: why 4? is it sizeof(var->var.aval) */
  
  		/* Fill in length of this sequence */
  		bpp[1] = len & 0xff;
***************
*** 1385,1402 ****
  	return;
  }
  
! void
! free_pdu ( hdr )
! Snmp_Header *hdr;
  {
! 	Variable	*var;
  
! 	while ( hdr->head ) {
! 		var = hdr->head->next;		/* Save next link */
! 		free ( hdr->head );		/* Free current var */
! 		hdr->head = var;		/* Set head to next link */
  	}
  
  	free ( hdr );				/* Free fixed portion */
  }
  
--- 1363,1380 ----
  	return;
  }
  
! static void
! free_pdu ( Snmp_Header *hdr )
  {
! 	Variable	*var = hdr->head, *var_next;
  
! 	while ( var ) {
! 		var_next = var->next;		/* Save next link */
! 		free ( var );			/* Free current var */
! 		var_next = var;			/* Set head to saved next link */
  	}
  
+ 	hdr->head = NULL;
  	free ( hdr );				/* Free fixed portion */
  }
  
***************
*** 1411,1439 ****
   *	none	- request id may/may not be set
   *
   */
! void
! set_reqid ( resp, reqid )
! 	u_char	*resp;
! 	int	reqid;
  {
! 	u_char		*bp = (u_char *)&resp[18];
  	union {
! 		int	i;
! 		u_char	c[4];
  	} u;
  
! 	u.i = htonl(reqid);
  
  	/*
  	 * Replace the current Request ID with the supplied value
  	 */
! 	bcopy ( (caddr_t)&u.c[4-resp[17]], bp, resp[17] );
  
  	return;
  }
  
  /*
!  * Send a generic response packet
   *
   * Arguments:
   *	sd	- socket to send the reply on
--- 1389,1415 ----
   *	none	- request id may/may not be set
   *
   */
! static void
! set_reqid ( char *resp, uint32_t reqid )
  {
! 	char	*bp = resp+18;
  	union {
! 		uint32_t	i;
! 		char		c[sizeof(uint32_t)];
  	} u;
  
! 	u.i = htonl( reqid );
  
  	/*
  	 * Replace the current Request ID with the supplied value
  	 */
! 	bcopy ( &u.c[4-resp[17]], bp, resp[17] );
  
  	return;
  }
  
  /*
!  * Send a generic response packet - FIXME: documentation doesn't match declaration
   *
   * Arguments:
   *	sd	- socket to send the reply on
***************
*** 1444,1465 ****
   *	none	- response sent
   *
   */
! void
! send_resp ( intf, Hdr, resp )
! 	int		intf;
! 	Snmp_Header	*Hdr;
! 	u_char		*resp;
  {
  	int	n;
  
! 	if ( ilmi_fd[intf] > 0 ) {
! 	    n = write ( ilmi_fd[intf], (caddr_t)&resp[1], resp[0] );
  	    if ( Log && Debug_Level > 1 ) {
  		write_timestamp();
  		fprintf ( Log, "===== Sent %d of %d bytes (%d) =====\n", n, resp[0], ilmi_fd[intf] );
  		print_header ( Hdr );
  		if ( Debug_Level > 2 )
! 			hexdump ( (u_char *)&resp[1], resp[0] );
  	    }
  	}
  
--- 1420,1438 ----
   *	none	- response sent
   *
   */
! static void
! send_resp ( const int intf, Snmp_Header *Hdr, unsigned char *resp )
  {
  	int	n;
  
! 	if ( ilmi_fd[intf] > 0 ) { /* FIXME: does ilmi_fd[intf] exists? out of range? */
! 	    n = write ( ilmi_fd[intf], resp+1, resp[0] );
  	    if ( Log && Debug_Level > 1 ) {
  		write_timestamp();
  		fprintf ( Log, "===== Sent %d of %d bytes (%d) =====\n", n, resp[0], ilmi_fd[intf] );
  		print_header ( Hdr );
  		if ( Debug_Level > 2 )
! 			hexdump ( &resp[1], resp[0] );
  	    }
  	}
  
***************
*** 1471,1509 ****
   * Build a COLD_START TRAP PDU
   *
   */
! Snmp_Header *
! build_cold_start()
  {
  	Snmp_Header	*hdr;
  	Variable	*var;
  
! 	hdr = (Snmp_Header *)malloc(sizeof(Snmp_Header));
  	if (hdr == NULL) {
! 		fprintf(stderr, "malloc() failed in %s()\n", __func__);
  		exit(1);
  	}
! 	bzero(hdr, sizeof(Snmp_Header));
  
  	hdr->pdulen = 0;
  	hdr->version = SNMP_VERSION_1 - 1;
! 	snprintf ( hdr->community, sizeof(hdr->community), "ILMI" );
  
! 	hdr->ipaddr = 0x0;	/* 0.0.0.0 */
  	hdr->generic_trap = TRAP_COLDSTART;
! 	hdr->specific_trap = 0;
! 	bcopy ( (caddr_t)&Objids[ENTERPRISE_OBJID], (caddr_t)&hdr->enterprise,
  		sizeof(Objid) );
  
! 	hdr->head = (Variable *)malloc(sizeof(Variable));
! 	if (hdr == NULL) {
! 		fprintf(stderr, "malloc() failed in %s()\n", __func__);
  		exit(1);
  	}
! 	bzero(hdr->head, sizeof(Variable));
  
  	var = hdr->head;
! 	bcopy ( (caddr_t)&Objids[UPTIME_OBJID], (caddr_t)&var->oid,
! 		sizeof(Objid) );
  	var->type = ASN_NULL;
  
  	return ( hdr );
--- 1444,1483 ----
   * Build a COLD_START TRAP PDU
   *
   */
! static Snmp_Header *
! build_cold_start(void)
  {
  	Snmp_Header	*hdr;
  	Variable	*var;
  
! 	hdr = malloc(sizeof(*hdr));
  	if (hdr == NULL) {
! 		fprintf(stderr, "malloc() failed in %s() line %d\n", __func__, __LINE__);
  		exit(1);
  	}
! 	bzero(hdr, sizeof(*hdr));
  
+ 	/* FIXME: bzero has done that
  	hdr->pdulen = 0;
+ 	*/
  	hdr->version = SNMP_VERSION_1 - 1;
! 	snprintf ( hdr->community, ilmi_ident_str_len, ilmi_ident_str );
  
! 	/* FIXME: bzero: hdr->ipaddr = 0x0;	*/ /* 0.0.0.0 */
  	hdr->generic_trap = TRAP_COLDSTART;
! 	/* FIXME: bzero: hdr->specific_trap = 0; */
! 	bcopy ( &Objids[ENTERPRISE_OBJID], &hdr->enterprise,
  		sizeof(Objid) );
  
! 	hdr->head = malloc(sizeof(*hdr->head));
! 	if (hdr->head == NULL) {
! 		fprintf(stderr, "malloc() failed in %s() line %d\n", __func__, __LINE__);
  		exit(1);
  	}
! 	bzero(hdr->head, sizeof(*hdr->head));
  
  	var = hdr->head;
! 	bcopy ( &Objids[UPTIME_OBJID], &var->oid, sizeof(var->oid) );
  	var->type = ASN_NULL;
  
  	return ( hdr );
***************
*** 1513,1533 ****
   * Build a Generic PDU Header
   *
   */
! Snmp_Header *
! build_generic_header()
  {
  	Snmp_Header	*hdr;
  
! 	hdr = (Snmp_Header *)malloc(sizeof(Snmp_Header));
  	if (hdr == NULL) {
  		fprintf(stderr, "malloc() failed in %s()\n", __func__);
  		exit(1);
  	}
! 	bzero(hdr, sizeof(Snmp_Header));
  
! 	hdr->pdulen = 0;
  	hdr->version = SNMP_VERSION_1 - 1;
! 	snprintf ( hdr->community, sizeof(hdr->community), "ILMI" );
  
  	return ( hdr );
  }
--- 1487,1507 ----
   * Build a Generic PDU Header
   *
   */
! static Snmp_Header *
! build_generic_header( void )
  {
  	Snmp_Header	*hdr;
  
! 	hdr = malloc(sizeof(*hdr));
  	if (hdr == NULL) {
  		fprintf(stderr, "malloc() failed in %s()\n", __func__);
  		exit(1);
  	}
! 	bzero(hdr, sizeof(*hdr));
  
! 	/* FIXME: bzero: hdr->pdulen = 0; */
  	hdr->version = SNMP_VERSION_1 - 1;
! 	snprintf ( hdr->community, ilmi_ident_str_len, ilmi_ident_str );
  
  	return ( hdr );
  }
***************
*** 1546,1557 ****
   *      none            Information from HARP available
   *
   */
! void
! init_ilmi()
  {
!         struct  air_cfg_rsp     *cfg_info = NULL;
!         struct  air_int_rsp    *intf_info = NULL;
!         int                     buf_len;
  
  	/*
  	 * Get configuration info - what's available with 'atm sh config'
--- 1520,1531 ----
   *      none            Information from HARP available
   *
   */
! static void
! init_ilmi(void)
  {
!         struct  air_cfg_rsp	*cfg_info = NULL;
!         struct  air_int_rsp	*intf_info = NULL;
!         int			buf_len;
  
  	/*
  	 * Get configuration info - what's available with 'atm sh config'
***************
*** 1562,1568 ****
  	 */
  	if ( buf_len <= 0 ) {
  		bzero ( Cfg, sizeof(Cfg) );
! 		bzero( Intf, sizeof(Intf) );
  		NUnits = 0;
  		return;
  	}
--- 1536,1542 ----
  	 */
  	if ( buf_len <= 0 ) {
  		bzero ( Cfg, sizeof(Cfg) );
! 		bzero ( Intf, sizeof(Intf) );
  		NUnits = 0;
  		return;
  	}
***************
*** 1570,1580 ****
  	/*
  	 * Move to local storage
  	 */
!         bcopy ( cfg_info, (caddr_t)Cfg, buf_len );
  	/*
  	 * Compute how many units information was returned for
  	 */
!         NUnits = buf_len / sizeof(struct air_cfg_rsp);
  	/* Housecleaning */
          free ( cfg_info );
          cfg_info = NULL;
--- 1544,1554 ----
  	/*
  	 * Move to local storage
  	 */
!         bcopy ( cfg_info, Cfg, buf_len );
  	/*
  	 * Compute how many units information was returned for
  	 */
!         NUnits = buf_len / sizeof(*cfg_info);
  	/* Housecleaning */
          free ( cfg_info );
          cfg_info = NULL;
***************
*** 1593,1599 ****
  	/*
  	 * Move to local storage
  	 */
!         bcopy ( intf_info, (caddr_t)Intf, buf_len );
  	/* Housecleaning */
          free ( intf_info );
          intf_info = NULL;
--- 1567,1573 ----
  	/*
  	 * Move to local storage
  	 */
!         bcopy ( intf_info, Intf, buf_len );
  	/* Housecleaning */
          free ( intf_info );
          intf_info = NULL;
***************
*** 1617,1647 ****
   *      none
   *
   */
! void
! ilmi_open ()
  {
!         struct sockaddr_atm     satm;
!         struct t_atm_aal5       aal5;
!         struct t_atm_traffic    traffic;
!         struct t_atm_bearer     bearer;
!         struct t_atm_qos        qos;
  	struct t_atm_app_name	appname;
!         Atm_addr                subaddr;
!         char                    nifname[IFNAMSIZ];
!         int                     optlen;
!         int                     unit = 0;
  	u_char			sig_proto;
  
          init_ilmi();
  
! 	for ( unit = 0; unit < NUnits; unit++ ) {
  
  	    /*
  	     * ILMI only makes sense for UNI signalling protocols
  	     */
  	    sig_proto = Intf[unit].anp_sig_proto;
  	    if ( sig_proto != ATM_SIG_UNI30 && sig_proto != ATM_SIG_UNI31 &&
! 		sig_proto != ATM_SIG_UNI40 )
  		    continue;
  
         	    if ( ilmi_fd[unit] == -1 ) {
--- 1591,1621 ----
   *      none
   *
   */
! static void
! ilmi_open (void)
  {
!         struct sockaddr_atm	satm;
!         struct t_atm_aal5	aal5;
!         struct t_atm_traffic	traffic;
!         struct t_atm_bearer	bearer;
!         struct t_atm_qos	qos;
  	struct t_atm_app_name	appname;
!         Atm_addr		subaddr;
!         char			nifname[IFNAMSIZ];
!         socklen_t		optlen;
!         int			unit = 0;
  	u_char			sig_proto;
  
          init_ilmi();
  
! 	for ( unit = 0; unit < NUnits; ++unit ) {
  
  	    /*
  	     * ILMI only makes sense for UNI signalling protocols
  	     */
  	    sig_proto = Intf[unit].anp_sig_proto;
  	    if ( sig_proto != ATM_SIG_UNI30 && sig_proto != ATM_SIG_UNI31 &&
! 		 sig_proto != ATM_SIG_UNI40 )
  		    continue;
  
         	    if ( ilmi_fd[unit] == -1 ) {
***************
*** 1668,1674 ****
                  sprintf ( nifname, "%s0", Intf[unit].anp_nif_pref );
                  optlen = sizeof ( nifname );
                  if ( setsockopt ( ilmi_fd[unit], T_ATM_SIGNALING,
! 		    T_ATM_NET_INTF, (caddr_t)nifname, optlen ) < 0 ) {
                         	perror ( "setsockopt" );
  			if ( Log ) {
  			    write_timestamp();
--- 1642,1648 ----
                  sprintf ( nifname, "%s0", Intf[unit].anp_nif_pref );
                  optlen = sizeof ( nifname );
                  if ( setsockopt ( ilmi_fd[unit], T_ATM_SIGNALING,
! 		    T_ATM_NET_INTF, (char *)nifname, optlen ) < 0 ) {
                         	perror ( "setsockopt" );
  			if ( Log ) {
  			    write_timestamp();
***************
*** 1688,1694 ****
                  /*
                   * Set up destination SAP
                   */
!                 bzero ( (caddr_t) &satm, sizeof(satm) );
                  satm.satm_family = AF_ATM;
  #if (defined(BSD) && (BSD >= 199103))
                  satm.satm_len = sizeof(satm);
--- 1662,1668 ----
                  /*
                   * Set up destination SAP
                   */
!                 bzero ( &satm, sizeof(satm) );
                  satm.satm_family = AF_ATM;
  #if (defined(BSD) && (BSD >= 199103))
                  satm.satm_len = sizeof(satm);
***************
*** 1719,1725 ****
                  aal5.SSCS_type = T_ATM_NULL;
                  optlen = sizeof(aal5);
                  if ( setsockopt ( ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_AAL5,
!                 (caddr_t) &aal5, optlen ) < 0 ) {
                      perror ( "setsockopt(aal5)" );
  		    if ( Debug_Level > 1 && Log ) {
  			write_timestamp();
--- 1693,1699 ----
                  aal5.SSCS_type = T_ATM_NULL;
                  optlen = sizeof(aal5);
                  if ( setsockopt ( ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_AAL5,
!                 (char *) &aal5, optlen ) < 0 ) {
                      perror ( "setsockopt(aal5)" );
  		    if ( Debug_Level > 1 && Log ) {
  			write_timestamp();
***************
*** 1747,1753 ****
                  traffic.best_effort = T_YES;
                  optlen = sizeof(traffic);
                  if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_TRAFFIC,
!                         (caddr_t)&traffic, optlen) < 0) {
                      perror("setsockopt(traffic)");
                  }
                  bearer.bearer_class = T_ATM_CLASS_X;
--- 1721,1727 ----
                  traffic.best_effort = T_YES;
                  optlen = sizeof(traffic);
                  if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_TRAFFIC,
!                         &traffic, optlen) < 0) {
                      perror("setsockopt(traffic)");
                  }
                  bearer.bearer_class = T_ATM_CLASS_X;
***************
*** 1757,1763 ****
                  bearer.connection_configuration = T_ATM_1_TO_1;
                  optlen = sizeof(bearer);
                  if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_BEARER_CAP,
!                         (caddr_t)&bearer, optlen) < 0) {
                      perror("setsockopt(bearer)");
                  }
  
--- 1731,1737 ----
                  bearer.connection_configuration = T_ATM_1_TO_1;
                  optlen = sizeof(bearer);
                  if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_BEARER_CAP,
!                         &bearer, optlen) < 0) {
                      perror("setsockopt(bearer)");
                  }
  
***************
*** 1765,1771 ****
                  qos.forward.qos_class = T_ATM_QOS_CLASS_0;
                  qos.backward.qos_class = T_ATM_QOS_CLASS_0;
                  optlen = sizeof(qos);
!                 if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_QOS, (caddr_t)&qos,
                          optlen) < 0) {
                      perror("setsockopt(qos)");
                  }
--- 1739,1745 ----
                  qos.forward.qos_class = T_ATM_QOS_CLASS_0;
                  qos.backward.qos_class = T_ATM_QOS_CLASS_0;
                  optlen = sizeof(qos);
!                 if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_QOS, &qos,
                          optlen) < 0) {
                      perror("setsockopt(qos)");
                  }
***************
*** 1774,1787 ****
                  subaddr.address_length = 0;
                  optlen = sizeof(subaddr);
                  if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_DEST_SUB,
!                         (caddr_t)&subaddr, optlen) < 0) {
                      perror("setsockopt(dest_sub)");
                  }
  
  	        strncpy(appname.app_name, "ILMI", T_ATM_APP_NAME_LEN);
  	        optlen = sizeof(appname);
  	        if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_APP_NAME,
! 			(caddr_t)&appname, optlen) < 0) {
  		    perror("setsockopt(appname)");
  	        }
  
--- 1748,1761 ----
                  subaddr.address_length = 0;
                  optlen = sizeof(subaddr);
                  if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_DEST_SUB,
!                         &subaddr, optlen) < 0) {
                      perror("setsockopt(dest_sub)");
                  }
  
  	        strncpy(appname.app_name, "ILMI", T_ATM_APP_NAME_LEN);
  	        optlen = sizeof(appname);
  	        if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_APP_NAME,
! 			&appname, optlen) < 0) {
  		    perror("setsockopt(appname)");
  	        }
  
***************
*** 1826,1846 ****
   *	none
   *
   */
! void
! get_local_ip ( s, aval )
! 	int	s;
! 	long	*aval;
  {
  	char			intf_name[IFNAMSIZ];
! 	int			namelen = IFNAMSIZ;
  	struct air_netif_rsp	*net_info = NULL;
! 	struct sockaddr_in	*sin;
  
  	/*
  	 * Get physical interface name
  	 */
  	if ( getsockopt ( s, T_ATM_SIGNALING, T_ATM_NET_INTF,
! 	    (caddr_t) intf_name, &namelen ) )
  		return;
  
  	/*
--- 1800,1818 ----
   *	none
   *
   */
! static void
! get_local_ip ( int s, uint32_t *aval )
  {
  	char			intf_name[IFNAMSIZ];
! 	socklen_t		namelen = IFNAMSIZ;
  	struct air_netif_rsp	*net_info = NULL;
! 	struct sockaddr_in	*s_in;
  
  	/*
  	 * Get physical interface name
  	 */
  	if ( getsockopt ( s, T_ATM_SIGNALING, T_ATM_NET_INTF,
! 	    		  intf_name, &namelen ) )
  		return;
  
  	/*
***************
*** 1850,1861 ****
  	if ( net_info == NULL )
  		return;
  
! 	sin = (struct sockaddr_in *)&net_info->anp_proto_addr;
  
  	/*
  	 * Fill in answer
  	 */
! 	bcopy ( (caddr_t)&sin->sin_addr.s_addr, aval, 4 );
  
  	free ( net_info );
  
--- 1822,1833 ----
  	if ( net_info == NULL )
  		return;
  
! 	s_in = (struct sockaddr_in *)&net_info->anp_proto_addr;
  
  	/*
  	 * Fill in answer
  	 */
! 	bcopy ( &s_in->sin_addr.s_addr, aval, sizeof(*aval) );
  
  	free ( net_info );
  
***************
*** 1872,1878 ****
   *
   * Arguments:
   *	oid	- objid from SET message
!  *	hdr	- pointer to internal SNMP header
   *	buf	- pointer to SET buffer
   *	s	- socket to send messages on
   *
--- 1844,1850 ----
   *
   * Arguments:
   *	oid	- objid from SET message
!  *	hdr	- pointer to internal SNMP header - unused
   *	buf	- pointer to SET buffer
   *	s	- socket to send messages on
   *
***************
*** 1880,1896 ****
   *	none
   *
   */
! void
! set_prefix ( oid, hdr, intf )
! 	Objid		*oid;
! 	Snmp_Header	*hdr;
! 	int		intf;
  {
  	struct atmsetreq	asr;
  	Atm_addr		*aa;
  	int			fd;
  	int			i;
  
  	/*
  	 * Build IOCTL request to set prefix
  	 */
--- 1852,1867 ----
   *	none
   *
   */
! static void
! set_prefix ( const Objid * const oid, const Snmp_Header * const hdr, const int intf )
  {
  	struct atmsetreq	asr;
  	Atm_addr		*aa;
  	int			fd;
  	int			i;
  
+ 	(void)hdr; /* to make the ansi compiler happy */
+ 
  	/*
  	 * Build IOCTL request to set prefix
  	 */
***************
*** 1901,1907 ****
  	 * Pull prefix out of received Objid
  	 *	save in set_prefix IOCTL and addressEntry table
  	 */
! 	for ( i = 0; i < oid->oid[13]; i++ ) {
  		asr.asr_prf_pref[i] = oid->oid[i + 14];
  	}
  
--- 1872,1878 ----
  	 * Pull prefix out of received Objid
  	 *	save in set_prefix IOCTL and addressEntry table
  	 */
! 	for ( i = 0; i < oid->oid[13]; ++i ) {
  		asr.asr_prf_pref[i] = oid->oid[i + 14];
  	}
  
***************
*** 1911,1917 ****
  	fd = socket ( AF_ATM, SOCK_DGRAM, 0 );
  	if ( fd < 0 )
  		return;
! 	if ( ioctl ( fd, AIOCSET, (caddr_t)&asr ) < 0 ) {
  		if ( errno != EALREADY ) {
  		    syslog ( LOG_ERR, "ilmid: error setting prefix: %m" );
  		    if ( Log ) {
--- 1882,1888 ----
  	fd = socket ( AF_ATM, SOCK_DGRAM, 0 );
  	if ( fd < 0 )
  		return;
! 	if ( ioctl ( fd, AIOCSET, (char *)&asr ) < 0 ) {
  		if ( errno != EALREADY ) {
  		    syslog ( LOG_ERR, "ilmid: error setting prefix: %m" );
  		    if ( Log ) {
***************
*** 1947,1973 ****
  
  }
  
! void
! set_address ( hdr, intf )
! 	Snmp_Header	*hdr;
! 	int		intf;
  {
  	Variable	*var;
  	int		i, j;
  
  	PDU_Header = build_generic_header();
  
! 	PDU_Header->head = (Variable *)malloc(sizeof(Variable));
  	if (PDU_Header->head == NULL) {
! 		fprintf(stderr, "malloc() failed in %s()\n", __func__);
  		exit(1);
  	}
! 	bzero(PDU_Header->head, sizeof(Variable));
  
  	var = PDU_Header->head;
  	/* Copy generic addressEntry OBJID */
! 	bcopy ( (caddr_t)&Objids[ADDRESS_OBJID], (caddr_t)&var->oid,
! 		sizeof(Objid) );
  	/* Set specific instance */
  	i = var->oid.oid[0] + 1;		/* Get length */
  	var->oid.oid[i++] = 1;
--- 1918,1944 ----
  
  }
  
! static void
! set_address ( const Snmp_Header * const hdr, const int intf )
  {
  	Variable	*var;
  	int		i, j;
  
+ 	(void)hdr; /* to make ansi compiler happy */
+ 
  	PDU_Header = build_generic_header();
  
! 	PDU_Header->head = malloc(sizeof(*PDU_Header->head));
  	if (PDU_Header->head == NULL) {
! 		fprintf(stderr, "malloc() failed in %s() line %d\n", __func__, __LINE__);
  		exit(1);
  	}
! 	bzero(PDU_Header->head, sizeof(*PDU_Header->head));
  
  	var = PDU_Header->head;
  	/* Copy generic addressEntry OBJID */
! 	bcopy ( &Objids[ADDRESS_OBJID], &var->oid,
! 		sizeof(var->oid) );
  	/* Set specific instance */
  	i = var->oid.oid[0] + 1;		/* Get length */
  	var->oid.oid[i++] = 1;
***************
*** 2001,2016 ****
   *      fname           striped filename
   *
   */
! char *
! basename ( path )
!         char *path;
  {
          char *fname;
  
!         if ( ( fname = (char *)strrchr ( path, '/' ) ) != NULL )
!                 fname++;
          else
!                 fname = path;
  
          return ( fname );
  }
--- 1972,1986 ----
   *      fname           striped filename
   *
   */
! static char *
! basename ( const char *path )
  {
          char *fname;
  
!         if ( ( fname = strrchr ( path, '/' ) ) != NULL )
!                 ++fname;
          else
!                 fname = (char *)path;
  
          return ( fname );
  }
***************
*** 2027,2036 ****
   *	none	- Debug_Level incremented
   *
   */
! void
! Increment_DL ( sig )
! 	int	sig;
  {
  	Debug_Level++;
  	if ( Debug_Level && Log == (FILE *)NULL ) {
  	    if ( foregnd ) {
--- 1997,2006 ----
   *	none	- Debug_Level incremented
   *
   */
! static void
! Increment_DL ( int sig )
  {
+ 	(void)sig; /* make the ansi compiler happy */
  	Debug_Level++;
  	if ( Debug_Level && Log == (FILE *)NULL ) {
  	    if ( foregnd ) {
***************
*** 2061,2070 ****
   *	none	- Debug_Level decremented
   *
   */
! void
! Decrement_DL ( sig )
! 	int	sig;
  {
  	Debug_Level--;
  	if ( Debug_Level <= 0 ) {
  	    Debug_Level = 0;
--- 2031,2040 ----
   *	none	- Debug_Level decremented
   *
   */
! static void
! Decrement_DL ( int sig )
  {
+ 	(void)sig; /* make the ansi compiler happy */
  	Debug_Level--;
  	if ( Debug_Level <= 0 ) {
  	    Debug_Level = 0;
***************
*** 2084,2093 ****
   * Loop through GET variable list looking for matches
   *
   */
! void
! process_get ( hdr, intf )
! 	Snmp_Header	*hdr;
! 	int		intf;
  {
  	Variable	*var;
  	int		idx;
--- 2054,2061 ----
   * Loop through GET variable list looking for matches
   *
   */
! static void
! process_get ( Snmp_Header * const hdr, const int intf )
  {
  	Variable	*var;
  	int		idx;
***************
*** 2098,2106 ****
  		switch ( idx ) {
  		case SYS_OBJID:
  			var->type = ASN_OBJID;
! 			bcopy ( (caddr_t)&Objids[MY_OBJID],
! 			    (caddr_t)&var->var.oval,
! 				sizeof(Objid) );
  			break;
  		case UPTIME_OBJID:
  			var->type = ASN_TIMESTAMP;
--- 2066,2074 ----
  		switch ( idx ) {
  		case SYS_OBJID:
  			var->type = ASN_OBJID;
! 			bcopy ( &Objids[MY_OBJID],
! 			    	&var->var.oval,
! 				sizeof(var->var.oval) );
  			break;
  		case UPTIME_OBJID:
  			var->type = ASN_TIMESTAMP;
***************
*** 2142,2148 ****
  		case IPNM_OBJID:
  			var->type = ASN_IPADDR;
  			get_local_ip ( ilmi_fd[intf],
! 			    &var->var.ival );
  			break;
  		case ADDRESS_OBJID:
  			break;
--- 2110,2116 ----
  		case IPNM_OBJID:
  			var->type = ASN_IPADDR;
  			get_local_ip ( ilmi_fd[intf],
! 			    &var->var.aval );
  			break;
  		case ADDRESS_OBJID:
  			break;
***************
*** 2152,2160 ****
  			break;
  		case ATMF_SYSID:
  			var->type = ASN_OCTET;
! 			var->var.sval[0] = 6;
! 			bcopy ( (caddr_t)&Cfg[intf].acp_macaddr,
! 			    (caddr_t)&var->var.sval[1], 6 );
  			break;
  		default:
  			/* NO_SUCH */
--- 2120,2128 ----
  			break;
  		case ATMF_SYSID:
  			var->type = ASN_OCTET;
! 			var->var.sval[0] = sizeof(Cfg[intf].acp_macaddr);
! 			bcopy ( &Cfg[intf].acp_macaddr,
! 			    	&var->var.sval[1], sizeof(Cfg[intf].acp_macaddr) );
  			break;
  		default:
  			/* NO_SUCH */
***************
*** 2172,2183 ****
   *
   *
   */
! void
! ilmi_do_state ()
  {
  	struct timeval	tvp;
  	fd_set		rfd;
! 	u_char		buf[1024];
  	Variable	*var;
  	int		intf;
  	int		maxfd = 0;
--- 2140,2151 ----
   *
   *
   */
! static void
! ilmi_do_state (void)
  {
  	struct timeval	tvp;
  	fd_set		rfd;
! 	char		buf[1024];
  	Variable	*var;
  	int		intf;
  	int		maxfd = 0;
***************
*** 2188,2194 ****
  	for ( ; ; ) {
  	    int		count;
  	    int		n;
! 	    caddr_t	bpp;
  	    Snmp_Header	*Hdr;
  
  	    /*
--- 2156,2162 ----
  	for ( ; ; ) {
  	    int		count;
  	    int		n;
! 	    char	*bpp;
  	    Snmp_Header	*Hdr;
  
  	    /*
***************
*** 2222,2228 ****
  			/*
  	 		 * Clear addressTable
  	 		 */
! 			bzero ( (caddr_t)&addressEntry[intf], sizeof(Objid) );
  
  			/*
  			 * Start by sending a COLD_START trap. This should cause the
--- 2190,2196 ----
  			/*
  	 		 * Clear addressTable
  	 		 */
! 			bzero ( &addressEntry[intf], sizeof(Objid) );
  
  			/*
  			 * Start by sending a COLD_START trap. This should cause the
***************
*** 2252,2267 ****
  	 		 */
  			PDU_Header = build_generic_header();
  
! 			PDU_Header->head = (Variable *)malloc(sizeof(Variable));
  			if (PDU_Header->head == NULL) {
! 				fprintf(stderr, "malloc() failed in %s()\n", __func__);
  				exit(1);
  			}
! 			bzero(PDU_Header->head, sizeof(Variable));
  
  			var = PDU_Header->head;
! 			bcopy ( (caddr_t)&Objids[ADDRESS_OBJID], (caddr_t)&var->oid,
! 	    		    sizeof(Objid) );
  			var->type = ASN_NULL;
  			var->next = NULL;
  
--- 2220,2235 ----
  	 		 */
  			PDU_Header = build_generic_header();
  
! 			PDU_Header->head = malloc(sizeof(*PDU_Header->head));
  			if (PDU_Header->head == NULL) {
! 				fprintf(stderr, "malloc() failed in %s() line %d\n", __func__, __LINE__);
  				exit(1);
  			}
! 			bzero(PDU_Header->head, sizeof(*PDU_Header->head));
  
  			var = PDU_Header->head;
! 			bcopy ( &Objids[ADDRESS_OBJID], &var->oid,
! 	    		    sizeof(var->oid) );
  			var->type = ASN_NULL;
  			var->next = NULL;
  
***************
*** 2296,2302 ****
  		 */
  		if ( ilmi_fd[intf] > 0 && FD_ISSET ( ilmi_fd[intf], & rfd ) ) {
  
! 		    n = read ( ilmi_fd[intf], (caddr_t)&buf[1], sizeof(buf) - 1 );
  		    if ( n == -1 && ( errno == ECONNRESET || errno == EBADF ) ) {
  			ilmi_state[intf] = ILMI_COLDSTART;
  			close ( ilmi_fd[intf] );
--- 2264,2270 ----
  		 */
  		if ( ilmi_fd[intf] > 0 && FD_ISSET ( ilmi_fd[intf], & rfd ) ) {
  
! 		    n = read ( ilmi_fd[intf], &buf[1], sizeof(buf) - 1 );
  		    if ( n == -1 && ( errno == ECONNRESET || errno == EBADF ) ) {
  			ilmi_state[intf] = ILMI_COLDSTART;
  			close ( ilmi_fd[intf] );
***************
*** 2305,2314 ****
  		        if ( Log && Debug_Level > 1 ) fprintf ( Log, "***** state %d ***** read %d bytes from %d (%d) ***** %s *****\n",
  		            ilmi_state[intf], n, intf, ilmi_fd[intf], PDU_Types[buf[14] - 0xA0] ); {
  			        if ( Debug_Level > 2 )
! 				    hexdump ( (caddr_t)&buf[1], n );
  		        }
! 		        bpp = (caddr_t)&buf[1];
! 		        if ( ( Hdr = asn_get_header ( &bpp ) ) == NULL )
  			    continue;
  
  		        /* What we do with this messages depends upon the state we're in */
--- 2273,2282 ----
  		        if ( Log && Debug_Level > 1 ) fprintf ( Log, "***** state %d ***** read %d bytes from %d (%d) ***** %s *****\n",
  		            ilmi_state[intf], n, intf, ilmi_fd[intf], PDU_Types[buf[14] - 0xA0] ); {
  			        if ( Debug_Level > 2 )
! 				    hexdump ( &buf[1], n );
  		        }
! 		        bpp = &buf[1];
! 		        if ( ( Hdr = asn_get_header ( (const char **)&bpp ) ) == NULL )
  			    continue;
  
  		        /* What we do with this messages depends upon the state we're in */
***************
*** 2325,2333 ****
  				 * Should be because the remote side is attempting
  				 * to verify that our table is empty
  				 */
! 				if ( oid_ncmp ( (caddr_t)&Hdr->head->oid,
! 				    (caddr_t)&Objids[ADDRESS_OBJID],
! 					Objids[ADDRESS_OBJID].oid[0] ) == 0 ) {
  					if ( addressEntry[intf].oid[0] ) {
  					    /* XXX - FIXME */
  					    /* Our table is not empty - return address */
--- 2293,2301 ----
  				 * Should be because the remote side is attempting
  				 * to verify that our table is empty
  				 */
! 				if ( oid_ncmp ( &Hdr->head->oid,
! 				    		&Objids[ADDRESS_OBJID],
! 						Objids[ADDRESS_OBJID].oid[0] ) == 0 ) {
  					if ( addressEntry[intf].oid[0] ) {
  					    /* XXX - FIXME */
  					    /* Our table is not empty - return address */
***************
*** 2381,2392 ****
  				break;
  			    case PDU_TYPE_SET:
  				/* Look for SET_PREFIX Objid */
! 				if ( oid_ncmp ( (caddr_t)&Hdr->head->oid,
! 				    (caddr_t)&Objids[SETPFX_OBJID],
! 					Objids[SETPFX_OBJID].oid[0] ) == 0 ) {
  					    set_prefix ( &Hdr->head->oid, Hdr, intf );
  					    /* Reply to SET before sending our ADDRESS */
! 					    build_pdu(Hdr, PDU_TYPE_GETRESP);
  					    send_resp( intf, Hdr, Resp_Buf );
  					    set_address ( Hdr, intf );
  				} else {
--- 2349,2360 ----
  				break;
  			    case PDU_TYPE_SET:
  				/* Look for SET_PREFIX Objid */
! 				if ( oid_ncmp ( &Hdr->head->oid,
! 				    		&Objids[SETPFX_OBJID],
! 						Objids[SETPFX_OBJID].oid[0] ) == 0 ) {
  					    set_prefix ( &Hdr->head->oid, Hdr, intf );
  					    /* Reply to SET before sending our ADDRESS */
! 					    build_pdu( Hdr, PDU_TYPE_GETRESP );
  					    send_resp( intf, Hdr, Resp_Buf );
  					    set_address ( Hdr, intf );
  				} else {
***************
*** 2422,2430 ****
  				break;
  			    case PDU_TYPE_SET:
  				/* Look for SET_PREFIX Objid */
! 				if ( oid_ncmp ( (caddr_t)&Hdr->head->oid,
! 				    (caddr_t)&Objids[SETPFX_OBJID],
! 					Objids[SETPFX_OBJID].oid[0] ) == 0 ) {
  					    set_prefix ( &Hdr->head->oid, Hdr, intf );
  					    /* Reply to SET before sending our ADDRESS */
  					    build_pdu(Hdr, PDU_TYPE_GETRESP);
--- 2390,2398 ----
  				break;
  			    case PDU_TYPE_SET:
  				/* Look for SET_PREFIX Objid */
! 				if ( oid_ncmp ( &Hdr->head->oid,
! 				    		&Objids[SETPFX_OBJID],
! 						Objids[SETPFX_OBJID].oid[0] ) == 0 ) {
  					    set_prefix ( &Hdr->head->oid, Hdr, intf );
  					    /* Reply to SET before sending our ADDRESS */
  					    build_pdu(Hdr, PDU_TYPE_GETRESP);
***************
*** 2453,2461 ****
  }
  
  int
! main ( argc, argv )
! 	int	argc;
! 	char	*argv[];
  {
  	int	c;
  	int	i;
--- 2421,2427 ----
  }
  
  int
! main ( int argc, char *argv[] )
  {
  	int	c;
  	int	i;
***************
*** 2507,2513 ****
  		if ( daemon ( 0, 0 ) )
  			err ( 1, "Can't fork" );
  	} else
! 		; /* setbuf ( stdout, NULL ); */
  
  	signal ( SIGUSR1, Increment_DL );
  	signal ( SIGUSR2, Decrement_DL );
--- 2473,2479 ----
  		if ( daemon ( 0, 0 ) )
  			err ( 1, "Can't fork" );
  	} else
! 		(void)0; /* setbuf ( stdout, NULL ); */
  
  	signal ( SIGUSR1, Increment_DL );
  	signal ( SIGUSR2, Decrement_DL );

--------------000108030408030604070306--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3E616CDA.50808>