/*
* netsniff-ng - the packet sniffing beast
* Subject to the GPL, version 2.
*/
#include "protos.h"
#include "pcap_io.h"
#include "pkt_buff.h"
#include "dissector.h"
#include "dissector_sll.h"
#include "dissector_eth.h"
#include "lookup.h"
static char *pkt_type2str(uint8_t pkttype)
{
switch (pkttype) {
case PACKET_HOST:
return "host";
case PACKET_BROADCAST:
return "broadcast";
case PACKET_MULTICAST:
return "multicast";
case PACKET_OTHERHOST:
return "other host";
case PACKET_OUTGOING:
return "outgoing";
case PACKET_USER:
return "user";
case PACKET_KERNEL:
return "kernel";
}
return "Unknown";
}
static void sll_print_full(struct pkt_buff *pkt)
{
struct sockaddr_ll *sll = pkt->sll;
char addr_str[40] = {};
tprintf(" [ Linux \"cooked\"");
tprintf(" Pkt Type %d (%s)", sll->sll_pkttype,
pkt_type2str(sll->sll_pkttype));
tprintf(", If Type %d (%s)", sll->sll_hatype,
device_type2str(sll->sll_hatype));
tprintf(", Addr Len %d", sll->sll_halen);
tprintf(", Src (%s)", device_addr2str(sll->sll_addr, sll->sll_halen,
sll->sll_hatype, addr_str, sizeof(addr_str)));
tprintf(", Proto 0x%x", ntohs(sll->sll_protocol));
tprintf(" ]\n");
switch (pcap_devtype_to_linktype(sll->sll_hatype)) {
case LINKTYPE_EN10MB:
case ___constant_swab32(LINKTYPE_EN10MB):
pkt_set_dissector(pkt, ð_lay2, ntohs(sll->sll_protocol));
break;
case LINKTYPE_NETLINK:
case ___constant_swab32(LINKTYPE_NETLINK):
pkt->dissector = &nlmsg_ops;
break;
default:
tprintf(" [ Unknown protocol ]\n");
}
}
static void sll_print_less(struct pkt_buff *pkt)
{
struct sockaddr_ll *sll = pkt->sll;
char addr_str[40] = {};
tprintf(" Pkt Type %d (%s)", sll->sll_pkttype,
pkt_type2str(sll->sll_pkttype));
tprintf(", If Type %d (%s)", sll->sll_hatype,
device_type2str(sll->sll_hatype));
tprintf(", Addr Len %d", sll->sll_halen);
tprintf(", Src (%s)", device_addr2str(sll->sll_addr, sll->sll_halen,
sll->sll_hatype, addr_str, sizeof(addr_str)));
tprintf(", Proto 0x%x", ntohs(sll->sll_protocol));
}
struct protocol sll_ops = {
.key = 0,
.print_full = sll_print_full,
.print_less = sll_print_less,
};
struct protocol *dissector_get_sll_entry_point(void)
{
return &sll_ops;
}
struct protocol *dissector_get_sll_exit_point(void)
{
return &none_ops;
}
void dissector_init_sll(int fnttype)
{
dissector_set_print_type(&sll_ops, fnttype);
dissector_set_print_type(&none_ops, fnttype);
lookup_init(LT_OUI);
}
void dissector_cleanup_sll(void)
{
lookup_cleanup(LT_OUI);
}
s/testing/selftests/powerpc/math
Merge tag 'docs-4.10' of git://git.lwn.net/linux
HEADmasterPull documentation update from Jonathan Corbet:
"These are the documentation changes for 4.10.
It's another busy cycle for the docs tree, as the sphinx conversion
continues. Highlights include:
- Further work on PDF output, which remains a bit of a pain but
should be more solid now.
- Five more DocBook template files converted to Sphinx. Only 27 to
go... Lots of plain-text files have also been converted and
integrated.
- Images in binary formats have been replaced with more
source-friendly versions.
- Various bits of organizational work, including the renaming of
various files discussed at the kernel summit.
- New documentation for the device_link mechanism.
... and, of course, lots of typo fixes and small updates"
* tag 'docs-4.10' of git://git.lwn.net/linux: (193 commits)
dma-buf: Extract dma-buf.rst
Update Documentation/00-INDEX
docs: 00-INDEX: document directories/files with no docs
docs: 00-INDEX: remove non-existing entries
docs: 00-INDEX: add missing entries for documentation files/dirs
docs: 00-INDEX: consolidate process/ and admin-guide/ description
scripts: add a script to check if Documentation/00-INDEX is sane
Docs: change sh -> awk in REPORTING-BUGS
Documentation/core-api/device_link: Add initial documentation
core-api: remove an unexpected unident
ppc/idle: Add documentation for powersave=off
Doc: Correct typo, "Introdution" => "Introduction"
Documentation/atomic_ops.txt: convert to ReST markup
Documentation/local_ops.txt: convert to ReST markup
Documentation/assoc_array.txt: convert to ReST markup
docs-rst: parse-headers.pl: cleanup the documentation
docs-rst: fix media cleandocs target
docs-rst: media/Makefile: reorganize the rules
docs-rst: media: build SVG from graphviz files
docs-rst: replace bayer.png by a SVG image
...