Skip to content
Snippets Groups Projects
Commit 94e7828a authored by g0dil's avatar g0dil
Browse files

Packets: BUGFIX: Ensure correct linking of all referenced packet types

parent 4c3fa26a
No related branches found
No related tags found
No related merge requests found
......@@ -19,4 +19,6 @@ SENFSCons.Lib(env,
sources = sources[0],
no_includes = 1)
SConscript(glob.glob("*/SConscript"))
SENFSCons.Doxygen(env)
// $Id$
//
// Copyright (C) 2008
// Fraunhofer Institute for Open Communication Systems (FOKUS)
// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
//
// 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
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the
// Free Software Foundation, Inc.,
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
/** \file
\brief PacketLink.test unit tests */
//#include "PacketLink.test.hh"
//#include "PacketLink.test.ih"
// Custom includes
#include "../EthernetPacket.hh"
#include "../IPv6Packet.hh"
#include <boost/test/auto_unit_test.hpp>
#include <boost/test/test_tools.hpp>
#define prefix_
///////////////////////////////cc.p////////////////////////////////////////
BOOST_AUTO_UNIT_TEST(packetLink)
{
// This test shall test, whether referencing a packet (in this case IPv6Packet) as template
// argument correctly includes the corresponding object file when linking
boost::uint8_t data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // source mac
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // target mac
0x86, 0xdd, // ethertype
0x60, 0x00, 0x00, 0x00, // IP version, class,
// flow label
0x00, 0x00, // payload length
0x3B, // no next header
0x10, // hop limit
0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // source ip
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // target ip
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 };
senf::EthernetPacket p (senf::EthernetPacket::create(data));
BOOST_REQUIRE( p.next() );
BOOST_CHECK( p.next().is<senf::IPv6Packet>() );
}
///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_
// Local Variables:
// mode: c++
// fill-column: 100
// comment-column: 40
// c-file-style: "senf"
// indent-tabs-mode: nil
// ispell-local-dictionary: "american"
// compile-command: "scons -u test"
// End:
# -*- python -*-
Import('env')
import SENFSCons, glob
###########################################################################
SENFSCons.Test(env, sources = glob.glob("*.test.cc"),
LIBS = [ 'Packets_DefaultBundle', 'Packets', 'Socket', 'Utils' ])
// $Id$
//
// Copyright (C) 2006
// Fraunhofer Institute for Open Communication Systems (FOKUS)
// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
//
// 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
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the
// Free Software Foundation, Inc.,
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// Definition of non-inline non-template functions
//#include "test.hh"
//#include "test.ih"
// Custom includes
#define BOOST_AUTO_TEST_MAIN
#include "../Utils/auto_unit_test.hh"
#include <boost/test/test_tools.hpp>
#define prefix_
///////////////////////////////cc.p////////////////////////////////////////
///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_
// Local Variables:
// mode: c++
// fill-column: 100
// c-file-style: "senf"
// indent-tabs-mode: nil
// ispell-local-dictionary: "american"
// compile-command: "scons -u test"
// comment-column: 40
// End:
......@@ -38,12 +38,14 @@
template <class Type>
prefix_ bool senf::PacketInterpreterBase::is()
{
{ static void const * const _ ((void*)&Type::dump); (void) _; }
return dynamic_cast< PacketInterpreter<Type>* >(this);
}
template <class Type>
prefix_ typename senf::PacketInterpreter<Type>::ptr senf::PacketInterpreterBase::as()
{
{ static void const * const _ ((void*)&Type::dump); (void) _; }
return typename PacketInterpreter<Type>::ptr(
static_cast< PacketInterpreter<Type>* >(this));
}
......
......@@ -10,7 +10,7 @@ ALIASES = "fixme=\xrefitem fixme \"Fix\" \"Fixmes\"" \
"idea=\xrefitem idea \"Idea\" \"Ideas\"" \
"implementation=\par \"Implementation note:\"" \
"doc=\xrefitem doc \"Documentation request\" \"Documentation Requests\"" \
"autotoc=\htmlonly <div id="autotoc"></div> \endhtmlonly"
"autotoc=\htmlonly <div id=\"autotoc\"></div> \endhtmlonly"
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = YES
MULTILINE_CPP_IS_BRIEF = YES
......
......@@ -302,6 +302,18 @@ def GlobalTargets(env):
# \internal
def LibPath(lib): return '${LOCALLIBDIR}/${LIBPREFIX}%s${LIBADDSUFFIX}${LIBSUFFIX}' % lib
def Test(env, sources, LIBS = [], OBJECTS = []):
test = env.BoostUnitTests(
target = 'test',
objects = [],
test_sources = sources,
LIBS = [ x + '$LIBADDSUFFIX' for x in LIBS ],
OBJECTS = OBJECTS,
DEPENDS = [ env.File(LibPath(x)) for x in LIBS ])
env.Alias('all_tests', test)
env.Alias(env.File('test'), test)
## \brief Build object files
#
# This target helper will build object files from the given
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment