X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FDefaultBundle%2FEthernetPacket.hh;h=51a2389e2774e8b18397f248746025871897c285;hb=8674fb1d184e7d620eb7c604957b5b4203df37a6;hp=0d7cd74343327e8b59ed9f82b9c9b56ac91a647e;hpb=6116cb96ea7bdcb42b7d12165a05fcbe0687226d;p=senf.git diff --git a/Packets/DefaultBundle/EthernetPacket.hh b/Packets/DefaultBundle/EthernetPacket.hh index 0d7cd74..51a2389 100644 --- a/Packets/DefaultBundle/EthernetPacket.hh +++ b/Packets/DefaultBundle/EthernetPacket.hh @@ -1,9 +1,9 @@ // $Id$ // // Copyright (C) 2006 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Thorsten Horstmann +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Thorsten Horstmann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -23,8 +23,8 @@ /** \file \brief EthernetPacket public header */ -#ifndef HH_EthernetPacket_ -#define HH_EthernetPacket_ 1 +#ifndef HH_SENF_Packets_DefaultBundle_EthernetPacket_ +#define HH_SENF_Packets_DefaultBundle_EthernetPacket_ 1 // Custom includes #include @@ -43,9 +43,9 @@ namespace senf { \see MACAddress \n EthernetPacket */ - struct Parse_MAC : public PacketParserBase + struct MACAddressParser : public PacketParserBase { - Parse_MAC(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {} + MACAddressParser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {} /////////////////////////////////////////////////////////////////////////// @@ -57,7 +57,7 @@ namespace senf { operator value_type () { return value(); } byte & operator[](size_type index) { return *boost::next(i(),index); } - Parse_MAC const & operator= (value_type const & other) { value(other); return *this; } + MACAddressParser const & operator= (value_type const & other) { value(other); return *this; } }; /** \brief Parse an Ethernet packet @@ -66,15 +66,15 @@ namespace senf { \see EthernetPacketType */ - struct Parse_Ethernet : public PacketParserBase + struct EthernetPacketParser : public PacketParserBase { # include SENF_FIXED_PARSER() - SENF_PARSER_FIELD( destination, Parse_MAC ); - SENF_PARSER_FIELD( source, Parse_MAC ); - SENF_PARSER_FIELD( type_length, Parse_UInt16 ); + SENF_PARSER_FIELD( destination, MACAddressParser ); + SENF_PARSER_FIELD( source, MACAddressParser ); + SENF_PARSER_FIELD( type_length, UInt16Parser ); - SENF_PARSER_FINALIZE(Parse_Ethernet); + SENF_PARSER_FINALIZE(EthernetPacketParser); }; /** \brief EtherType registry @@ -85,7 +85,6 @@ namespace senf { \ref PacketRegistry */ struct EtherTypes { - // See typedef boost::uint16_t key_t; }; @@ -95,7 +94,8 @@ namespace senf { \ref EthernetPacket \par Fields: - \ref Parse_Ethernet + \ref EthernetPacketParser + \image html EthernetPacket.png \par Associated registries: \ref EtherTypes @@ -111,15 +111,17 @@ namespace senf { { #ifndef DOXYGEN typedef PacketTypeMixin mixin; - typedef ConcretePacket packet; - typedef Parse_Ethernet parser; #endif + typedef ConcretePacket packet; + typedef EthernetPacketParser parser; + using mixin::nextPacketRange; using mixin::initSize; using mixin::init; static factory_t nextPacketType(packet p); - static void dump(packet p, std::ostream & os); + /// Dump given EthernetPacket in readable form to given output stream + static void dump(packet p, std::ostream & os); static void finalize(packet p); }; @@ -132,7 +134,7 @@ namespace senf { \see EthVLanPacketType */ - struct Parse_EthVLan : public PacketParserBase + struct EthVLanPacketParser : public PacketParserBase { # include SENF_FIXED_PARSER() @@ -140,9 +142,9 @@ namespace senf { SENF_PARSER_BITFIELD( cfi, 1, bool ); SENF_PARSER_BITFIELD( vlanId, 12, unsigned ); - SENF_PARSER_FIELD( type, Parse_UInt16 ); + SENF_PARSER_FIELD( type, UInt16Parser ); - SENF_PARSER_FINALIZE(Parse_EthVLan); + SENF_PARSER_FINALIZE(EthVLanPacketParser); }; /** \brief Ethernet VLAN tag @@ -151,8 +153,9 @@ namespace senf { \ref EthVLanPacket \par Fields: - \ref Parse_EthVLan - + \ref EthVLanPacketParser + \image html EthVLanPacket.png + \par Associated registries: \ref EtherTypes @@ -167,9 +170,10 @@ namespace senf { { #ifndef DOXYGEN typedef PacketTypeMixin mixin; - typedef ConcretePacket packet; - typedef Parse_EthVLan parser; #endif + typedef ConcretePacket packet; + typedef EthVLanPacketParser parser; + using mixin::nextPacketRange; using mixin::nextPacketType; using mixin::initSize; @@ -177,9 +181,10 @@ namespace senf { /** \todo Add LLC/SNAP support -> only use the registry for type() values >=1536, otherwise expect an LLC header */ - static registry_key_t nextPacketKey(packet p) + static key_t nextPacketKey(packet p) { return p->type(); } + /// Dump given EthVLanPacket in readable form to given output stream static void dump(packet p, std::ostream & os); static void finalize(packet p); }; @@ -190,8 +195,6 @@ namespace senf { } ///////////////////////////////hh.e//////////////////////////////////////// -#endif -#ifndef SENF_PACKETS_DECL_ONLY //#include "EthernetPacket.cci" //#include "EthernetPacket.ct" //#include "EthernetPacket.cti"