#ifndef CLICK_PROTOCOLTRANSLATOR46_HH
#define CLICK_PROTOCOLTRANSLATOR46_HH
#include <click/ip6address.hh>
#include <click/ipaddress.hh>
#include <click/vector.hh>
#include <click/element.hh>
CLICK_DECLS
/*
* =c
* ProtocolTranslator46()
*
*
* =s ip6
* translate IP/ICMP, TCP, and UDP packets between IPv4 and IPv6 protocols
*
* =d
*
*
* Has two inputs and two outputs. Input packets are valid IPv6 packets or
* IPv4 packets. IPv4 packets will be translated to IPv6 packets. IPv6
* packets will be translated to IPv4 packets. Output packets are valid
* IPv4/v6 packets; for instance, translated packets have their IP, ICMP/ICMPv6,
* TCP and/or UDP checksums updated.
*
*
* =a AddressTranslator ProtocolTranslator64*/
class ProtocolTranslator46 : public Element {
public:
ProtocolTranslator46();
~ProtocolTranslator46();
const char *class_name() const { return "ProtocolTranslator46"; }
const char *port_count() const { return PORTS_1_1; }
const char *processing() const { return AGNOSTIC; }
int configure(Vector<String> &, ErrorHandler *);
void push(int port, Packet *p);
void handle_ip4(Packet *);
private:
Packet * make_icmp_translate46(IP6Address ip6_src,
IP6Address ip6_dst,
unsigned char *a,
unsigned char payload_length);
Packet * make_translate46(IP6Address src,
IP6Address dst,
click_ip * ip,
unsigned char *a);
};
CLICK_ENDDECLS
#endif
syntax highlighted by Code2HTML, v. 0.9.1