Revised OpenFlow Library  v0.6.0dev
 All Classes Files Functions Variables Friends Groups Pages
Classes | Public Types | Public Member Functions | Public Attributes | Friends | List of all members
rofl::fipv6frame Class Reference

#include <fipv6frame.h>

Classes

struct  ipv6_hdr_t
 

Public Types

enum  ipv6_ether_t { IPV6_ETHER = 0x86dd }
 
enum  ipv6_ext_t {
  IPPROTO_IPV6_HOPOPT = 0, IPPROTO_ICMP = 1, IPPROTO_TCP = 6, IPPROTO_UDP = 17,
  IPV6_IP_PROTO = 41, IPPROTO_IPV6_ROUTE = 43, IPPROTO_IPV6_FRAG = 44, IPPROTO_IPV6_ICMP = 58,
  IPPROTO_IPV6_NONXT = 59, IPPROTO_IPV6_OPTS = 60, IPPROTO_IPV6_MIPV6 = 135
}
 

Public Member Functions

struct rofl::fipv6frame::ipv6_hdr_t __attribute__ ((packed))
 
 fipv6frame (uint8_t *data, size_t datalen)
 
virtual ~fipv6frame ()
 
void ipv6_calc_checksum ()
 
fipv6extget_ext_hdr (enum ipv6_ext_t type) throw (eIPv6FrameNotFound)
 
virtual bool complete () const
 
virtual size_t need_bytes () const
 
virtual void validate (uint16_t total_len=0) const
 
virtual void initialize () throw (eIPv6FrameInval)
 
virtual void payload_insert (uint8_t *data, size_t datalen) throw (eFrameOutOfRange)
 
virtual uint8_t * payload () const throw (eFrameNoPayload)
 
virtual size_t payloadlen () const throw (eFrameNoPayload)
 
void set_version (uint8_t version=0x06)
 
uint8_t get_version ()
 
void set_traffic_class (uint8_t tc)
 
void set_dscp (uint8_t dscp)
 
void set_ecn (uint8_t ecn)
 
uint8_t get_traffic_class () const
 
uint8_t get_dscp () const
 
uint8_t get_ecn () const
 
void set_flow_label (uint32_t flabel)
 
uint32_t get_flow_label () const
 
void set_payload_length (uint16_t len)
 
uint16_t get_payload_length () const
 
void set_next_header (uint8_t nxthdr)
 
uint8_t get_next_header ()
 
void set_hop_limit (uint8_t hops)
 
uint8_t get_hop_limit ()
 
void dec_hop_limit ()
 
void set_ipv6_src (uint8_t *somem, size_t memlen) throw (eIPv6FrameInval)
 
void set_ipv6_src (cmemory const &src) throw (eIPv6FrameInval)
 
void set_ipv6_src (caddress_in6 const &src)
 
caddress_in6 get_ipv6_src () const
 
void set_ipv6_dst (uint8_t *somen, size_t memlen) throw (eIPv6FrameInval)
 
void set_ipv6_dst (cmemory const &dst) throw (eIPv6FrameInval)
 
void set_ipv6_dst (caddress_in6 const &dst)
 
caddress_in6 get_ipv6_dst () const
 
- Public Member Functions inherited from rofl::fframe
 fframe (uint8_t *_data=NULL, size_t _datalen=0)
 
 fframe (size_t len=DEFAULT_FFRAME_SIZE)
 
virtual ~fframe ()
 
virtual void reset (uint8_t *_data, size_t _datalen)
 
 fframe (const fframe &frame)
 
fframeoperator= (const fframe &frame)
 
virtual uint8_t * sopdu () const
 Returns pointer to begin of this PDU.
 
virtual size_t pdulen () const
 Returns length of this PDU.
 
virtual uint8_t * sosdu () const
 Returns pointer to begin of SDU encapsulated in this PDU (if any).
 
virtual uint8_t & operator[] (size_t index) throw (eFrameOutOfRange)
 
virtual uint8_t * soframe () const
 
virtual size_t framelen () const
 
bool empty () const
 
void shift_left (size_t bytes)
 
void shift_right (size_t bytes)
 

Public Attributes

enum rofl::fipv6frame::ipv6_ether_t __attribute__
 
enum rofl::fipv6frame::ipv6_ext_t __attribute__
 
struct ipv6_hdr_tipv6_hdr
 
uint8_t * ipv6data
 
size_t ipv6datalen
 
std::map< enum ipv6_ext_t,
fipv6ext
ipv6exts
 
- Public Attributes inherited from rofl::fframe
fframenext
 
fframeprev
 

Friends

std::ostream & operator<< (std::ostream &os, fipv6frame const &ipv6)
 

Detailed Description

pppoe mixin for cpacket

Inheritance diagram for rofl::fipv6frame:
rofl::fframe

Constructor & Destructor Documentation

fipv6frame::fipv6frame ( uint8_t *  data,
size_t  datalen 
)

constructor

fipv6frame::~fipv6frame ( )
virtual

destructor

Member Function Documentation

bool fipv6frame::complete ( ) const
virtual

returns boolean value indicating completeness of the packet

Reimplemented from rofl::fframe.

void fipv6frame::initialize ( )
throw (eIPv6FrameInval
)
virtual

initialize (set eth_hdr, pppoe_hdr)

Reimplemented from rofl::fframe.

void fipv6frame::ipv6_calc_checksum ( )

calculate ipv6 header checksum

size_t fipv6frame::need_bytes ( ) const
virtual

returns the number of bytes this packet expects from the socket next

Reimplemented from rofl::fframe.

uint8_t * fipv6frame::payload ( ) const
throw (eFrameNoPayload
)
virtual

get payload

Reimplemented from rofl::fframe.

void fipv6frame::payload_insert ( uint8_t *  data,
size_t  datalen 
)
throw (eFrameOutOfRange
)
virtual

insert payload

Reimplemented from rofl::fframe.

size_t fipv6frame::payloadlen ( ) const
throw (eFrameNoPayload
)
virtual

get payload length

Reimplemented from rofl::fframe.

void fipv6frame::set_ipv6_dst ( uint8_t *  somen,
size_t  memlen 
)
throw (eIPv6FrameInval
)

dst in network-byte-order

void fipv6frame::set_ipv6_dst ( cmemory const &  dst)
throw (eIPv6FrameInval
)

dst in network-byte-order

void fipv6frame::set_ipv6_src ( uint8_t *  somem,
size_t  memlen 
)
throw (eIPv6FrameInval
)

src in network-byte-order

void fipv6frame::set_ipv6_src ( cmemory const &  src)
throw (eIPv6FrameInval
)

src in network-byte-order

void fipv6frame::validate ( uint16_t  total_len = 0) const
virtual

validate (frame structure)

Reimplemented from rofl::fframe.


The documentation for this class was generated from the following files: