#ifndef CLICK_NULLELEMENT_HH
#define CLICK_NULLELEMENT_HH
#include <click/element.hh>
CLICK_DECLS

/*
=c
Null

=s basictransfer
passes packets unchanged

=d
Just passes packets along without doing anything else.

=a
PushNull, PullNull
*/

class NullElement : public Element { public:
  
  NullElement();
  ~NullElement();
  
  const char *class_name() const	{ return "Null"; }
  const char *port_count() const	{ return PORTS_1_1; }
  const char *processing() const	{ return AGNOSTIC; }
  
  Packet *simple_action(Packet *);
  
};

/*
=c
PushNull

=s basictransfer
passes packets unchanged

=d
Responds to each pushed packet by pushing it unchanged out its first output.

=a
Null, PullNull
*/

class PushNullElement : public Element { public:
  
  PushNullElement();
  ~PushNullElement();
  
  const char *class_name() const	{ return "PushNull"; }
  const char *port_count() const	{ return PORTS_1_1; }
  const char *processing() const	{ return PUSH; }
  
  void push(int, Packet *);
  
};

/*
=c
PullNull

=s basictransfer
passes packets unchanged

=d
Responds to each pull request by pulling a packet from its input and returning
that packet unchanged.

=a
Null, PushNull */

class PullNullElement : public Element { public:
  
  PullNullElement();
  ~PullNullElement();
  
  const char *class_name() const	{ return "PullNull"; }
  const char *port_count() const	{ return PORTS_1_1; }
  const char *processing() const	{ return PULL; }
  
  Packet *pull(int);
  
};

CLICK_ENDDECLS
#endif


syntax highlighted by Code2HTML, v. 0.9.1