summaryrefslogtreecommitdiff
path: root/print-sll.c
diff options
context:
space:
mode:
authorPhilip Paeps <philip@FreeBSD.org>2019-10-06 04:36:53 +0000
committerPhilip Paeps <philip@FreeBSD.org>2019-10-06 04:36:53 +0000
commitf91036a44a189fa5d0b5f1c6dea0a396a0f928c0 (patch)
tree2cd0554d9f0826a4e0bc63c5e4ca83ece65bee24 /print-sll.c
parent810711ec13a9424633df50e0a1af057a68e2ed45 (diff)
Notes
Diffstat (limited to 'print-sll.c')
-rw-r--r--print-sll.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/print-sll.c b/print-sll.c
index 6148569ec1608..9bc5d2015ec28 100644
--- a/print-sll.c
+++ b/print-sll.c
@@ -198,6 +198,7 @@ sll_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char
u_int caplen = h->caplen;
u_int length = h->len;
register const struct sll_header *sllp;
+ u_short hatype;
u_short ether_type;
int llc_hdrlen;
u_int hdrlen;
@@ -225,6 +226,16 @@ sll_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char
p += SLL_HDR_LEN;
hdrlen = SLL_HDR_LEN;
+ hatype = EXTRACT_16BITS(&sllp->sll_hatype);
+ switch (hatype) {
+
+ case 803:
+ /*
+ * This is an packet with a radiotap header;
+ * just dissect the payload as such.
+ */
+ return (SLL_HDR_LEN + ieee802_11_radio_print(ndo, p, length, caplen));
+ }
ether_type = EXTRACT_16BITS(&sllp->sll_protocol);
recurse: