#ifndef CLICK_CHECKIP6HEADER_HH
#define CLICK_CHECKIP6HEADER_HH
#include <click/element.hh>
#include <click/glue.hh>
CLICK_DECLS
/*
* =c
* CheckIP6Header([BADADDRS])
* =s ip6
*
* =d
*
* Expects IP6 packets as input. Checks that the packet's length is
* reasonable, and that the IP6 version, length, are valid. Checks that the
* IP6 source address is a legal unicast address. Shortens packets to the IP6
* length, if the IP length is shorter than the nominal packet length (due to
* Ethernet padding, for example). Pushes invalid packets out on output 1,
* unless output 1 was unused; if so, drops invalid packets.
*
* The BADADDRS argument is a space-separated list of IP6 addresses that are
* not to be tolerated as source addresses. 0::0 is a bad address for routers,
* for example, but okay for link local packets.
*
* =a MarkIP6Header */
class CheckIP6Header : public Element {
int _n_bad_src;
IP6Address *_bad_src; // array of illegal IP6 src addresses.
#ifdef CLICK_LINUXMODULE
bool _aligned;
#endif
int _drops;
public:
CheckIP6Header();
~CheckIP6Header();
const char *class_name() const { return "CheckIP6Header"; }
const char *port_count() const { return "1/1-2"; }
const char *processing() const { return "a/ah"; }
int configure(Vector<String> &, ErrorHandler *);
int drops() const { return _drops; }
void add_handlers();
Packet *simple_action(Packet *);
void drop_it(Packet *);
};
CLICK_ENDDECLS
#endif
syntax highlighted by Code2HTML, v. 0.9.1