+++ /dev/null
-// $Id: IPv6ExtOptionType.ct 869 2008-06-09 13:57:27Z pug $
-//
-// Copyright (C) 2009
-// Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
-// Philipp.Batroff@fokus.fraunhofer.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 IPv6Extension-Options non-inline template implementation */
-
-//#include "IPv6ExtOptionType.ih"
-
-// Custom includes
-
-#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
-
-template <class ForwardReadableRange>
-prefix_ void senf::IPv6GenericOptionTLVParser::value(ForwardReadableRange const &range)
-{
- unsigned int rangeSize = boost::size(range);
-
- if ( (rangeSize-2) != optionLength() )
- resize(optionLength()+2, rangeSize);
- std::copy(boost::next(boost::begin(range), 2), boost::next(boost::end(range)),
- boost::next(i(), 2 + optionLength() ));
- unsigned int val = *(boost::begin(range));
- unsigned int mask = 192u;
- altAction() = (val & mask) >> 6;
- mask = 32u;
- changeFlag() = (val & mask) >> 5;
- mask = 31u;
- optionType() = (val & mask);
- optionLength() = *(boost::next( boost::begin(range), 1));
-}
-
-template <class ForwardReadableRange>
-prefix_ void senf::IPv6GenericOptionTLVParser::setPayload(ForwardReadableRange const &range)
-{
- unsigned int rangeSize = boost::size(range);
- if ( rangeSize != optionLength() )
- resize( (optionLength() + 2), (rangeSize + 2) );
- std::copy( boost::begin(range), boost::end(range), boost::next( i(), 2));
- optionLength() = rangeSize;
-}
-
-template <class Parser>
-prefix_ Parser senf::IPv6GenericOptionTLVParser::init()
-{
- size_type oldSize (bytes() );
- size_type newParserSize ( senf::init_bytes<Parser>::value );
- resize( oldSize, newParserSize);
- std::fill(i(),boost::next(i(), newParserSize), 0u);
- Parser concreteParser = Parser(i(), state() );
- concreteParser.init();
- concreteParser.optionLength() = (newParserSize-2);
- return concreteParser;
-}
-
-template <class Parser>
-prefix_ Parser senf::IPv6GenericOptionTLVParser::as()
-{
- return Parser(i(), state() );
-}
-
-
-///////////////////////////////ct.e////////////////////////////////////////
-#undef prefix_
-
-\f
-// 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: