* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-#ifndef lint
-static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.159 2007-09-14 01:29:28 guy Exp $ (LBL)";
-#endif
-
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "ip.h"
#include "ipproto.h"
-struct tok ip_option_values[] = {
+static const char tstr[] = "[|ip]";
+
+static const struct tok ip_option_values[] = {
{ IPOPT_EOL, "EOL" },
{ IPOPT_NOP, "NOP" },
{ IPOPT_TS, "timestamp" },
case IPOPT_LSRR:
if (len < 7)
break;
- memcpy(&retval, cp + len - 4, 4);
+ UNALIGNED_MEMCPY(&retval, cp + len - 4, 4);
return retval;
}
}
trunc:
- memcpy(&retval, &ip->ip_dst.s_addr, sizeof(u_int32_t));
+ UNALIGNED_MEMCPY(&retval, &ip->ip_dst.s_addr, sizeof(u_int32_t));
return retval;
}
ph.len = htons((u_int16_t)len);
ph.mbz = 0;
ph.proto = next_proto;
- memcpy(&ph.src, &ip->ip_src.s_addr, sizeof(u_int32_t));
+ UNALIGNED_MEMCPY(&ph.src, &ip->ip_src.s_addr, sizeof(u_int32_t));
if (IP_HL(ip) == 5)
- memcpy(&ph.dst, &ip->ip_dst.s_addr, sizeof(u_int32_t));
+ UNALIGNED_MEMCPY(&ph.dst, &ip->ip_dst.s_addr, sizeof(u_int32_t));
else
ph.dst = ip_finddst(ip);
return;
trunc:
- printf("[|ip]");
+ printf("%s", tstr);
}
#define IP_RES 0x8000
-static struct tok ip_frag_values[] = {
+static const struct tok ip_frag_values[] = {
{ IP_MF, "+" },
{ IP_DF, "DF" },
{ IP_RES, "rsvd" }, /* The RFC3514 evil ;-) bit */
printf("IP ");
if ((u_char *)(ipds->ip + 1) > ndo->ndo_snapend) {
- printf("[|ip]");
+ printf("%s", tstr);
return;
}
if (length < sizeof (struct ip)) {
void
ipN_print(register const u_char *bp, register u_int length)
{
- struct ip *ip, hdr;
+ struct ip hdr;
- ip = (struct ip *)bp;
if (length < 4) {
(void)printf("truncated-ip %d", length);
return;
}
- memcpy (&hdr, (char *)ip, 4);
+ memcpy (&hdr, bp, 4);
switch (IP_V(&hdr)) {
case 4:
ip_print (gndo, bp, length);