u_short cleansing (use u_int16_t where appropriate).

XXX in_cksum2 does not seem correct in odd length case
This commit is contained in:
itojun 2002-08-01 08:41:32 +00:00
parent a297f25294
commit 518af973ec
1 changed files with 25 additions and 25 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: traceroute.c,v 1.48 2002/07/11 20:07:07 scw Exp $ */
/* $NetBSD: traceroute.c,v 1.49 2002/08/01 08:41:32 itojun Exp $ */
/*
* Copyright (c) 1988, 1989, 1991, 1994, 1995, 1996, 1997
@ -29,7 +29,7 @@ static const char rcsid[] =
#else
__COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1991, 1994, 1995, 1996, 1997\n\
The Regents of the University of California. All rights reserved.\n");
__RCSID("$NetBSD: traceroute.c,v 1.48 2002/07/11 20:07:07 scw Exp $");
__RCSID("$NetBSD: traceroute.c,v 1.49 2002/08/01 08:41:32 itojun Exp $");
#endif
#endif
@ -303,8 +303,8 @@ char *device;
int nprobes = 3;
int max_ttl = 30;
int first_ttl = 1;
u_short ident;
u_short port = 32768 + 666; /* start udp dest port # for probe packets */
u_int16_t ident;
in_port_t port = 32768 + 666; /* start udp dest port # for probe packets */
int options; /* socket options */
int verbose;
@ -357,8 +357,8 @@ double deltaT(struct timeval *, struct timeval *);
void freehostinfo(struct hostinfo *);
void getaddr(u_int32_t *, char *);
struct hostinfo *gethostinfo(char *);
u_short in_cksum(u_short *, int);
u_short in_cksum2(u_short, u_short *, int);
u_int16_t in_cksum(u_int16_t *, int);
u_int16_t in_cksum2(u_int16_t, u_int16_t *, int);
char *inetname(struct in_addr);
int main(int, char **);
int packet_ok(u_char *, int, struct sockaddr_in *, int);
@ -395,7 +395,7 @@ main(int argc, char **argv)
register int seq = 0;
int tos = 0, settos = 0, ttl_flag = 0;
register int lsrr = 0;
register u_short off = 0;
register u_int16_t off = 0;
struct ifaddrlist *al, *al2;
char errbuf[132];
int mib[4] = { CTL_NET, PF_INET, IPPROTO_IP, IPCTL_DEFTTL };
@ -632,7 +632,7 @@ main(int argc, char **argv)
outudp = (struct udphdr *)outp;
outudp->uh_sport = htons(ident);
outudp->uh_ulen =
htons((u_short)(packlen - (sizeof(*outip) + optlen)));
htons((u_int16_t)(packlen - (sizeof(*outip) + optlen)));
outmark = outudp + 1;
}
@ -1114,7 +1114,7 @@ again:
*/
if (docksum) {
outip->ip_sum =
in_cksum((u_short *)outip, sizeof(*outip) + optlen);
in_cksum((u_int16_t *)outip, sizeof(*outip) + optlen);
if (outip->ip_sum == 0)
outip->ip_sum = 0xffff;
}
@ -1134,12 +1134,12 @@ again:
if (docksum) {
if (useicmp) {
outicmp->icmp_cksum = 0;
outicmp->icmp_cksum = in_cksum((u_short *)outicmp,
outicmp->icmp_cksum = in_cksum((u_int16_t *)outicmp,
packlen - (sizeof(*outip) + optlen));
if (outicmp->icmp_cksum == 0)
outicmp->icmp_cksum = 0xffff;
} else {
u_short sum;
u_int16_t sum;
struct {
struct in_addr src;
struct in_addr dst;
@ -1156,8 +1156,8 @@ again:
phdr.protocol = ui->ui_pr;
phdr.len = outudp->uh_ulen;
outudp->uh_sum = 0;
sum = in_cksum2(0, (u_short *)&phdr, sizeof(phdr));
sum = in_cksum2(sum, (u_short *)outudp, ntohs(outudp->uh_ulen));
sum = in_cksum2(0, (u_int16_t *)&phdr, sizeof(phdr));
sum = in_cksum2(sum, (u_int16_t *)outudp, ntohs(outudp->uh_ulen));
sum = ~sum; /** XXXSCW: Quell SuperH Compiler Bug */
outudp->uh_sum = sum;
if (outudp->uh_sum == 0)
@ -1167,11 +1167,11 @@ again:
/* XXX undocumented debugging hack */
if (verbose > 1) {
register const u_short *sp;
register const u_int16_t *sp;
register int nshorts, i;
sp = (u_short *)outip;
nshorts = (u_int)packlen / sizeof(u_short);
sp = (u_int16_t *)outip;
nshorts = (u_int)packlen / sizeof(u_int16_t);
i = 0;
Printf("[ %d bytes", packlen);
while (--nshorts >= 0) {
@ -1352,13 +1352,13 @@ void resize_packet(void)
{
if (useicmp) {
outicmp->icmp_cksum = 0;
outicmp->icmp_cksum = in_cksum((u_short *)outicmp,
outicmp->icmp_cksum = in_cksum((u_int16_t *)outicmp,
packlen - (sizeof(*outip) + optlen));
if (outicmp->icmp_cksum == 0)
outicmp->icmp_cksum = 0xffff;
} else {
outudp->uh_ulen =
htons((u_short)(packlen - (sizeof(*outip) + optlen)));
htons((u_int16_t)(packlen - (sizeof(*outip) + optlen)));
}
}
@ -1385,8 +1385,8 @@ print(register u_char *buf, register int cc, register struct sockaddr_in *from)
Printf(" %d bytes to %s", cc, inet_ntoa (ip->ip_dst));
}
u_short
in_cksum(u_short *addr, int len)
u_int16_t
in_cksum(u_int16_t *addr, int len)
{
return ~in_cksum2(0, addr, len);
@ -1395,13 +1395,13 @@ in_cksum(u_short *addr, int len)
/*
* Checksum routine for Internet Protocol family headers (C Version)
*/
u_short
in_cksum2(u_short seed, register u_short *addr, register int len)
u_int16_t
in_cksum2(u_int16_t seed, register u_int16_t *addr, register int len)
{
register int nleft = len;
register u_short *w = addr;
register u_short answer;
register int sum = seed;
register u_int16_t *w = addr;
register u_int16_t answer;
register int32_t sum = seed;
/*
* Our algorithm is simple, using a 32 bit accumulator (sum),