亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲色图视频免费播放| 欧美日韩在线直播| 97成人超碰视| 国产美女精品一区二区三区| 成人av午夜影院| 色综合中文综合网| 欧美在线高清视频| 欧美日韩国产bt| 欧美一区二区三区四区高清| 精品对白一区国产伦| 国产精品国产自产拍在线| 一区二区三区影院| 国产精品国产三级国产| 天天操天天综合网| 国产一区二区在线观看免费| 91久久香蕉国产日韩欧美9色| 欧美性大战xxxxx久久久| 欧美视频在线不卡| 夜夜爽夜夜爽精品视频| 午夜精品福利在线| 国产成人高清在线| 欧美在线免费观看视频| 欧美视频在线一区二区三区 | 蜜臀精品久久久久久蜜臀 | 中文字幕制服丝袜一区二区三区| 中文字幕精品综合| 午夜欧美一区二区三区在线播放| 精久久久久久久久久久| 色婷婷香蕉在线一区二区| 日韩一区二区三区视频| ...xxx性欧美| 男女激情视频一区| thepron国产精品| 精品国产一区二区三区四区四| 欧美国产日本视频| 亚洲精品日韩一| 国产在线观看免费一区| 色拍拍在线精品视频8848| 久久久高清一区二区三区| 一卡二卡三卡日韩欧美| 国产乱码精品一区二区三| 欧美日韩亚洲不卡| 中文字幕免费不卡| 精品一区二区三区香蕉蜜桃 | 精品国产91亚洲一区二区三区婷婷| 中文文精品字幕一区二区| 蜜臀av国产精品久久久久| 色菇凉天天综合网| 久久久青草青青国产亚洲免观| 日韩中文字幕亚洲一区二区va在线 | 26uuu另类欧美亚洲曰本| 国产精品国产馆在线真实露脸 | 91污在线观看| 欧美一区三区二区| 亚洲激情网站免费观看| 国产精品资源在线| 2023国产一二三区日本精品2022| 一区二区三区不卡视频 | 精品视频1区2区3区| 国产精品传媒入口麻豆| 久久99九九99精品| 欧美一卡2卡3卡4卡| 亚洲黄色av一区| 精品在线播放免费| 欧美日韩高清影院| 国产精品久久久久久久久免费樱桃 | 国产美女在线观看一区| 日韩精品一区二区三区视频在线观看 | 免费观看成人鲁鲁鲁鲁鲁视频| 欧亚一区二区三区| 亚洲视频一二区| 国产乱码精品一区二区三区五月婷| 精品久久久久久久久久久久久久久久久 | 亚洲成a天堂v人片| 91亚洲大成网污www| 亚洲日本丝袜连裤袜办公室| 高清在线不卡av| 久久一区二区视频| 国产成人在线免费| 久久综合给合久久狠狠狠97色69| 亚洲高清免费视频| 欧美性猛交xxxx乱大交退制版| 亚洲日本va在线观看| 色婷婷亚洲一区二区三区| 日韩理论片在线| www.亚洲精品| 一区二区成人在线观看| 在线精品视频一区二区| 婷婷久久综合九色综合绿巨人| 欧美写真视频网站| 一区二区三区毛片| 91 com成人网| 男女激情视频一区| 国产日韩v精品一区二区| 国产成人午夜99999| 欧美日韩国产高清一区二区三区 | 欧美精选午夜久久久乱码6080| 成人免费在线视频| 在线一区二区三区四区五区| 一区二区三区中文字幕精品精品| 欧美男人的天堂一二区| 天天av天天翘天天综合网 | 亚洲综合久久久| 777色狠狠一区二区三区| 丝袜脚交一区二区| 制服丝袜亚洲播放| 国产在线视频一区二区三区| 视频在线观看一区二区三区| 亚洲精品在线观看视频| 国产综合色视频| 亚洲卡通动漫在线| 欧美色涩在线第一页| 亚洲国产欧美另类丝袜| 日韩欧美二区三区| 国产成人精品一区二区三区四区 | 国产亚洲欧美日韩在线一区| 国产99久久久久| 亚洲一区二区三区在线看| 欧美精品久久一区| 裸体一区二区三区| 日本一区二区三区高清不卡| 91日韩一区二区三区| 久久精品国产成人一区二区三区| 精品盗摄一区二区三区| 91福利国产成人精品照片| 免费观看日韩av| 久久久久久久久久看片| 在线观看视频一区| 黄色日韩网站视频| 亚洲福利电影网| 久久综合色之久久综合| 91福利精品视频| 国产精品69久久久久水密桃 | 99久久综合狠狠综合久久| 亚洲成av人在线观看| 精品国产麻豆免费人成网站| 99视频在线精品| 美女爽到高潮91| 亚洲视频一区二区在线| 久久精品一区二区三区不卡| 一本色道久久综合亚洲aⅴ蜜桃| 免费欧美在线视频| 亚洲男人都懂的| 日韩欧美色综合| 欧美艳星brazzers| 国产乱子轮精品视频| 日韩电影免费在线观看网站| 欧美激情一区不卡| 欧美午夜电影网| 国产成人aaa| 丝瓜av网站精品一区二区| 亚洲精品乱码久久久久久黑人| 欧美成人一级视频| 欧美精品v日韩精品v韩国精品v| 国产成人av电影在线| 久久黄色级2电影| 亚洲永久精品大片| 最近中文字幕一区二区三区| 精品国产伦理网| 91亚洲国产成人精品一区二区三| 国产成人高清在线| 久久精品国产一区二区三| 午夜欧美大尺度福利影院在线看| 国产精品污网站| 久久亚洲一区二区三区明星换脸 | 中文字幕va一区二区三区| 欧美一区二区三区免费| 一本久久精品一区二区| 捆绑变态av一区二区三区| 亚洲精选视频在线| 国产精品理论片在线观看| 欧美www视频| 精品乱码亚洲一区二区不卡| 欧美午夜片在线看| 欧美日韩国产一二三| 97久久超碰精品国产| 国产精品资源在线| 韩国精品在线观看| 免费观看一级欧美片| 久久99热99| 丝袜亚洲另类欧美| 日韩av中文在线观看| 午夜视频在线观看一区二区三区| 一卡二卡欧美日韩| 一区二区三区精品视频在线| 欧美一级免费观看| 日韩欧美黄色影院| 678五月天丁香亚洲综合网| 欧美亚洲国产一区在线观看网站 | 国产精品久久久久久久久久免费看| 精品国产乱码久久久久久老虎| 欧美一级片在线| 欧美一区二区三区视频免费播放| 制服.丝袜.亚洲.中文.综合| 日本韩国精品一区二区在线观看| 欧美性猛交xxxxxx富婆| 欧美三级视频在线播放| 91精品国产黑色紧身裤美女| 欧美片网站yy| 久久婷婷色综合|