4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
6 // The contents of this file are subject to the Fraunhofer FOKUS Public License
7 // Version 1.0 (the "License"); you may not use this file except in compliance
8 // with the License. You may obtain a copy of the License at
9 // http://senf.berlios.de/license.html
11 // The Fraunhofer FOKUS Public License Version 1.0 is based on,
12 // but modifies the Mozilla Public License Version 1.1.
13 // See the full license text for the amendments.
15 // Software distributed under the License is distributed on an "AS IS" basis,
16 // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
17 // for the specific language governing rights and limitations under the License.
19 // The Original Code is Fraunhofer FOKUS code.
21 // The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V.
22 // (registered association), Hansastraße 27 c, 80686 Munich, Germany.
23 // All Rights Reserved.
26 // Thorsten Horstmann <tho@berlios.de>
29 \brief LLC/SNAP public header */
31 #ifndef HH_SENF_Packets_DefaultBundle_LlcSnapPacket_
32 #define HH_SENF_Packets_DefaultBundle_LlcSnapPacket_ 1
35 #include "EthernetPacket.hh"
37 //#include "LlcSnapPacket.mpp"
38 //-/////////////////////////////////////////////////////////////////////////////////////////////////
42 /** \brief Parse a LLC/SNAP header
44 \image html LlcSnapPacket.png
47 struct LlcSnapPacketParser : public PacketParserBase
49 # include SENF_FIXED_PARSER()
51 SENF_PARSER_FIELD( dsap, UInt8Parser );
52 SENF_PARSER_FIELD( ssap, UInt8Parser );
53 SENF_PARSER_FIELD( ctrl, UInt8Parser );
55 SENF_PARSER_FIELD( protocolId, UInt24Parser );
56 SENF_PARSER_FIELD( type_length, UInt16Parser );
58 SENF_PARSER_FINALIZE(LlcSnapPacketParser);
64 protocolId() = 0x000000;
68 /** \brief LLC/SNAP header
72 \par Packet type (typedef):
73 \ref LlcSnapPacketType
76 \ref LlcSnapPacketParser
78 \par Associated registries:
84 \ingroup protocolbundle_default
86 struct LlcSnapPacketType
87 : public PacketTypeBase,
88 public PacketTypeMixin<LlcSnapPacketType, EtherTypes>
91 typedef PacketTypeMixin<LlcSnapPacketType, EtherTypes> mixin;
93 typedef ConcretePacket<LlcSnapPacketType> packet; ///< LLC/SNAP packet typedef
94 typedef LlcSnapPacketParser parser; ///< typedef to the parser of LLC/SNAP packet
96 using mixin::nextPacketRange;
97 using mixin::initSize;
100 static factory_t nextPacketType(packet p);
101 /** \brief Dump given LlcSnapPacket in readable form to given output stream */
102 static void dump(packet p, std::ostream & os);
103 static void finalize(packet p);
106 /** \brief LLC/SNAP packet typedef
107 \ingroup protocolbundle_default
109 typedef ConcretePacket<LlcSnapPacketType> LlcSnapPacket;
113 //-/////////////////////////////////////////////////////////////////////////////////////////////////
114 //#include "LlcSnapPacket.cci"
115 //#include "LlcSnapPacket.ct"
116 //#include "LlcSnapPacket.cti"
123 // c-file-style: "senf"
124 // indent-tabs-mode: nil
125 // ispell-local-dictionary: "american"
126 // compile-command: "scons -u test"
127 // comment-column: 40