#include "config.h"
#endif
-#ifndef lint
-static const char rcsid[] =
- "@(#) $Header: /tcpdump/master/tcpdump/print-mobile.c,v 1.11 2002-11-09 17:19:28 itojun Exp $";
-#endif
-
#include <tcpdump-stdinc.h>
#include <stdio.h>
u_int16_t hcheck;
u_int32_t odst;
u_int32_t osrc;
-} __attribute__((packed));
+};
#define OSRC_PRES 0x0080 /* old source is present */
{
const u_char *cp = bp +8 ;
const struct mobile_ip *mob;
+ struct cksum_vec vec[1];
u_short proto,crc;
u_char osp =0; /* old source address present */
mob = (const struct mobile_ip *)bp;
- if (length < MOBILE_SIZE) {
+ if (length < MOBILE_SIZE || !TTEST(*mob)) {
fputs("[|mobile]", stdout);
return;
}
(void)printf("> %s ",ipaddr_string(&mob->odst));
(void)printf("(oproto=%d)",proto>>8);
}
- if (in_cksum((u_short *)mob, osp ? 12 : 8, 0)!=0) {
+ vec[0].ptr = (const u_int8_t *)(void *)mob;
+ vec[0].len = osp ? 12 : 8;
+ if (in_cksum(vec, 1)!=0) {
(void)printf(" (bad checksum %d)",crc);
}