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::ficmpv6frame Class Reference

Classes

struct  icmpv6_dest_unreach_hdr_t
 
struct  icmpv6_echo_reply_hdr_t
 
struct  icmpv6_echo_request_hdr_t
 
struct  icmpv6_hdr_t
 
struct  icmpv6_neighbor_advertisement_hdr_t
 
struct  icmpv6_neighbor_solicitation_hdr_t
 
struct  icmpv6_param_problem_hdr_t
 
struct  icmpv6_pkt_too_big_hdr_t
 
struct  icmpv6_pseudo_hdr_t
 
struct  icmpv6_redirect_hdr_t
 
struct  icmpv6_router_advertisement_hdr_t
 
struct  icmpv6_router_solicitation_hdr_t
 
struct  icmpv6_time_exceeded_hdr_t
 

Public Types

enum  icmpv6_ip_proto_t { ICMPV6_IP_PROTO = 58 }
 
enum  icmpv6_type_t {
  ICMPV6_TYPE_DESTINATION_UNREACHABLE = 1, ICMPV6_TYPE_PACKET_TOO_BIG = 2, ICMPV6_TYPE_TIME_EXCEEDED = 3, ICMPV6_TYPE_PARAMETER_PROBLEM = 4,
  ICMPV6_TYPE_ECHO_REQUEST = 128, ICMPV6_TYPE_ECHO_REPLY = 129, ICMPV6_TYPE_MULTICAST_LISTENER_QUERY = 130, ICMPV6_TYPE_MULTICAST_LISTENER_REPORT = 131,
  ICMPV6_TYPE_MULTICAST_LISTENER_DONE = 132, ICMPV6_TYPE_ROUTER_SOLICATION = 133, ICMPV6_TYPE_ROUTER_ADVERTISEMENT = 134, ICMPV6_TYPE_NEIGHBOR_SOLICITATION = 135,
  ICMPV6_TYPE_NEIGHBOR_ADVERTISEMENT = 136, ICMPV6_TYPE_REDIRECT_MESSAGE = 137, ICMPV6_TYPE_ROUTER_RENUMBERING = 138, ICMPV6_TYPE_ICMP_NODE_INFORMATION_QUERY = 139,
  ICMPV6_TYPE_ICMP_NODE_INFORMATION_RESPONSE = 140, ICMPV6_TYPE_INVERSE_NEIGHBOR_DISCOVERY_SOLICITATION_MESSAGE = 141, ICMPV6_TYPE_INVERSE_NEIGHBOR_DISCOVERY_ADVERTISEMENT_MESSAGE = 142, ICMPV6_TYPE_MULTICAST_LISTENER_DISCOVERY_REPORT = 143,
  ICMPV6_TYPE_HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_MESSAGE = 144, ICMPV6_TYPE_HOME_AGENT_ADDRESS_DISCOVERY_REPLY_MESSAGE = 145, ICMPV6_TYPE_MOBILE_PREFIX_SOLICITATION = 146, ICMPV6_TYPE_MOBILE_PREFIX_ADVERTISEMENT = 147
}
 
enum  icmpv6_destination_unreachable_code_t {
  ICMPV6_DEST_UNREACH_CODE_NO_ROUTE_TO_DESTINATION = 0, ICMPV6_DEST_UNREACH_CODE_COMMUNICATION_WITH_DESTINATION_ADMINISTRATIVELY_PROHIBITED = 1, ICMPV6_DEST_UNREACH_CODE_BEYOND_SCOPE_OF_SOURCE_ADDRESS = 2, ICMPV6_DEST_UNREACH_CODE_ADDRESS_UNREACHABLE = 3,
  ICMPV6_DEST_UNREACH_CODE_PORT_UNREACHABLE = 4, ICMPV6_DEST_UNREACH_CODE_SOURCE_ADDRESS_FAILED_INGRESS_EGRESS_POLICY = 5, ICMPV6_DEST_UNREACH_CODE_REJECT_ROUTE_TO_DESTINATION = 6, ICMPV6_DEST_UNREACH_CODE_ERROR_IN_SOURCE_ROUTING_HEADER = 7
}
 

Public Member Functions

struct
rofl::ficmpv6frame::icmpv6_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_dest_unreach_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_pkt_too_big_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_time_exceeded_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_param_problem_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_echo_request_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_echo_reply_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_router_solicitation_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_router_advertisement_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_neighbor_solicitation_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_neighbor_advertisement_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_redirect_hdr_t 
__attribute__ ((packed))
 
struct
rofl::ficmpv6frame::icmpv6_pseudo_hdr_t 
__attribute__ ((packed))
 
 ficmpv6frame (uint8_t *data, size_t datalen)
 
 ficmpv6frame (size_t len=DEFAULT_ICMPV6_FRAME_SIZE)
 
virtual ~ficmpv6frame ()
 
void icmpv6_calc_checksum ()
 
ficmpv6optget_option (ficmpv6opt::icmpv6_option_type_t type) throw (eICMPv6FrameNotFound)
 
virtual bool complete () const
 
virtual size_t need_bytes () const
 
virtual void validate (uint16_t total_len=0) const
 
virtual void initialize ()
 
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)
 
uint8_t get_icmpv6_code () const
 
void set_icmpv6_code (uint8_t code)
 
uint8_t get_icmpv6_type () const
 
void set_icmpv6_type (uint8_t type)
 
uint8_t get_icmpv6_ndp_rtr_flag () const
 
void set_icmpv6_ndp_rtr_flag ()
 
uint8_t get_icmpv6_ndp_solicited_flag () const
 
void set_icmpv6_ndp_solicited_flag ()
 
uint8_t get_icmpv6_ndp_override_flag () const
 
void set_icmpv6_ndp_override_flag ()
 
caddress_in6 get_icmpv6_neighbor_taddr () const
 
void set_icmpv6_neighbor_taddr (caddress_in6 const &addr)
 
- 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

union {
   struct icmpv6_hdr_t *   icmpv6u_hdr
 
   struct icmpv6_dest_unreach_hdr_t *   icmpv6u_dst_unreach_hdr
 
   struct icmpv6_pkt_too_big_hdr_t *   icmpv6u_pkt_too_big_hdr
 
   struct icmpv6_time_exceeded_hdr_t *   icmpv6u_time_exceeded_hdr
 
   struct icmpv6_param_problem_hdr_t *   icmpv6u_param_problem_hdr
 
   struct icmpv6_echo_request_hdr_t *   icmpv6u_echo_request_hdr
 
   struct icmpv6_echo_reply_hdr_t *   icmpv6u_echo_reply_hdr
 
   struct
icmpv6_router_solicitation_hdr_t *   icmpv6u_rtr_solicitation_hdr
 
   struct
icmpv6_router_advertisement_hdr_t *   icmpv6u_rtr_advertisement_hdr
 
   struct
icmpv6_neighbor_solicitation_hdr_t *   icmpv6u_neighbor_solication_hdr
 
   struct
icmpv6_neighbor_advertisement_hdr_t *   icmpv6u_neighbor_advertisement_hdr
 
   struct icmpv6_redirect_hdr_t *   icmpv6u_redirect_hdr
 
icmpv6u
 
std::map
< ficmpv6opt::icmpv6_option_type_t,
ficmpv6opt
icmpv6opts
 
uint8_t * data
 
size_t datalen
 
- Public Attributes inherited from rofl::fframe
fframenext
 
fframeprev
 

Friends

std::ostream & operator<< (std::ostream &os, ficmpv6frame const &frame)
 
Inheritance diagram for rofl::ficmpv6frame:
rofl::fframe

Constructor & Destructor Documentation

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

constructor

ficmpv6frame::ficmpv6frame ( size_t  len = DEFAULT_ICMPV6_FRAME_SIZE)

constructor for creating new icmpv4 frame

ficmpv6frame::~ficmpv6frame ( )
virtual

destructor

Member Function Documentation

bool ficmpv6frame::complete ( ) const
virtual

returns boolean value indicating completeness of the packet

Reimplemented from rofl::fframe.

ficmpv6opt & ficmpv6frame::get_option ( ficmpv6opt::icmpv6_option_type_t  type)
throw (eICMPv6FrameNotFound
)

get specific ICMPv6 option

void ficmpv6frame::icmpv6_calc_checksum ( )

calculate TCP header checksum

void ficmpv6frame::initialize ( )
virtual

initialize (set eth_hdr, pppoe_hdr)

Reimplemented from rofl::fframe.

size_t ficmpv6frame::need_bytes ( ) const
virtual

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

Reimplemented from rofl::fframe.

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

get payload

Reimplemented from rofl::fframe.

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

insert payload

Reimplemented from rofl::fframe.

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

get payload length

Reimplemented from rofl::fframe.

void ficmpv6frame::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: