ip6fragmenter.hh

来自「COPE the first practical network coding 」· HH 代码 · 共 66 行

HH
66
字号
#ifndef CLICK_IP6FRAGMENTER_HH#define CLICK_IP6FRAGMENTER_HH#include <click/element.hh>#include <click/glue.hh>CLICK_DECLS/* * =c * IP6Fragmenter(MTU) * =s IPv6 *  * =d * Expects IP6 packets as input. * If the IP6 packet size is <= mtu, just emits the packet on output 0. * If the size is greater than mtu and DF isn't set, splits into * fragments emitted on output 0. * If DF is set and size is greater than mtu, sends to output 1. *  * Ordinarily output 1 is connected to an ICMP6Error packet generator * with type 3 (UNREACH) and code 4 (NEEDFRAG). * * Only the mac_broadcast annotation is copied into the fragments. * * Sends the first fragment last. * * =e * Example: * *   ... -> fr::IP6Fragmenter -> Queue(20) -> ... *   fr[1] -> ICMP6Error(18.26.4.24, 3, 4) -> ... * * =a ICMP6Error, CheckLength */class IP6Fragmenter : public Element {  unsigned _mtu;  int _drops;  int _fragments;    void fragment(Packet *);  //int optcopy(const click_ip6 *ip1, click_ip6 *ip2); public:    IP6Fragmenter();  ~IP6Fragmenter();    const char *class_name() const		{ return "IP6Fragmenter"; }   const char *processing() const	{ return PUSH; }  void notify_noutputs(int);  int configure(Vector<String> &, ErrorHandler *);    int drops() const				{ return _drops; }  int fragments() const				{ return _fragments; }    void add_handlers();  void push(int, Packet *p);    };CLICK_ENDDECLS#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?