⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipsumdumpinfo.hh

📁 COPE the first practical network coding scheme which is developped on click
💻 HH
字号:
// -*- mode: c++; c-basic-offset: 4 -*-#ifndef CLICK_IPSUMDUMPINFO_HH#define CLICK_IPSUMDUMPINFO_HH#include <click/string.hh>#include <click/straccum.hh>class Packet;struct click_ip;struct click_udp;struct click_tcp;CLICK_DECLSnamespace IPSummaryDump {enum { MAJOR_VERSION = 1, MINOR_VERSION = 2 };// MINOR_VERSION 0 has W_IP_FRAGOFF fields in multiples of 8 bytes.// MINOR_VERSION 1 uses 'W' for TCP flag CWR (now we use 'C'), and often// uses ':' in sack blocks.    struct PacketDesc {    Packet* p;    const click_ip* iph;    const click_udp* udph;    const click_tcp* tcph;    union {	uint32_t v;	const uint8_t *vptr;    };    union {	uint32_t v2;	const uint8_t *end_vptr;    };        StringAccum* sa;    StringAccum* bad_sa;    bool careful_trunc;    bool force_extra_length;        inline PacketDesc(Packet*, StringAccum* sa, StringAccum* bad_sa, bool careful_trunc, bool force_extra_length);    void clear_values()			{ v = v2 = 0; }};struct Field {    const char* name;    int thunk;    void (*prepare)(PacketDesc&);    bool (*extract)(PacketDesc&, int);    void (*outa)(const PacketDesc&, int);    void (*outb)(const PacketDesc&, bool ok, int);    const uint8_t *(*inb)(PacketDesc&, const uint8_t*, const uint8_t*, int);    Field* synonym;    Field* next;    int binary_size() const;};extern const Field null_field;const Field* find_field(const String&, bool likely_synonyms = true);int register_unparser(const char* name, int thunk, void (*prepare)(PacketDesc&),		      bool (*extract)(PacketDesc&, int),		      void (*outa)(const PacketDesc&, int),		      void (*outb)(const PacketDesc&, bool, int),		      const uint8_t *(*inb)(PacketDesc&, const uint8_t*, const uint8_t*, int) = 0);int register_synonym(const char* name, const char* synonym);void static_cleanup();void num_outa(const PacketDesc&, int);enum { B_TYPEMASK = 0x70000000,       B_0 = 0x00000000,       B_1 = 0x10000000,       B_2 = 0x20000000,       B_4 = 0x30000000,       B_8 = 0x40000000,       B_4NET = 0x50000000,       B_SPECIAL = 0x60000000,       B_NOTALLOWED = 0x70000000 };void outb(const PacketDesc&, bool ok, int);const uint8_t *inb(PacketDesc&, const uint8_t*, const uint8_t*, int);enum { MISSING_IP = 0,       MISSING_IP_TRANSPORT = 1 };bool field_missing(const PacketDesc&, int what, const char* header_name, int l);// particular parsersvoid ip_prepare(PacketDesc&);void anno_register_unparsers();void ip_register_unparsers();void tcp_register_unparsers();void udp_register_unparsers();enum { DO_IPOPT_PADDING = 1,       DO_IPOPT_ROUTE = 2,       DO_IPOPT_TS = 4,       DO_IPOPT_UNKNOWN = 32,       DO_IPOPT_ALL = 0xFFFFFFFFU,       DO_IPOPT_ALL_NOPAD = 0xFFFFFFFEU };void unparse_ip_opt(StringAccum&, const uint8_t*, int olen, int mask);void unparse_ip_opt(StringAccum&, const click_ip*, int mask);void unparse_ip_opt_binary(StringAccum&, const uint8_t*, int olen, int mask);void unparse_ip_opt_binary(StringAccum&, const click_ip*, int mask);extern const char tcp_flags_word[];extern const uint8_t tcp_flag_mapping[256];enum { DO_TCPOPT_PADDING = 1,       DO_TCPOPT_MSS = 2,       DO_TCPOPT_WSCALE = 4,       DO_TCPOPT_SACK = 8,       DO_TCPOPT_TIMESTAMP = 16,       DO_TCPOPT_UNKNOWN = 32,       DO_TCPOPT_ALL = 0xFFFFFFFFU,       DO_TCPOPT_ALL_NOPAD = 0xFFFFFFFEU,       DO_TCPOPT_NTALL = 0xFFFFFFEEU };void unparse_tcp_opt(StringAccum&, const uint8_t*, int olen, int mask);void unparse_tcp_opt(StringAccum&, const click_tcp*, int mask);void unparse_tcp_opt_binary(StringAccum&, const uint8_t*, int olen, int mask);void unparse_tcp_opt_binary(StringAccum&, const click_tcp*, int mask);inline PacketDesc::PacketDesc(Packet* p_, StringAccum* sa_, StringAccum* bad_sa_, bool careful_trunc_, bool force_extra_length_)    : p(p_), iph(0), udph(0), tcph(0), sa(sa_), bad_sa(bad_sa_),      careful_trunc(careful_trunc_), force_extra_length(force_extra_length_){}}class IPSummaryDumpInfo { public:    enum Content {    W_NONE, W_TIMESTAMP, W_TIMESTAMP_SEC, W_TIMESTAMP_USEC, W_IP_SRC,    W_IP_DST, W_IP_LEN, W_IP_PROTO, W_IP_ID, W_SPORT,    W_DPORT, W_TCP_SEQ, W_TCP_ACK, W_TCP_FLAGS, W_PAYLOAD_LEN,    W_COUNT, W_IP_FRAG, W_IP_FRAGOFF, W_PAYLOAD, W_LINK,    W_AGGREGATE, W_TCP_SACK, W_TCP_OPT, W_TCP_NTOPT, W_FIRST_TIMESTAMP,    W_TCP_WINDOW, W_IP_OPT, W_IP_TOS, W_IP_TTL, W_TIMESTAMP_USEC1,    W_IP_CAPTURE_LEN, W_TCP_URP, W_NTIMESTAMP, W_FIRST_NTIMESTAMP, W_LAST};static int parse_content(const String &);static int content_binary_size(int);};CLICK_ENDDECLS#endif

⌨️ 快捷键说明

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