diff --git a/include/constants.h b/include/constants.h new file mode 100644 index 0000000..838a3e1 --- /dev/null +++ b/include/constants.h @@ -0,0 +1,128 @@ +#ifndef __CONSTANTS_H +#define __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 { + PUP = 0x0200, /* Xerox PUP */ + SPRITE = 0x0500, /* Sprite */ + IP = 0x0800, /* IP */ + ARP = 0x0806, /* Address resolution */ + REVARP = 0x8035, /* Reverse ARP */ + AT = 0x809B, /* AppleTalk protocol */ + AARP = 0x80F3, /* AppleTalk ARP */ + VLAN = 0x8100, /* IEEE 802.1Q VLAN tagging */ + IPX = 0x8137, /* IPX */ + IPV6 = 0x86dd, /* IP protocol version 6 */ + 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 = 0xFFFF, /* Void type, nothing is known. */ + NONE = 0xFFFE, /* Zero header length. */ + }; + }; + }; +}; + + +#endif