164 lines
6.6 KiB
C++
164 lines
6.6 KiB
C++
/*
|
|
* Copyright (c) 2017, Matias Fontanini
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are
|
|
* met:
|
|
*
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * Redistributions in binary form must reproduce the above
|
|
* copyright notice, this list of conditions and the following disclaimer
|
|
* in the documentation and/or other materials provided with the
|
|
* distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
*/
|
|
|
|
#ifndef TINS_CONSTANTS_H
|
|
#define TINS_CONSTANTS_H
|
|
|
|
namespace Tins {
|
|
|
|
/**
|
|
* \brief Constants used in protocols.
|
|
*/
|
|
namespace Constants {
|
|
/** \cond */
|
|
struct IP {
|
|
/** \endcond */
|
|
enum e {
|
|
PROTO_IP = 0, // Dummy protocol for TCP.
|
|
PROTO_HOPOPTS = 0, // IPv6 Hop-by-Hop options.
|
|
PROTO_ICMP = 1, // Internet Control Message Protocol.
|
|
PROTO_IGMP = 2, // Internet Group Management Protocol.
|
|
PROTO_IPIP = 4, // IPIP tunnels (older KA9Q tunnels use 94).
|
|
PROTO_TCP = 6, // Transmission Control Protocol.
|
|
PROTO_EGP = 8, // Exterior Gateway Protocol.
|
|
PROTO_PUP = 12, // PUP protocol.
|
|
PROTO_UDP = 17, // User Datagram Protocol.
|
|
PROTO_IDP = 22, // XNS IDP protocol.
|
|
PROTO_TP = 29, // SO Transport Protocol Class 4.
|
|
PROTO_DCCP = 33, // Datagram Congestion Control Protocol.
|
|
PROTO_IPV6 = 41, // IPv6 header.
|
|
PROTO_ROUTING = 43, // IPv6 routing header.
|
|
PROTO_FRAGMENT = 44, // IPv6 fragmentation header.
|
|
PROTO_RSVP = 46, // Reservation Protocol.
|
|
PROTO_GRE = 47, // General Routing Encapsulation.
|
|
PROTO_ESP = 50, // encapsulating security payload.
|
|
PROTO_AH = 51, // authentication header.
|
|
PROTO_ICMPV6 = 58, // ICMPv6.
|
|
PROTO_NONE = 59, // IPv6 no next header.
|
|
PROTO_DSTOPTS = 60, // IPv6 destination options.
|
|
PROTO_MTP = 92, // Multicast Transport Protocol.
|
|
PROTO_ENCAP = 98, // Encapsulation Header.
|
|
PROTO_PIM = 103, // Protocol Independent Multicast.
|
|
PROTO_COMP = 108, // Compression Header Protocol.
|
|
PROTO_SCTP = 132, // Stream Control Transmission Protocol.
|
|
PROTO_UDPLITE = 136, // UDP-Lite protocol.
|
|
PROTO_RAW = 255 // Raw IP packets.
|
|
};
|
|
};
|
|
|
|
struct Ethernet {
|
|
enum e {
|
|
UNKNOWN = 0,
|
|
SPRITE = 0x0500, // Sprite
|
|
IP = 0x0800, // IP
|
|
ARP = 0x0806, // Address resolution
|
|
MPLS = 0x8847, // MPLS
|
|
REVARP = 0x8035, // Reverse ARP
|
|
AT = 0x809B, // AppleTalk protocol
|
|
AARP = 0x80F3, // AppleTalk ARP
|
|
VLAN = 0x8100, // IEEE 802.1Q VLAN tagging
|
|
QINQ = 0x88a8, // IEEE 802.1ad VLAN tagging
|
|
OLD_QINQ = 0x9100, // IEEE 802.1ad VLAN tagging (old, deprecated, value)
|
|
IPX = 0x8137, // IPX
|
|
IPV6 = 0x86dd, // IP protocol version 6
|
|
PPPOED = 0x8863, // PPPoE Discovery
|
|
PPPOES = 0x8864, // PPPoE Session
|
|
EAPOL = 0x888e, // EAPOL
|
|
LOOPBACK = 0x9000 // used to test interfaces
|
|
};
|
|
};
|
|
|
|
struct ARP {
|
|
enum e {
|
|
NETROM = 0, // From KA9Q: NET/ROM pseudo.
|
|
ETHER = 1, // Ethernet 10/100Mbps.
|
|
EETHER = 2, // Experimental Ethernet.
|
|
AX25 = 3, // AX.25 Level 2.
|
|
PRONET = 4, // PROnet token ring.
|
|
CHAOS = 5, // Chaosnet.
|
|
IEEE802 = 6, // IEEE 802.2 Ethernet/TR/TB.
|
|
ARCNET = 7, // ARCnet.
|
|
APPLETLK = 8, // APPLEtalk.
|
|
DLCI = 15, // Frame Relay DLCI.
|
|
ATM = 19, // ATM.
|
|
METRICOM = 23, // Metricom STRIP (new IANA id).
|
|
IEEE1394 = 24, // IEEE 1394 IPv4 - RFC 2734.
|
|
EUI64 = 27, // EUI-64.
|
|
INFINIBAND = 32, // InfiniBand.
|
|
SLIP = 256,
|
|
CSLIP = 257,
|
|
SLIP6 = 258,
|
|
CSLIP6 = 259,
|
|
RSRVD = 260, // Notional KISS type.
|
|
ADAPT = 264,
|
|
ROSE = 270,
|
|
X25 = 271, // CCITT X.25.
|
|
HWX25 = 272, // Boards with X.25 in firmware.
|
|
PPP = 512,
|
|
CISCO = 513, // Cisco HDLC.
|
|
HDLC = CISCO,
|
|
LAPB = 516, // LAPB.
|
|
DDCMP = 517, // Digital's DDCMP.
|
|
RAWHDLC = 518, // Raw HDLC.
|
|
TUNNEL = 768, // IPIP tunnel.
|
|
TUNNEL6 = 769, // IPIP6 tunnel.
|
|
FRAD = 770, // Frame Relay Access Device.
|
|
SKIP = 771, // SKIP vif.
|
|
LOOPBACK = 772, // Loopback device.
|
|
LOCALTLK = 773, // Localtalk device.
|
|
FDDI = 774, // Fiber Distributed Data Interface.
|
|
BIF = 775, // AP1000 BIF.
|
|
SIT = 776, // sit0 device - IPv6-in-IPv4.
|
|
IPDDP = 777, // IP-in-DDP tunnel.
|
|
IPGRE = 778, // GRE over IP.
|
|
PIMREG = 779, // PIMSM register interface.
|
|
HIPPI = 780, // High Performance Parallel I'face.
|
|
ASH = 781, // (Nexus Electronics) Ash.
|
|
ECONET = 782, // Acorn Econet.
|
|
IRDA = 783, // Linux-IrDA.
|
|
FCPP = 784, // Point to point fibrechanel.
|
|
FCAL = 785, // Fibrechanel arbitrated loop.
|
|
FCPL = 786, // Fibrechanel public loop.
|
|
FCFABRIC = 787, // Fibrechanel fabric.
|
|
IEEE802_TR = 800, // Magic type ident for TR.
|
|
IEEE80211 = 801, // IEEE 802.11.
|
|
IEEE80211_PRISM = 802, // IEEE 802.11 + Prism2 header.
|
|
IEEE80211_RADIOTAP = 803, // IEEE 802.11 + radiotap header.
|
|
IEEE802154 = 804, // IEEE 802.15.4 header.
|
|
IEEE802154_PHY = 805, // IEEE 802.15.4 PHY header.
|
|
VOID_TYPE = 0xFFFF, // Void type, nothing is known.
|
|
NONE = 0xFFFE // Zero header length.
|
|
};
|
|
};
|
|
|
|
} // Constants
|
|
} // Tins
|
|
|
|
#endif // TINS_CONSTANTS_H
|