亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? element.hh

?? Click is a modular router toolkit. To use it you ll need to know how to compile and install the sof
?? HH
?? 第 1 頁 / 共 2 頁
字號:
// -*- c-basic-offset: 4; related-file-name: "../../lib/element.cc" -*-#ifndef CLICK_ELEMENT_HH#define CLICK_ELEMENT_HH#include <click/glue.hh>#include <click/vector.hh>#include <click/string.hh>#include <click/packet.hh>#include <click/handler.hh>CLICK_DECLSclass Router;class Master;class Task;class Timer;class Element;class ErrorHandler;class Bitvector;class EtherAddress;/** @file <click/element.hh> * @brief Click's Element class. */#ifndef CLICK_ELEMENT_DEPRECATED# define CLICK_ELEMENT_DEPRECATED CLICK_DEPRECATED#endifclass Element { public:    Element();    virtual ~Element();    static int nelements_allocated;    // RUNTIME    virtual void push(int port, Packet *p);    virtual Packet *pull(int port) CLICK_WARN_UNUSED_RESULT;    virtual Packet *simple_action(Packet *p);    virtual bool run_task(Task *task);	// return true iff did useful work    virtual void run_timer(Timer *timer);#if CLICK_USERLEVEL    virtual void selected(int fd);#endif    inline void checked_output_push(int port, Packet *p) const;    // ELEMENT CHARACTERISTICS    virtual const char *class_name() const = 0;    virtual const char *port_count() const;    static const char PORTS_0_0[];    static const char PORTS_0_1[];    static const char PORTS_1_0[];    static const char PORTS_1_1[];    static const char PORTS_1_1X2[];    virtual const char *processing() const;    static const char AGNOSTIC[];    static const char PUSH[];    static const char PULL[];    static const char PUSH_TO_PULL[];    static const char PULL_TO_PUSH[];    static const char PROCESSING_A_AH[];    virtual const char *flow_code() const;    static const char COMPLETE_FLOW[];    virtual const char *flags() const;    int flag_value(int flag) const;    virtual void *cast(const char *name);    virtual void *port_cast(bool isoutput, int port, const char *name);    // CONFIGURATION, INITIALIZATION, AND CLEANUP    enum ConfigurePhase {	CONFIGURE_PHASE_FIRST = 0,	CONFIGURE_PHASE_INFO = 20,	CONFIGURE_PHASE_PRIVILEGED = 90,	CONFIGURE_PHASE_DEFAULT = 100,	CONFIGURE_PHASE_LAST = 2000    };    virtual int configure_phase() const;    virtual int configure(Vector<String> &conf, ErrorHandler *errh);    virtual void add_handlers();    virtual int initialize(ErrorHandler *errh);    virtual void take_state(Element *old_element, ErrorHandler *errh);    virtual Element *hotswap_element() const;    enum CleanupStage {	CLEANUP_NO_ROUTER,	CLEANUP_BEFORE_CONFIGURE = CLEANUP_NO_ROUTER,	CLEANUP_CONFIGURE_FAILED,	CLEANUP_CONFIGURED,	CLEANUP_INITIALIZE_FAILED,	CLEANUP_INITIALIZED,	CLEANUP_ROUTER_INITIALIZED,	CLEANUP_MANUAL    };    virtual void cleanup(CleanupStage stage);    static inline void static_initialize();    static inline void static_cleanup();    // ELEMENT ROUTER CONNECTIONS    String name() const;    String landmark() const;    virtual String declaration() const;    inline Router *router() const;    inline int eindex() const;    inline int eindex(Router *r) const;    /** @brief Return the element's master. */    inline Master *master() const;    inline void attach_router(Router *r, int eindex) {	assert(!_router);	_router = r;	_eindex = eindex;    }    // INPUTS AND OUTPUTS    inline int nports(bool isoutput) const;    inline int ninputs() const;    inline int noutputs() const;    class Port;    inline const Port &port(bool isoutput, int port) const;    inline const Port &input(int port) const;    inline const Port &output(int port) const;    inline bool port_active(bool isoutput, int port) const;    inline bool input_is_push(int port) const;    inline bool input_is_pull(int port) const;    inline bool output_is_push(int port) const;    inline bool output_is_pull(int port) const;    void port_flow(bool isoutput, int port, Bitvector*) const;    // LIVE RECONFIGURATION    String configuration() const;    virtual bool can_live_reconfigure() const;    virtual int live_reconfigure(Vector<String>&, ErrorHandler*);#if CLICK_USERLEVEL    // SELECT    enum { SELECT_READ = 1, SELECT_WRITE = 2 };    int add_select(int fd, int mask);    int remove_select(int fd, int mask);#endif    // HANDLERS    void add_read_handler(const String &name, ReadHandlerCallback read_callback, const void *user_data = 0, uint32_t flags = 0);    void add_read_handler(const String &name, ReadHandlerCallback read_callback, int user_data, uint32_t flags = 0);    void add_write_handler(const String &name, WriteHandlerCallback write_callback, const void *user_data = 0, uint32_t flags = 0);    void add_write_handler(const String &name, WriteHandlerCallback write_callback, int user_data, uint32_t flags = 0);    void set_handler(const String &name, int flags, HandlerCallback callback, const void *user_data1 = 0, const void *user_data2 = 0);    void set_handler(const String &name, int flags, HandlerCallback callback, int user_data1, int user_data2 = 0);    int set_handler_flags(const String &name, int set_flags, int clear_flags = 0);    void add_task_handlers(Task *task, const String& prefix = String());    void add_data_handlers(const String &name, int flags, uint8_t *data);    void add_data_handlers(const String &name, int flags, bool *data);    void add_data_handlers(const String &name, int flags, int *data);    void add_data_handlers(const String &name, int flags, unsigned *data);    void add_data_handlers(const String &name, int flags, atomic_uint32_t *data);    void add_data_handlers(const String &name, int flags, long *data);    void add_data_handlers(const String &name, int flags, unsigned long *data);#if HAVE_LONG_LONG    void add_data_handlers(const String &name, int flags, long long *data);    void add_data_handlers(const String &name, int flags, unsigned long long *data);#endif#if HAVE_FLOAT_TYPES    void add_data_handlers(const String &name, int flags, double *data);#endif    void add_data_handlers(const String &name, int flags, String *data);    void add_data_handlers(const String &name, int flags, IPAddress *data);    void add_data_handlers(const String &name, int flags, EtherAddress *data);    void add_data_handlers(const String &name, int flags, Timestamp *data);    static String read_positional_handler(Element*, void*);    static String read_keyword_handler(Element*, void*);    static int reconfigure_positional_handler(const String&, Element*, void*, ErrorHandler*);    static int reconfigure_keyword_handler(const String&, Element*, void*, ErrorHandler*);    virtual int llrpc(unsigned command, void* arg);    int local_llrpc(unsigned command, void* arg);    class Port { public:	inline bool active() const;	inline Element* element() const;	inline int port() const;	inline void push(Packet* p) const;	inline Packet* pull() const;#if CLICK_STATS >= 1	unsigned npackets() const	{ return _packets; }#endif      private:	Element* _e;	int _port;#if CLICK_STATS >= 1	mutable unsigned _packets;	// How many packets have we moved?#endif#if CLICK_STATS >= 2	Element* _owner;		// Whose input or output are we?#endif	inline Port();	inline void assign(Element *owner, Element *e, int port, bool isoutput);	friend class Element;    };    // DEPRECATED    String id() const CLICK_DEPRECATED;    virtual bool run_task() CLICK_ELEMENT_DEPRECATED;    virtual void run_timer() CLICK_ELEMENT_DEPRECATED;  private:    enum { INLINE_PORTS = 4 };    Port* _ports[2];    Port _inline_ports[INLINE_PORTS];    int _nports[2];    Router* _router;    int _eindex;#if CLICK_STATS >= 2    // STATISTICS    unsigned _calls;		// Push and pull calls into this element.    click_cycles_t _self_cycles;	// Cycles spent in self and children.    click_cycles_t _child_cycles;	// Cycles spent in children.    unsigned _task_calls;	// Calls to tasks owned by this element.    click_cycles_t _task_cycles;	// Cycles spent in self from tasks.    unsigned _timer_calls;	// Calls to timers owned by this element.    click_cycles_t _timer_cycles;	// Cycles spent in self from timers.    inline void reset_cycles() {	_calls = _task_calls = _timer_calls = 0;	_self_cycles = _child_cycles = _task_cycles = _timer_cycles = 0;    }    static String read_cycles_handler(Element *, void *);    static int write_cycles_handler(const String &, Element *, void *, ErrorHandler *);#endif    Element(const Element &);    Element &operator=(const Element &);    // METHODS USED BY ROUTER    int set_nports(int, int);    int notify_nports(int, int, ErrorHandler *);    enum Processing { VAGNOSTIC, VPUSH, VPULL };    static int next_processing_code(const char*& p, ErrorHandler* errh);    void processing_vector(int* input_codes, int* output_codes, ErrorHandler*) const;    void initialize_ports(const int* input_codes, const int* output_codes);    int connect_port(bool isoutput, int port, Element*, int);    static String read_handlers_handler(Element *e, void *user_data);    void add_default_handlers(bool writable_config);    void add_data_handlers(const String &name, int flags, ReadHandlerCallback read_hook, WriteHandlerCallback write_hook, void *data);    friend class Router;#if CLICK_STATS >= 2    friend class Task;    friend class Master;#endif};/** @brief Initialize static data for this element class. * * Elements that need to initialize global state, such as global hash tables * or configuration parsing functions, should place that initialization code * inside a static_initialize() static member function.  Click's build * machinery will find that function and cause it to be called when the * element code is loaded, before any elements of the class are created. * * static_initialize functions are called in an arbitrary and unpredictable * order (not, for example, the configure_phase() order).  Element authors are * responsible for handling static initialization dependencies. * * For Click to find a static_initialize declaration, it must appear inside * the element class's class declaration on its own line and have the * following prototype: * * @code * static void static_initialize(); * @endcode * * It must also have public accessibility. * * @sa Element::static_cleanup */inline voidElement::static_initialize(){}/** @brief Clean up static data for this element class. * * Elements that need to free global state, such as global hash tables or

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产91九色蝌蚪| 午夜精品aaa| 99久久婷婷国产| 视频一区视频二区中文| 国产欧美日韩另类视频免费观看| 色噜噜夜夜夜综合网| 经典三级视频一区| 久久精品国产999大香线蕉| 一区二区三区日韩欧美精品| 337p日本欧洲亚洲大胆色噜噜| 欧美群妇大交群的观看方式| 91片黄在线观看| 成人av在线一区二区| 成人教育av在线| 国产一区二区在线影院| 理论电影国产精品| 久久超碰97中文字幕| 免费一级欧美片在线观看| 亚洲福利一区二区| 丝袜诱惑制服诱惑色一区在线观看| 亚洲视频香蕉人妖| 亚洲色图一区二区| 最新热久久免费视频| 久久综合九色综合欧美就去吻| 99久久精品99国产精品 | 久久综合九色综合欧美亚洲| 国产凹凸在线观看一区二区| 国产传媒久久文化传媒| 欧美在线免费观看视频| 精品国产欧美一区二区| 91精品国产91久久久久久一区二区 | 久久精品日产第一区二区三区高清版 | 天堂在线一区二区| 一区二区国产盗摄色噜噜| 亚洲成人在线免费| 视频一区二区欧美| 亚洲一级二级在线| 国内偷窥港台综合视频在线播放| 毛片不卡一区二区| 视频一区二区三区中文字幕| 国产高清不卡一区二区| 成人免费视频视频在线观看免费| 成人精品小蝌蚪| 欧美精选在线播放| 久久这里只精品最新地址| 精品日本一线二线三线不卡| 国产精品久久久久久妇女6080| 日韩美女精品在线| 丝袜美腿亚洲色图| 成人黄动漫网站免费app| 色狠狠色狠狠综合| 欧美人与禽zozo性伦| 日本一区二区三区在线观看| 亚洲精品福利视频网站| 亚洲国产cao| 成人免费va视频| 欧美色综合久久| 7777精品伊人久久久大香线蕉的 | 天天操天天干天天综合网| 蜜臀久久99精品久久久画质超高清| 国产suv精品一区二区三区| 色婷婷国产精品综合在线观看| 欧美三级电影一区| 日韩美一区二区三区| 亚洲影院理伦片| 国产福利91精品| 在线观看日韩一区| 中文字幕欧美一| 另类小说色综合网站| 成人免费三级在线| 91精品国产综合久久小美女| 国产精品灌醉下药二区| 国产乱码精品一区二区三区五月婷| 91精品办公室少妇高潮对白| 国产喷白浆一区二区三区| 极品美女销魂一区二区三区| 欧美综合一区二区| 中文字幕不卡在线观看| 福利电影一区二区| 欧美电视剧在线观看完整版| 一区二区三区中文在线观看| 91电影在线观看| 中文字幕亚洲成人| 国产黑丝在线一区二区三区| 久久综合九色综合欧美亚洲| 琪琪一区二区三区| 欧美喷潮久久久xxxxx| 日本午夜精品一区二区三区电影| 91小视频在线免费看| 国产精品成人一区二区三区夜夜夜 | 欧美精品99久久久**| 一区二区三区日韩精品视频| 国产精品91xxx| 精品少妇一区二区三区| 亚洲欧美电影一区二区| www.亚洲色图| 欧美成人一区二区三区在线观看| 石原莉奈在线亚洲二区| 欧美日韩色综合| ㊣最新国产の精品bt伙计久久| 成人精品小蝌蚪| 亚洲欧洲日本在线| 一本到不卡精品视频在线观看| 国产一区二区三区蝌蚪| 国产日韩欧美不卡在线| 热久久国产精品| 欧美成人乱码一区二区三区| 国产精品天美传媒| 99国产精品国产精品毛片| 亚洲女厕所小便bbb| 欧美视频在线一区| 国产真实精品久久二三区| 国产欧美一区二区三区网站| 韩国成人精品a∨在线观看| 亚洲国产精品精华液ab| 在线电影国产精品| 久久亚洲捆绑美女| 成人动漫一区二区| 亚洲裸体xxx| 欧美乱妇23p| 久久成人免费网| 国产欧美综合在线观看第十页| 91在线视频在线| 亚洲人成影院在线观看| 欧美综合天天夜夜久久| 综合中文字幕亚洲| 91免费国产视频网站| 亚洲国产色一区| 在线观看av一区二区| 麻豆91小视频| 国产精品视频yy9299一区| 日本国产一区二区| 久久99在线观看| 亚洲欧洲美洲综合色网| 欧美另类高清zo欧美| 亚洲午夜免费视频| 亚洲国产成人在线| 日韩一级免费观看| 欧美色视频在线观看| 国产一本一道久久香蕉| 日韩精品一卡二卡三卡四卡无卡| 国产三级精品三级| 51精品久久久久久久蜜臀| 国产夜色精品一区二区av| 亚洲午夜免费福利视频| 91麻豆精品国产91| 国产精品99久久久久久宅男| 一区二区三区在线免费视频| 精品av综合导航| 欧美在线视频日韩| 精品亚洲免费视频| 一级特黄大欧美久久久| 久久久久久一二三区| 欧美日韩aaaaaa| 国产一区二区三区在线观看免费视频 | 欧美一区二区三区思思人| www..com久久爱| 美美哒免费高清在线观看视频一区二区 | 亚洲午夜电影网| 亚洲欧洲美洲综合色网| 亚洲高清免费视频| 国产.欧美.日韩| 91精品国产免费久久综合| 国产精品99久久久久久久女警| 亚洲超碰97人人做人人爱| 国产精品久久久久aaaa樱花| 国产视频一区在线观看| 日韩一区二区三区av| 欧美中文一区二区三区| 91亚洲国产成人精品一区二区三 | 在线观看中文字幕不卡| 成人网男人的天堂| 韩国女主播成人在线观看| 奇米在线7777在线精品| 日产国产欧美视频一区精品| 国产精品国产三级国产a| 精品国免费一区二区三区| 日韩三级视频在线观看| 欧美一区二区三区啪啪| 欧美一区二区三区啪啪| 日韩欧美中文字幕公布| 日韩欧美一级在线播放| 在线观看www91| 欧美绝品在线观看成人午夜影视| 91欧美一区二区| 欧美性猛交xxxx黑人交| 99久久夜色精品国产网站| 精品视频一区二区不卡| 欧美日本高清视频在线观看| 欧美亚洲高清一区| 欧美一区二区免费视频| 日韩精品中文字幕一区二区三区| 欧美电影免费提供在线观看| 久久色.com| 国产精品国产三级国产aⅴ入口| 中文字幕第一页久久| 亚洲激情网站免费观看| 午夜欧美电影在线观看| 精一区二区三区| 成人avav在线|