2 * netsniff-ng - the packet sniffing beast
3 * Copyright 2009, 2010 Daniel Borkmann.
4 * Subject to the GPL, version 2.
9 #include <netinet/in.h> /* for ntohs() */
33 static void icmp(struct pkt_buff
*pkt
)
35 struct icmphdr
*icmp
= (struct icmphdr
*) pkt_pull(pkt
, sizeof(*icmp
));
41 csum
= calc_csum(icmp
, pkt_len(pkt
) + sizeof(*icmp
), 0);
44 tprintf("Type (%u), ", icmp
->type
);
45 tprintf("Code (%u), ", icmp
->code
);
46 tprintf("CSum (0x%.4x) is %s", ntohs(icmp
->checksum
),
47 csum
? colorize_start_full(black
, red
) "bogus (!)"
48 colorize_end() : "ok");
52 static void icmp_less(struct pkt_buff
*pkt
)
54 struct icmphdr
*icmp
= (struct icmphdr
*) pkt_pull(pkt
, sizeof(*icmp
));
59 tprintf(" Type %u Code %u", icmp
->type
, icmp
->code
);
62 struct protocol icmpv4_ops
= {
65 .print_less
= icmp_less
,