Date: Sun, 02 Mar 2003 01:53:33 +0100 From: Jens Rehsack <rehsack@liwing.de> To: Juli Mallett <jmallett@FreeBSD.org> Cc: current@FreeBSD.org Subject: Re: PATCH: type errors in src-tree Message-ID: <3E61560D.2070205@liwing.de> References: <3E5EA13E.9020208@liwing.de> <3E60F1CF.2030400@liwing.de> <20030301155546.A39174@FreeBSD.org> <3E612F7F.1090002@liwing.de> <20030301233642.GA64401@pit.databus.com> <3E614A06.5070403@liwing.de> <20030301180920.A53976@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------090505000605030509070102
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Juli Mallett wrote:
> * De: Jens Rehsack <rehsack@liwing.de> [ Data: 2003-03-01 ]
> [ Subjecte: Re: PATCH: type errors in src-tree ]
>
>>Barney Wolff wrote:
>>
>>>On Sat, Mar 01, 2003 at 11:09:03PM +0100, Jens Rehsack wrote:
>>>
>>>Shouldn't we care about u_char vs char? On some machines it matters,
>>>and on all machines compilers tend to notice and generate warnings.
>>>
>>
>>Just another question: I turned on '-ansi' and got some warning about a
>>function declaration is not a prototype (all functions are declared in
>>K&R style). Is it preferred by the FreeBSD-Team having functions in K&R
>>styles or is the Ansi-Style on, too?
>
>
> ANSI is preferred, but mixing style with functional changes is discouraged.
> I get the impression your change to width-specified values has a real
> correlation to what things need to use, and thus it might fix brokenness
> with systems not ILP32.
Ok, patch which complete ansi declarations appended. This fixes
enumerous errors with 'declaration is not a prototype' messages.
> Thanx,
> juli.
--
L i W W W i Jens Rehsack
L W W W
L i W W W W i nnn gggg LiWing IT-Services
L i W W W W i n n g g
LLLL i W W i n n g g Friesenstraße 2
gggg 06112 Halle
g
g g
Tel.: +49 - 3 45 - 5 17 05 91 ggg e-Mail: <rehsack@liwing.de>
Fax: +49 - 3 45 - 5 17 05 92 http://www.liwing.de/
--------------090505000605030509070102
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 00:50:40 2003
@@ -92,7 +92,8 @@
#define ASN_IPADDR 0x40
#define ASN_TIMESTAMP 0x43
-static char *Var_Types[] = { "", "", "ASN_INTEGER", "", "ASN_OCTET", "ASN_NULL", "ASN_OBJID" };
+static const char * const Var_Types[] = { "", "", "ASN_INTEGER", "", "ASN_OCTET",
+ "ASN_NULL", "ASN_OBJID" };
/*
* Define SNMP PDU types
@@ -103,8 +104,8 @@
#define PDU_TYPE_SET 0xA3
#define PDU_TYPE_TRAP 0xA4
-static char *PDU_Types[] = { "GET REQUEST", "GETNEXT REQUEST", "GET RESPONSE", "SET REQUEST",
- "TRAP" };
+static const char * const PDU_Types[] = { "GET REQUEST", "GETNEXT REQUEST",
+ "GET RESPONSE", "SET REQUEST", "TRAP" };
/*
* Define TRAP codes
@@ -162,7 +163,7 @@
union {
int ival; /* INTEGER/TIMESTAMP */
Objid oval; /* OBJID */
- long aval; /* IPADDR */
+ uint32_t aval; /* IPADDR */
char sval[STRLEN]; /* OCTET */
} var;
Variable *next;
@@ -173,10 +174,10 @@
* which doesn't have the last three fields is the TRAP type.
*/
struct snmp_header {
- int pdulen;
- int version;
+ uint32_t pdulen;
+ uint32_t version;
char community[64];
- int pdutype;
+ uint32_t pdutype;
/* GET/GETNEXT/GETRESP/SET */
int reqid;
@@ -185,11 +186,11 @@
/* TRAP */
Objid enterprise;
- int ipaddr;
+ uint32_t ipaddr;
int generic_trap;
int specific_trap;
- int varlen;
+ uint32_t varlen;
Variable *head,
*tail;
};
@@ -210,7 +211,7 @@
* foresiggrp: FORE specific Objid we see alot of (being connected to FORE
* switches...)
*/
-Objid Objids[] = {
+const Objid Objids[] = {
#define SYS_OBJID 0
{{ 8, 43, 6, 1, 2, 1, 1, 2, 0 }},
#define UPTIME_OBJID 1
@@ -279,7 +280,7 @@
* Temporary buffer for building response packets. Should help ensure
* that we aren't accidently overwriting some other memory.
*/
-u_char Resp_Buf[1024];
+char Resp_Buf[1024];
/*
* Copy the reponse into a buffer we can modify without
@@ -291,8 +292,8 @@
/*
* TRAP generic trap types
*/
-char *Traps[] = { "coldStart", "warmStart", "linkDown", "linkUp",
- "authenticationFailure", "egpNeighborLoss",
+const char *Traps[] = { "coldStart", "warmStart", "linkDown", "linkUp",
+ "authenticationFailure", "egpNeighborLoss",
"enterpriseSpecific" };
@@ -320,6 +321,9 @@
*/
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,11 +339,11 @@
#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 void set_reqid( char *, uint32_t );
+static void Increment_DL( int );
+static void Decrement_DL( int );
-static char *Months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+static const char *Months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
/*
@@ -355,14 +359,14 @@
* none
*
*/
-void
-write_timestamp()
+static void
+write_timestamp(void)
{
- time_t clock;
+ time_t cur_clock;
struct tm *tm;
- clock = time ( (time_t)NULL );
- tm = localtime ( &clock );
+ cur_clock = time ( (time_t)NULL );
+ tm = localtime ( &cur_clock );
if ( Log && Debug_Level > 1 )
if ( Log != stderr )
@@ -385,12 +389,10 @@
* none
*
*/
-void
-hexdump ( bp, len )
- u_char *bp;
- int len;
+static void
+hexdump ( const char *bp, const uint32_t len )
{
- int i, j;
+ uint32_t i, j;
/*
* Print as 4 groups of four bytes. Each byte is separated
@@ -449,23 +451,21 @@
* <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;
+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++ ) {
+ --(*plen);
+ if ( b & 0x80 ) {
+ for ( i = 0; i < (b & ~0x80); ++i ) {
len = len * 256 + *bp++;
if ( plen )
- (*plen)--;
+ --(*plen);
}
} else
len = b;
@@ -490,14 +490,12 @@
* <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;
+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,7 +505,7 @@
* Each byte can represent 7 bits
*/
val = ( val << 7 ) + ( *bp & ~0x80 );
- l--;
+ --l;
} while ( *bp++ & 0x80 );
*bufp = bp; /* update buffer pointer */
@@ -531,23 +529,21 @@
* <val> - value of encoded integer
*
*/
-int
-asn_get_int ( bufp, plen )
- u_char **bufp;
- int *plen;
+static int
+asn_get_int ( const char ** const bufp, uint32_t * const plen )
{
- int i;
- int len;
- int v = 0;
- u_char *bp = *bufp;
+ uint32_t i;
+ uint32_t len;
+ int v = 0;
+ const char *bp = *bufp;
len = *bp++;
if ( plen )
- (*plen)--;
- for ( i = 0; i < len; i++ ) {
+ --(*plen);
+ for ( i = 0; i < len; ++i ) {
v = (v * 256) + *bp++;
if ( plen )
- (*plen)--;
+ --(*plen);
}
*bufp = bp;
return ( v );
@@ -565,18 +561,16 @@
* <bufp> - updated buffer pointer
*
*/
-void
-asn_set_int ( bufp, val )
- u_char **bufp;
- int val;
+static void
+asn_set_int ( char **bufp, const uint32_t val )
{
union {
- int i;
- u_char c[4];
+ uint32_t i;
+ u_char c[sizeof(uint32_t)];
} u;
- int len = sizeof(int);
- int i = 0;
- u_char *bp = *bufp;
+ uint32_t len = sizeof(uint32_t);
+ uint32_t i = 0;
+ char *bp = *bufp;
/* Check for special case where val == 0 */
if ( val == 0 ) {
@@ -588,16 +582,16 @@
u.i = htonl ( val );
- while ( u.c[i] == 0 && i++ < sizeof(int) )
- len--;
+ 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++;
+ --i;
+ ++len;
}
- *bp++ = len;
- bcopy ( (caddr_t)&u.c[sizeof(int)-len], bp, len );
+ *bp++ = (char)len;
+ bcopy ( &u.c[sizeof(u.i)-len], bp, len );
bp += len;
*bufp = bp;
@@ -614,11 +608,10 @@
* none
*
*/
-void
-print_objid ( objid )
- Objid *objid;
+static void
+print_objid ( const Objid * const objid )
{
- int i;
+ uint32_t i, cmp = objid->oid[0];
/*
* First oid coded as 40 * X + Y
@@ -628,7 +621,7 @@
fprintf ( Log, ".%d.%d", objid->oid[1] / 40,
objid->oid[1] % 40 );
}
- for ( i = 2; i <= objid->oid[0]; i++ )
+ for ( i = 2; i <= cmp; ++i )
if ( Log )
fprintf ( Log, ".%d", objid->oid[i] );
if ( Log )
@@ -651,25 +644,22 @@
* 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;
+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)--;
+ --(*plen);
while ( len ) {
*ip++ = asn_get_encoded ( &bp, &len );
if ( plen )
- (*plen)--;
- oidlen++;
+ --(*plen);
+ ++oidlen;
}
objid->oid[0] = oidlen;
*bufp = bp;
@@ -681,30 +671,29 @@
* 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;
+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 <= objid->oid[0]; i++ ) {
- u_int c = objid->oid[i];
+ ++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++;
+ ++len;
c &= 0x7f; /* XXX - assumption of two bytes */
- (*cpp)++;
+ ++(*cpp);
}
*bp++ = c;
- len++;
+ ++len;
}
*bufp = bp;
@@ -729,26 +718,23 @@
* 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;
+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 = asn_get_encoded ( &bp, &i, plen );
+ len = (uint32_t)asn_get_encoded ( &bp, &i /* FIXME: what's that? , plen */ );
- for ( i = 0; i < len; i++ ) {
+ for ( i = 0; i < len; ++i ) {
*octet++ = *bp++;
if ( plen )
- (*plen)--;
+ --(*plen);
}
*bufp = bp;
@@ -767,11 +753,10 @@
* none
*
*/
-void
-print_header ( Hdr )
- Snmp_Header *Hdr;
+static void
+print_header ( const Snmp_Header * const Hdr )
{
- Variable *var;
+ const Variable *var;
if ( Log ) {
write_timestamp();
@@ -826,27 +811,25 @@
* none
*
*/
-void
-parse_oids ( h, bp )
- Snmp_Header *h;
- caddr_t *bp;
+static void
+parse_oids ( Snmp_Header * const h, const char ** const bp )
{
- int len = h->varlen;
- int sublen;
+ uint32_t len = h->varlen;
+ uint32_t sublen;
Variable *var;
- caddr_t bufp = *bp;
+ const char *bufp = *bp;
while ( len > 0 ) {
if ( *bufp++ == ASN_SEQUENCE ) {
- len--;
+ --len;
/* Create new Variable instance */
- if ( ( var = (Variable *)malloc(sizeof(Variable)) ) == NULL )
+ if ( ( var = malloc(sizeof(*var)) ) == NULL )
{
*bp = bufp;
return;
}
- bzero(var, sizeof(Variable));
+ bzero(var, sizeof(*var));
/* Link to tail */
if ( h->tail )
h->tail->next = var;
@@ -872,8 +855,8 @@
var->var.ival = asn_get_int ( &bufp, &len );
break;
case ASN_NULL:
- bufp++;
- len--;
+ ++bufp;
+ --len;
break;
case ASN_OBJID:
asn_get_objid ( &bufp, &var->var.oval, &len );
@@ -913,25 +896,26 @@
* - generated SNMP header
*
*/
-Snmp_Header *
-asn_get_header ( bufp )
- u_char **bufp;
+static Snmp_Header *
+asn_get_header ( const char **bufp )
{
Snmp_Header *h;
- u_char *bp = *bufp;
- int len = 0;
- int dummy = 0;
+ const char *bp = *bufp;
+ uint32_t len = 0;
+ /*
+ uint32_t dummy = 0;
+ */
/*
* Allocate memory to hold the SNMP header
*/
- if ( ( h = (Snmp_Header *)malloc(sizeof(Snmp_Header)) ) == NULL )
+ 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(Snmp_Header));
+ bzero(h, sizeof(*h));
/*
* PDU has to start as SEQUENCE OF
@@ -970,7 +954,7 @@
*/
if ( h->pdutype != PDU_TYPE_TRAP ) { /* TRAP uses different format */
- (void) asn_get_pdu_len ( &bp, &dummy );
+ (void) asn_get_pdu_len ( &bp, NULL ); /* &dummy -> NULL */
/* Request ID */
if ( *bp++ != ASN_INTEGER ) {
@@ -1025,17 +1009,16 @@
* 1 - Objid's don't match
*
*/
-int
-oid_cmp ( oid1, oid2 )
- Objid *oid1, *oid2;
+static int
+oid_cmp ( const Objid * const oid1, const Objid * const oid2 )
{
- int i;
- int len;
+ uint32_t i;
+ uint32_t len;
/*
* Compare lengths
*/
- if ( !(oid1->oid[0] == oid2->oid[0] ) )
+ if ( !(oid1->oid[0] == oid2->oid[0] ) ) /* FIXME: how about if( oid1->oid[0] != oid2->oid[0] ) */
/* Different lengths */
return ( 1 );
@@ -1067,12 +1050,10 @@
* 1 - Objid's don't match
*
*/
-int
-oid_ncmp ( oid1, oid2, len )
- Objid *oid1, *oid2;
- int len;
+static int
+oid_ncmp ( const Objid * const oid1, const Objid * const oid2, const uint32_t len )
{
- int i;
+ uint32_t i;
/*
* value by value compare
@@ -1098,11 +1079,10 @@
* -1 - no matching Variable found
*
*/
-int
-find_var ( var )
- Variable *var;
+static int
+find_var ( const Variable * const var )
{
- int i;
+ size_t i;
for ( i = 0; i < NUM_OIDS; i++ )
if ( oid_cmp ( &var->oid, &Objids[i] ) == 0 ) {
@@ -1167,19 +1147,17 @@
* none
*
*/
-void
-build_pdu ( hdr, type )
- Snmp_Header *hdr;
- int type;
+static void
+build_pdu ( Snmp_Header * const hdr, const int type )
{
- u_char *bp = Resp_Buf;
- u_char *vpp;
- u_char *ppp;
+ char *bp = Resp_Buf;
+ char *vpp;
+ char *ppp;
int erridx = 0;
int varidx = 1;
- int varlen = 0;
- int pdulen = 0;
- int traplen = 0;
+ uint32_t varlen = 0;
+ uint32_t pdulen = 0;
+ uint32_t traplen = 0;
Variable *var;
/*
@@ -1188,14 +1166,14 @@
bzero ( Resp_Buf, sizeof(Resp_Buf) );
/* [0] is reserved for overall length */
- bp++;
+ ++bp;
/* Start with SEQUENCE OF */
*bp++ = ASN_SEQUENCE;
/* - assume we can code length in two octets */
- *bp++ = 0x82;
- bp++;
- bp++;
+ *bp++ = (unsigned char)0x82;
+ ++bp;
+ ++bp;
/* Version */
*bp++ = ASN_INTEGER;
asn_set_int ( &bp, hdr->version );
@@ -1208,7 +1186,7 @@
*bp++ = type;
ppp = bp;
/* Length of OID data - assume it'll fit in one octet */
- bp++;
+ ++bp;
if ( type != PDU_TYPE_TRAP ) {
/* Sequence ID */
@@ -1250,7 +1228,7 @@
/* Fill in IP address */
*bp++ = ASN_IPADDR;
*bp++ = sizeof ( hdr->ipaddr );
- bcopy ( (caddr_t)&hdr->ipaddr, bp, sizeof(hdr->ipaddr) );
+ bcopy ( &hdr->ipaddr, bp, sizeof(hdr->ipaddr) );
bp += sizeof(hdr->ipaddr);
/* Fill in generic and specific trap types */
@@ -1271,44 +1249,44 @@
/* SEQUENCE OF */
*bp++ = ASN_SEQUENCE;
- *bp++ = 0x82;
+ *bp++ = (unsigned char)0x82;
/* - assume we can code length in two octets */
vpp = bp;
varlen = 0;
- bp++;
- bp++;
+ ++bp;
+ ++bp;
/* Install Variables */
var = hdr->head;
varidx = 1;
while ( var ) {
- u_char *bpp;
- int len = 0;
+ char *bpp;
+ uint32_t len = 0;
/* SEQUENCE OF */
*bp++ = ASN_SEQUENCE;
- *bp++ = 0x82;
+ *bp++ = (unsigned char)0x82;
/* - assume we can code length in two octets */
bpp = bp;
- bp++;
- bp++;
+ ++bp;
+ ++bp;
/* OBJID */
*bp++ = ASN_OBJID;
- len++;
+ ++len;
len += asn_put_objid ( &bp, &var->oid );
if ( erridx && varidx >= erridx ) {
/* Code this variable as NULL */
*bp++ = ASN_NULL;
- len++;
- bp++;
- len++;
+ ++len;
+ ++bp;
+ ++len;
} else {
- u_char *lpp;
+ char *lpp;
/* Variable type */
*bp++ = var->type;
- len++;
+ ++len;
lpp = bp;
switch ( var->type ) {
case ASN_INTEGER:
@@ -1317,15 +1295,15 @@
break;
case ASN_OCTET:
*bp++ = var->var.sval[0];
- len++;
- bcopy ( (caddr_t)&var->var.sval[1],
+ ++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++;
+ ++len;
break;
case ASN_OBJID:
len += asn_put_objid ( &bp, &var->var.oval );
@@ -1333,11 +1311,11 @@
case ASN_SEQUENCE:
break;
case ASN_IPADDR:
- *bp++ = 4;
- len++;
- bcopy ( (caddr_t)&var->var.aval, bp, 4 );
- len += 4;
- bp += 4;
+ *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,7 +1327,7 @@
}
/* Accumulate total Variable sequence length */
- varlen += (len + 4);
+ varlen += (len + 4); /* FIXME: why 4? is it sizeof(var->var.aval) */
/* Fill in length of this sequence */
bpp[1] = len & 0xff;
@@ -1385,18 +1363,18 @@
return;
}
-void
-free_pdu ( hdr )
-Snmp_Header *hdr;
+static void
+free_pdu ( Snmp_Header *hdr )
{
- Variable *var;
+ Variable *var = hdr->head, *var_next;
- while ( hdr->head ) {
- var = hdr->head->next; /* Save next link */
- free ( hdr->head ); /* Free current var */
- hdr->head = var; /* Set head to next link */
+ 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,29 +1389,27 @@
* none - request id may/may not be set
*
*/
-void
-set_reqid ( resp, reqid )
- u_char *resp;
- int reqid;
+static void
+set_reqid ( char *resp, uint32_t reqid )
{
- u_char *bp = (u_char *)&resp[18];
+ char *bp = resp+18;
union {
- int i;
- u_char c[4];
+ uint32_t i;
+ char c[sizeof(uint32_t)];
} u;
- u.i = htonl(reqid);
+ u.i = htonl( reqid );
/*
* Replace the current Request ID with the supplied value
*/
- bcopy ( (caddr_t)&u.c[4-resp[17]], bp, resp[17] );
+ bcopy ( &u.c[4-resp[17]], bp, resp[17] );
return;
}
/*
- * Send a generic response packet
+ * Send a generic response packet - FIXME: documentation doesn't match declaration
*
* Arguments:
* sd - socket to send the reply on
@@ -1444,22 +1420,19 @@
* none - response sent
*
*/
-void
-send_resp ( intf, Hdr, resp )
- int intf;
- Snmp_Header *Hdr;
- u_char *resp;
+static void
+send_resp ( const int intf, Snmp_Header *Hdr, char *resp )
{
int n;
- if ( ilmi_fd[intf] > 0 ) {
- n = write ( ilmi_fd[intf], (caddr_t)&resp[1], resp[0] );
+ 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 ( (u_char *)&resp[1], resp[0] );
+ hexdump ( &resp[1], resp[0] );
}
}
@@ -1471,39 +1444,40 @@
* Build a COLD_START TRAP PDU
*
*/
-Snmp_Header *
-build_cold_start()
+static Snmp_Header *
+build_cold_start(void)
{
Snmp_Header *hdr;
Variable *var;
- hdr = (Snmp_Header *)malloc(sizeof(Snmp_Header));
+ hdr = malloc(sizeof(*hdr));
if (hdr == NULL) {
- fprintf(stderr, "malloc() failed in %s()\n", __func__);
+ fprintf(stderr, "malloc() failed in %s() line %d\n", __func__, __LINE__);
exit(1);
}
- bzero(hdr, sizeof(Snmp_Header));
+ bzero(hdr, sizeof(*hdr));
+ /* FIXME: bzero has done that
hdr->pdulen = 0;
+ */
hdr->version = SNMP_VERSION_1 - 1;
- snprintf ( hdr->community, sizeof(hdr->community), "ILMI" );
+ snprintf ( hdr->community, ilmi_ident_str_len, ilmi_ident_str );
- hdr->ipaddr = 0x0; /* 0.0.0.0 */
+ /* FIXME: bzero: 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,
+ /* FIXME: bzero: hdr->specific_trap = 0; */
+ bcopy ( &Objids[ENTERPRISE_OBJID], &hdr->enterprise,
sizeof(Objid) );
- hdr->head = (Variable *)malloc(sizeof(Variable));
- if (hdr == NULL) {
- fprintf(stderr, "malloc() failed in %s()\n", __func__);
+ 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(Variable));
+ bzero(hdr->head, sizeof(*hdr->head));
var = hdr->head;
- bcopy ( (caddr_t)&Objids[UPTIME_OBJID], (caddr_t)&var->oid,
- sizeof(Objid) );
+ bcopy ( &Objids[UPTIME_OBJID], &var->oid, sizeof(var->oid) );
var->type = ASN_NULL;
return ( hdr );
@@ -1513,21 +1487,21 @@
* Build a Generic PDU Header
*
*/
-Snmp_Header *
-build_generic_header()
+static Snmp_Header *
+build_generic_header( void )
{
Snmp_Header *hdr;
- hdr = (Snmp_Header *)malloc(sizeof(Snmp_Header));
+ hdr = malloc(sizeof(*hdr));
if (hdr == NULL) {
fprintf(stderr, "malloc() failed in %s()\n", __func__);
exit(1);
}
- bzero(hdr, sizeof(Snmp_Header));
+ bzero(hdr, sizeof(*hdr));
- hdr->pdulen = 0;
+ /* FIXME: bzero: hdr->pdulen = 0; */
hdr->version = SNMP_VERSION_1 - 1;
- snprintf ( hdr->community, sizeof(hdr->community), "ILMI" );
+ snprintf ( hdr->community, ilmi_ident_str_len, ilmi_ident_str );
return ( hdr );
}
@@ -1546,12 +1520,12 @@
* none Information from HARP available
*
*/
-void
-init_ilmi()
+static void
+init_ilmi(void)
{
- struct air_cfg_rsp *cfg_info = NULL;
- struct air_int_rsp *intf_info = NULL;
- int buf_len;
+ 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,7 +1536,7 @@
*/
if ( buf_len <= 0 ) {
bzero ( Cfg, sizeof(Cfg) );
- bzero( Intf, sizeof(Intf) );
+ bzero ( Intf, sizeof(Intf) );
NUnits = 0;
return;
}
@@ -1570,11 +1544,11 @@
/*
* Move to local storage
*/
- bcopy ( cfg_info, (caddr_t)Cfg, buf_len );
+ bcopy ( cfg_info, Cfg, buf_len );
/*
* Compute how many units information was returned for
*/
- NUnits = buf_len / sizeof(struct air_cfg_rsp);
+ NUnits = buf_len / sizeof(*cfg_info);
/* Housecleaning */
free ( cfg_info );
cfg_info = NULL;
@@ -1593,7 +1567,7 @@
/*
* Move to local storage
*/
- bcopy ( intf_info, (caddr_t)Intf, buf_len );
+ bcopy ( intf_info, Intf, buf_len );
/* Housecleaning */
free ( intf_info );
intf_info = NULL;
@@ -1617,31 +1591,31 @@
* none
*
*/
-void
-ilmi_open ()
+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 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;
+ Atm_addr subaddr;
+ char nifname[IFNAMSIZ];
+ socklen_t optlen;
+ int unit = 0;
u_char sig_proto;
init_ilmi();
- for ( unit = 0; unit < NUnits; unit++ ) {
+ 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 )
+ sig_proto != ATM_SIG_UNI40 )
continue;
if ( ilmi_fd[unit] == -1 ) {
@@ -1668,7 +1642,7 @@
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 ) {
+ T_ATM_NET_INTF, (char *)nifname, optlen ) < 0 ) {
perror ( "setsockopt" );
if ( Log ) {
write_timestamp();
@@ -1688,7 +1662,7 @@
/*
* Set up destination SAP
*/
- bzero ( (caddr_t) &satm, sizeof(satm) );
+ bzero ( &satm, sizeof(satm) );
satm.satm_family = AF_ATM;
#if (defined(BSD) && (BSD >= 199103))
satm.satm_len = sizeof(satm);
@@ -1719,7 +1693,7 @@
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 ) {
+ (char *) &aal5, optlen ) < 0 ) {
perror ( "setsockopt(aal5)" );
if ( Debug_Level > 1 && Log ) {
write_timestamp();
@@ -1747,7 +1721,7 @@
traffic.best_effort = T_YES;
optlen = sizeof(traffic);
if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_TRAFFIC,
- (caddr_t)&traffic, optlen) < 0) {
+ &traffic, optlen) < 0) {
perror("setsockopt(traffic)");
}
bearer.bearer_class = T_ATM_CLASS_X;
@@ -1757,7 +1731,7 @@
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) {
+ &bearer, optlen) < 0) {
perror("setsockopt(bearer)");
}
@@ -1765,7 +1739,7 @@
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,
+ if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_QOS, &qos,
optlen) < 0) {
perror("setsockopt(qos)");
}
@@ -1774,14 +1748,14 @@
subaddr.address_length = 0;
optlen = sizeof(subaddr);
if (setsockopt(ilmi_fd[unit], T_ATM_SIGNALING, T_ATM_DEST_SUB,
- (caddr_t)&subaddr, optlen) < 0) {
+ &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) {
+ &appname, optlen) < 0) {
perror("setsockopt(appname)");
}
@@ -1826,21 +1800,19 @@
* none
*
*/
-void
-get_local_ip ( s, aval )
- int s;
- long *aval;
+static void
+get_local_ip ( int s, uint32_t *aval )
{
char intf_name[IFNAMSIZ];
- int namelen = IFNAMSIZ;
+ socklen_t namelen = IFNAMSIZ;
struct air_netif_rsp *net_info = NULL;
- struct sockaddr_in *sin;
+ struct sockaddr_in *s_in;
/*
* Get physical interface name
*/
if ( getsockopt ( s, T_ATM_SIGNALING, T_ATM_NET_INTF,
- (caddr_t) intf_name, &namelen ) )
+ intf_name, &namelen ) )
return;
/*
@@ -1850,12 +1822,12 @@
if ( net_info == NULL )
return;
- sin = (struct sockaddr_in *)&net_info->anp_proto_addr;
+ s_in = (struct sockaddr_in *)&net_info->anp_proto_addr;
/*
* Fill in answer
*/
- bcopy ( (caddr_t)&sin->sin_addr.s_addr, aval, 4 );
+ bcopy ( &s_in->sin_addr.s_addr, aval, sizeof(*aval) );
free ( net_info );
@@ -1872,7 +1844,7 @@
*
* Arguments:
* oid - objid from SET message
- * hdr - pointer to internal SNMP header
+ * hdr - pointer to internal SNMP header - unused
* buf - pointer to SET buffer
* s - socket to send messages on
*
@@ -1880,17 +1852,16 @@
* none
*
*/
-void
-set_prefix ( oid, hdr, intf )
- Objid *oid;
- Snmp_Header *hdr;
- int intf;
+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,7 +1872,7 @@
* Pull prefix out of received Objid
* save in set_prefix IOCTL and addressEntry table
*/
- for ( i = 0; i < oid->oid[13]; i++ ) {
+ for ( i = 0; i < oid->oid[13]; ++i ) {
asr.asr_prf_pref[i] = oid->oid[i + 14];
}
@@ -1911,7 +1882,7 @@
fd = socket ( AF_ATM, SOCK_DGRAM, 0 );
if ( fd < 0 )
return;
- if ( ioctl ( fd, AIOCSET, (caddr_t)&asr ) < 0 ) {
+ if ( ioctl ( fd, AIOCSET, (char *)&asr ) < 0 ) {
if ( errno != EALREADY ) {
syslog ( LOG_ERR, "ilmid: error setting prefix: %m" );
if ( Log ) {
@@ -1947,27 +1918,27 @@
}
-void
-set_address ( hdr, intf )
- Snmp_Header *hdr;
- int intf;
+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 = (Variable *)malloc(sizeof(Variable));
+ PDU_Header->head = malloc(sizeof(*PDU_Header->head));
if (PDU_Header->head == NULL) {
- fprintf(stderr, "malloc() failed in %s()\n", __func__);
+ fprintf(stderr, "malloc() failed in %s() line %d\n", __func__, __LINE__);
exit(1);
}
- bzero(PDU_Header->head, sizeof(Variable));
+ bzero(PDU_Header->head, sizeof(*PDU_Header->head));
var = PDU_Header->head;
/* Copy generic addressEntry OBJID */
- bcopy ( (caddr_t)&Objids[ADDRESS_OBJID], (caddr_t)&var->oid,
- sizeof(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,16 +1972,15 @@
* fname striped filename
*
*/
-char *
-basename ( path )
- char *path;
+static char *
+basename ( const char *path )
{
char *fname;
- if ( ( fname = (char *)strrchr ( path, '/' ) ) != NULL )
- fname++;
+ if ( ( fname = strrchr ( path, '/' ) ) != NULL )
+ ++fname;
else
- fname = path;
+ fname = (char *)path;
return ( fname );
}
@@ -2027,10 +1997,10 @@
* none - Debug_Level incremented
*
*/
-void
-Increment_DL ( sig )
- int sig;
+static void
+Increment_DL ( int sig )
{
+ (void)sig; /* make the ansi compiler happy */
Debug_Level++;
if ( Debug_Level && Log == (FILE *)NULL ) {
if ( foregnd ) {
@@ -2061,10 +2031,10 @@
* none - Debug_Level decremented
*
*/
-void
-Decrement_DL ( sig )
- int sig;
+static void
+Decrement_DL ( int sig )
{
+ (void)sig; /* make the ansi compiler happy */
Debug_Level--;
if ( Debug_Level <= 0 ) {
Debug_Level = 0;
@@ -2084,10 +2054,8 @@
* Loop through GET variable list looking for matches
*
*/
-void
-process_get ( hdr, intf )
- Snmp_Header *hdr;
- int intf;
+static void
+process_get ( Snmp_Header * const hdr, const int intf )
{
Variable *var;
int idx;
@@ -2098,9 +2066,9 @@
switch ( idx ) {
case SYS_OBJID:
var->type = ASN_OBJID;
- bcopy ( (caddr_t)&Objids[MY_OBJID],
- (caddr_t)&var->var.oval,
- sizeof(Objid) );
+ bcopy ( &Objids[MY_OBJID],
+ &var->var.oval,
+ sizeof(var->var.oval) );
break;
case UPTIME_OBJID:
var->type = ASN_TIMESTAMP;
@@ -2142,7 +2110,7 @@
case IPNM_OBJID:
var->type = ASN_IPADDR;
get_local_ip ( ilmi_fd[intf],
- &var->var.ival );
+ &var->var.aval );
break;
case ADDRESS_OBJID:
break;
@@ -2152,9 +2120,9 @@
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 );
+ 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,12 +2140,12 @@
*
*
*/
-void
-ilmi_do_state ()
+static void
+ilmi_do_state (void)
{
struct timeval tvp;
fd_set rfd;
- u_char buf[1024];
+ char buf[1024];
Variable *var;
int intf;
int maxfd = 0;
@@ -2188,7 +2156,7 @@
for ( ; ; ) {
int count;
int n;
- caddr_t bpp;
+ char *bpp;
Snmp_Header *Hdr;
/*
@@ -2222,7 +2190,7 @@
/*
* Clear addressTable
*/
- bzero ( (caddr_t)&addressEntry[intf], sizeof(Objid) );
+ bzero ( &addressEntry[intf], sizeof(Objid) );
/*
* Start by sending a COLD_START trap. This should cause the
@@ -2252,16 +2220,16 @@
*/
PDU_Header = build_generic_header();
- PDU_Header->head = (Variable *)malloc(sizeof(Variable));
+ PDU_Header->head = malloc(sizeof(*PDU_Header->head));
if (PDU_Header->head == NULL) {
- fprintf(stderr, "malloc() failed in %s()\n", __func__);
+ fprintf(stderr, "malloc() failed in %s() line %d\n", __func__, __LINE__);
exit(1);
}
- bzero(PDU_Header->head, sizeof(Variable));
+ bzero(PDU_Header->head, sizeof(*PDU_Header->head));
var = PDU_Header->head;
- bcopy ( (caddr_t)&Objids[ADDRESS_OBJID], (caddr_t)&var->oid,
- sizeof(Objid) );
+ bcopy ( &Objids[ADDRESS_OBJID], &var->oid,
+ sizeof(var->oid) );
var->type = ASN_NULL;
var->next = NULL;
@@ -2296,7 +2264,7 @@
*/
if ( ilmi_fd[intf] > 0 && FD_ISSET ( ilmi_fd[intf], & rfd ) ) {
- n = read ( ilmi_fd[intf], (caddr_t)&buf[1], sizeof(buf) - 1 );
+ 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,9 +2273,9 @@
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 );
+ hexdump ( &buf[1], n );
}
- bpp = (caddr_t)&buf[1];
+ bpp = &buf[1];
if ( ( Hdr = asn_get_header ( &bpp ) ) == NULL )
continue;
@@ -2325,9 +2293,9 @@
* 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 ( 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,12 +2349,12 @@
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 ) {
+ 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);
+ build_pdu( Hdr, PDU_TYPE_GETRESP );
send_resp( intf, Hdr, Resp_Buf );
set_address ( Hdr, intf );
} else {
@@ -2422,9 +2390,9 @@
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 ) {
+ 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,9 +2421,7 @@
}
int
-main ( argc, argv )
- int argc;
- char *argv[];
+main ( int argc, char *argv[] )
{
int c;
int i;
@@ -2507,7 +2473,7 @@
if ( daemon ( 0, 0 ) )
err ( 1, "Can't fork" );
} else
- ; /* setbuf ( stdout, NULL ); */
+ (void)0; /* setbuf ( stdout, NULL ); */
signal ( SIGUSR1, Increment_DL );
signal ( SIGUSR2, Decrement_DL );
--------------090505000605030509070102--
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3E61560D.2070205>
