/* * netsniff-ng - the packet sniffing beast * Copyright 2009, 2010, 2011, 2012 Daniel Borkmann. * Subject to the GPL, version 2. */ #include #include #include #include "built_in.h" #include "tprintf.h" #include "pkt_buff.h" #include "proto.h" #include "protos.h" #include "dissector.h" #include "dissector_eth.h" #include "dissector_80211.h" int dissector_set_print_type(void *ptr, int type) { struct protocol *proto; for (proto = ptr; proto; proto = proto->next) { switch (type) { case PRINT_NORM: proto->process = proto->print_full; break; case PRINT_LESS: proto->process = proto->print_less; break; default: proto->process = NULL; break; } } return 0; } static void dissector_main(struct pkt_buff *pkt, struct protocol *start, struct protocol *end) { struct protocol *proto; if (!start) return; for (pkt->proto = start; pkt->proto; ) { if (unlikely(!pkt->proto->process)) break; proto = pkt->proto; pkt->proto = NULL; proto->process(pkt); } if (end && likely(end->process)) end->process(pkt); } void dissector_entry_point(uint8_t *packet, size_t len, int linktype, int mode) { struct protocol *proto_start, *proto_end; struct pkt_buff *pkt; if (mode == PRINT_NONE) return; pkt = pkt_alloc(packet, len); switch (linktype) { case LINKTYPE_EN10MB: case ___constant_swab32(LINKTYPE_EN10MB): proto_start = dissector_get_ethernet_entry_point(); proto_end = dissector_get_ethernet_exit_point(); break; case LINKTYPE_IEEE802_11: case ___constant_swab32(LINKTYPE_IEEE802_11): proto_start = dissector_get_ieee80211_entry_point(); proto_end = dissector_get_ieee80211_exit_point(); break; default: proto_start = &none_ops; proto_end = NULL; break; }; dissector_main(pkt, proto_start, proto_end); switch (mode) { case PRINT_HEX: hex(pkt); break; case PRINT_ASCII: ascii(pkt); break; case PRINT_HEX_ASCII: hex_ascii(pkt); break; } tprintf_flush(); pkt_free(pkt); } void dissector_init_all(int fnttype) { dissector_init_ethernet(fnttype); dissector_init_ieee80211(fnttype); } void dissector_cleanup_all(void) { dissector_cleanup_ethernet(); dissector_cleanup_ieee80211(); } sg
diff options
context:
space:
mode:
authorTom St Denis <tom.stdenis@amd.com>2016-06-27 09:57:18 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-07-07 15:06:08 -0400
commit1e0514131d912a4c9eb2d41f3a1e6d753dc069ff (patch)
tree5efcccc5b09c7222771d03dda5ad5b6fb8449e4b
parent9559ef5b1287aaffd8fcb5a5d4bbebaee5c1dd4e (diff)
drm/amd/amdgpu: Add gca config debug entry (v4)
A binary entry that lists GCA configuration data (and can be read by umr). (v2) Use kmalloc instead of vmalloc (v3) Minor indentation correction (v4) agd: Squash in kmalloc fix Signed-off-by: Tom St Denis <tom.stdenis@amd.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>