libtins 4.5
Loading...
Searching...
No Matches
data_link_type.h
1/*
2 * Copyright (c) 2017, Matias Fontanini
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following disclaimer
13 * in the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 */
29
30#ifndef TINS_DATA_LINK_TYPE_H
31#define TINS_DATA_LINK_TYPE_H
32
33#include <pcap.h>
34
35namespace Tins {
36
37class EthernetII;
38class RadioTap;
39class Dot11;
40class Dot3;
41class SLL;
42class Loopback;
43class PPI;
44class IP;
45
58template<typename T>
60
61#define TINS_MAKE_DATA_LINK_TYPE(tins_type, pcap_type) \
62template<> \
63struct DataLinkType<tins_type> { \
64 static const int type = pcap_type; \
65 int get_type() const { \
66 return type; \
67 } \
68};
69
70TINS_MAKE_DATA_LINK_TYPE(EthernetII, DLT_EN10MB)
71TINS_MAKE_DATA_LINK_TYPE(Dot3, DLT_EN10MB)
72TINS_MAKE_DATA_LINK_TYPE(SLL, DLT_LINUX_SLL)
73TINS_MAKE_DATA_LINK_TYPE(Loopback, DLT_LOOP)
74TINS_MAKE_DATA_LINK_TYPE(PPI, DLT_PPI)
75TINS_MAKE_DATA_LINK_TYPE(Dot11, DLT_IEEE802_11)
76TINS_MAKE_DATA_LINK_TYPE(RadioTap, DLT_IEEE802_11_RADIO)
77TINS_MAKE_DATA_LINK_TYPE(IP, DLT_RAW)
78
79#undef TINS_MAKE_DATA_LINK_TYPE
80
81} // Tins
82
83#endif // TINS_DATA_LINK_TYPE_H
Class representing an 802.11 frame.
Definition dot11_base.h:54
Class representing an IEEE 802.3 PDU.
Definition dot3.h:46
Represents an Ethernet II PDU.
Definition ethernetII.h:46
Class that represents an IP PDU.
Definition ip.h:63
Represents a Loopback PDU.
Definition loopback.h:41
Class that represents the IEEE 802.11 radio tap header.
Definition radiotap.h:51
Represents a Linux cooked-mode capture (SLL) PDU.
Definition sll.h:45
The Tins namespace.
Definition address_range.h:38
Maps a libtins link layer PDU to a libpcap data link identifier.
Definition data_link_type.h:59