/* * netsniff-ng - the packet sniffing beast * Copyright 2009, 2010 Daniel Borkmann. * Subject to the GPL, version 2. */ #include #include #include /* for ntohs() */ #include "proto.h" #include "protos.h" #include "csum.h" #include "pkt_buff.h" #include "built_in.h" struct icmphdr { uint8_t type; uint8_t code; uint16_t checksum; union { struct { uint16_t id; uint16_t sequence; } echo; uint32_t gateway; struct { uint16_t ____unused; uint16_t mtu; } frag; } un; } __packed; static void icmp(struct pkt_buff *pkt) { struct icmphdr *icmp = (struct icmphdr *) pkt_pull(pkt, sizeof(*icmp)); uint16_t csum; if (icmp == NULL) return; csum = calc_csum(icmp, pkt_len(pkt) + sizeof(*icmp), 0); tprintf(" [ ICMP "); tprintf("Type (%u), ", icmp->type); tprintf("Code (%u), ", icmp->code); tprintf("CSum (0x%.4x) is %s", ntohs(icmp->checksum), csum ? colorize_start_full(black, red) "bogus (!)" colorize_end() : "ok"); tprintf(" ]\n"); } static void icmp_less(struct pkt_buff *pkt) { struct icmphdr *icmp = (struct icmphdr *) pkt_pull(pkt, sizeof(*icmp)); if (icmp == NULL) return; tprintf(" Type %u Code %u", icmp->type, icmp->code); } struct protocol icmpv4_ops = { .key = 0x01, .print_full = icmp, .print_less = icmp_less, }; t> net-next plumbingsTobias Klauser
summaryrefslogtreecommitdiff
ModeNameSize
-rw-r--r--ib.h3386logplain
-rw-r--r--ib_addr.h10080logplain
-rw-r--r--ib_cache.h6375logplain
-rw-r--r--ib_cm.h19359logplain
-rw-r--r--ib_fmr_pool.h3439logplain
-rw-r--r--ib_hdrs.h4989logplain
-rw-r--r--ib_mad.h27924logplain
-rw-r--r--ib_marshall.h2025logplain
-rw-r--r--ib_pack.h9047logplain
-rw-r--r--ib_pma.h5579logplain
-rw-r--r--ib_sa.h16914logplain
-rw-r--r--ib_smi.h5633logplain
-rw-r--r--ib_umem.h3577logplain
-rw-r--r--ib_umem_odp.h5300logplain
-rw-r--r--ib_verbs.h100225logplain
-rw-r--r--iw_cm.h8793logplain
-rw-r--r--iw_portmap.h7688logplain
-rw-r--r--mr_pool.h954logplain
-rw-r--r--opa_port_info.h15063logplain
-rw-r--r--opa_smi.h4417logplain