buffer.h

Go to the documentation of this file.
00001 /*
00002  *  anytun
00003  *
00004  *  The secure anycast tunneling protocol (satp) defines a protocol used
00005  *  for communication between any combination of unicast and anycast
00006  *  tunnel endpoints.  It has less protocol overhead than IPSec in Tunnel
00007  *  mode and allows tunneling of every ETHER TYPE protocol (e.g.
00008  *  ethernet, ip, arp ...). satp directly includes cryptography and
00009  *  message authentication based on the methodes used by SRTP.  It is
00010  *  intended to deliver a generic, scaleable and secure solution for
00011  *  tunneling and relaying of packets of any protocol.
00012  *
00013  *
00014  *  Copyright (C) 2007 anytun.org <satp@wirdorange.org>
00015  *
00016  *  This program is free software; you can redistribute it and/or modify
00017  *  it under the terms of the GNU General Public License version 2
00018  *  as published by the Free Software Foundation.
00019  *
00020  *  This program is distributed in the hope that it will be useful,
00021  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00022  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023  *  GNU General Public License for more details.
00024  *
00025  *  You should have received a copy of the GNU General Public License
00026  *  along with this program (see the file COPYING included with this
00027  *  distribution); if not, write to the Free Software Foundation, Inc.,
00028  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00029  */
00030 
00031 #ifndef _BUFFER_H_
00032 #define _BUFFER_H_
00033 
00034 #include "datatypes.h"
00035 
00036 class TunDevice;
00037 class UDPPacketSource;
00038 
00039 class Buffer
00040 {
00041 public:
00042   Buffer();
00043   Buffer(u_int32_t length);
00044   Buffer(u_int8_t* data, u_int32_t length);
00045   virtual ~Buffer();
00046   Buffer(const Buffer &src);
00047   void operator=(const Buffer &src);
00048   void operator=(const seq_nr_t &src);
00049   void operator=(const sender_id_t &src);
00050 
00051   // math operations to calculate IVs and keys
00052   virtual Buffer operator^(const Buffer &xor_by) const;
00053   virtual Buffer leftByteShift(u_int32_t width) const;
00054   virtual Buffer rightByteShift(u_int32_t width) const;
00055 
00056   u_int32_t resizeFront(u_int32_t new_length);
00057   u_int32_t resizeBack(u_int32_t new_length);
00058   u_int32_t getLength() const;
00059   u_int8_t* getBuf();
00060   u_int8_t& operator[](u_int32_t index);
00061   u_int8_t operator[](u_int32_t index) const;
00062   void printHexDump() const;
00063 
00064   operator u_int8_t*(); // just for write/read tun and packetSource
00065 protected:
00066   friend class TunDevice;
00067   friend class UDPPacketSource;
00068 //  friend class AesIcmCypher;
00069 //  friend class KeyDerivation;   // 
00070 
00071   u_int8_t *buf_;
00072   u_int32_t length_;
00073 
00074 };
00075 
00076 #endif

Generated on Tue Nov 27 14:11:51 2007 for anytun by  doxygen 1.5.1