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

📄 ipclassifier.hh

📁 Click is a modular router toolkit. To use it you ll need to know how to compile and install the sof
💻 HH
字号:
#ifndef CLICK_IPCLASSIFIER_HH#define CLICK_IPCLASSIFIER_HH#include "elements/ip/ipfilter.hh"CLICK_DECLS/*=cIPClassifier(PATTERN_1, ..., PATTERN_N)=s ipclassifies IP packets by contents=dClassifies IP packets according to tcpdump(1)-like patterns. TheIPClassifier has N outputs, each associated with the corresponding patternfrom the configuration string. The input packets must have their IP headerannotation set; CheckIPHeader and MarkIPHeader do this.Patterns are built from I<pattern primitives>. The primitivesIPClassifier understands are:=over 8=item B<ip proto PROTO>PROTO is an IP protocol name (see below) or a valid IP protocol number.Matches packets of the given protocol.=item B<[SRCORDST] host IPADDR>IPADDR is an IP address and SRCORDST is 'src', 'dst', 'src or dst', or 'srcand dst'. (If SRCORDST is missing, 'src or dst' is assumed.) Matchespackets sent to and/or from the given address.=item B<[SRCORDST] net NETADDR>NETADDR is an IP network address (either CIDR-style 'IPADDR/BITS' or'IPADDR mask MASK') and SRCORDST is as above. Matches packets sent toand/or from the given network.=item B<[SRCORDST] [tcp | udp] port PORT>PORT is a TCP or UDP port name (see below) or number and SRCORDST is asabove. Matches packets sent to and/or from the given TCP or UDP port. Ifyou leave out 'tcp' or 'udp', then either TCP or UDP is accepted.=item B<ip vers VERSION>VERSION is a value between 0 and 15. Matches IP packets with the givenversion.=item B<ip hl HL>HL is a value between 0 and 15. Matches IP packets with the given headerlength.=item B<ip id ID>ID is a value between 0 and 65535. Matches IP packets with the given IP ID.=item B<ip tos TOS>TOS is a value between 0 and 255. Matches IP packets with the given TOSvalue.=item B<ip dscp DSCP>DSCP is a value between 0 and 63. Matches IP packets with the given DSCPvalue (the upper 6 bits of TOS).=item B<ip ect>Matches IP packets with ECN Capable Transport turned on.=item B<ip ce>Matches IP packets with ECN Congestion Experienced set.=item B<ip ttl TTL>TTL is a value between 0 and 255. Matches IP packets with the given TTL value.=item B<ip frag>Matches fragmented IP packets (that is, packets with the more-fragments bitset and/or a nonzero fragment offset).=item B<ip unfrag>Equivalent to 'not ip frag'.=item B<tcp opt TCPOPT>TCPOPT is a TCP option name (see below). Matches TCP packets with the givenoption.=item B<tcp win TCPWIN>TCPWIN is a TCP receive window length. Matches TCP packets with the givenwindow length. Note that window scaling is not applied.=item B<icmp type TYPE>TYPE is a value between 0 and 255 or an ICMP type name (see below). MatchesICMP packets with the given ICMP type.=item B<ip[POS:LEN] VALUE>Matches packets whose IP header field starting at byte position POS, and goingon for LEN bytes, equals VALUE.  You can say B<ip[POS]> instead ofB<ip[POS:1]>.=item B<transp[POS:LEN] VALUE>Like B<ip[POS:LEN]>, but for transport header fields.  You can also giveparticular transport protocols, such as B<tcp[POS:LEN]>.=item B<true>Matches every packet.=item B<false>Matches no packets.=backThese primitives can be combined with the connectives 'and', 'or', and 'not'V<>(synonyms '&&', '||', and '!'), with the ternary operator '?:' (the colonmust be surrounded by spaces!), and with parentheses. For example, '(dst portwww or dst port ssh) and tcp opt syn'.All primitives except B<tcp opt> accept an optional OPERATION, '==' or '!=',which can occur before the actual option.  If no OPERATION is specified, '=='is assumed.  'src host == 10.0.0.10' matches packets whose source host is10.0.0.10; 'src host != 10.0.0.10' matches packets whose source host I<is not>10.0.0.10.  Directives with integer values also support the '<', '>', '<=',and '>=' operations.For B<port> and B<icmp type> directives, 'DIRECTIVE != VALUE' is not thesame as 'not (DIRECTIVE == VALUE)'. For example, 'src tcp port != 5'matches TCP packets whose source port is not 5, while '!(src tcp port ==5)' matches non-TCP packets as well. (The 'src tcp port != 5' option iseffectively equivalent to 'tcp and not src tcp port 5'.) Similarly, 'icmptype != 4' will not match non-ICMP packets. The same goes for the '<', '>','<=', and '>=' relations.Most primitives also accept bitmasks: 'DIRECTIVE & MASK [[OP] VALUE]'.  Forinstance, 'src tcp port & 10 == 8'.The B<port>, B<icmp type>, and B<tcp opt> directives will only match firstfragments.You can omit a lot of this syntax. For example, instead of 'ip proto tcp',you can just say 'tcp'; and similarly for 'port www' (just say 'www'), 'tcpopt syn' (just say 'syn'), 'net 10.0.0.0/24' (just say '10.0.0.0/24'), and'ip unfrag' (just say 'unfrag'). You can often eliminate repetitivequalifiers, too: 'src port 80 or 81' is the same as 'src port 80 or srcport 81'.A pattern consisting entirely of "-", "any", or "all" matches every packet.The patterns are scanned in order, and the packet is sent to the outputcorresponding to the first matching pattern. Thus more specific patternsshould come before less specific ones. You will get a warning if no packetwill ever match a pattern. Usually, this is because an earlier pattern ismore general, or because your pattern is contradictory ('src port www andsrc port ftp').=nValid IP port names: 'echo', 'discard', 'daytime', 'chargen', 'ftp-data','ftp', 'ssh', 'telnet', 'smtp', 'domain', 'dns', 'bootps', 'bootpc','tftp', 'finger', 'www', 'pop3', 'sunrpc', 'auth', 'nntp', 'ntp','netbios-ns', 'netbios-dgm', 'netbios-ssn', 'snmp', 'snmp-trap', 'irc','imap3', 'https', 'rip', 'route', 'imaps', 'pop3s'Valid IP protocol names: 'icmp', 'igmp', 'ipip', 'tcp', 'udp'Valid TCP options: 'syn', 'fin', 'ack', 'rst', 'psh', 'urg'Valid ICMP type names: 'echo-reply', 'unreachable', 'sourcequench','redirect', 'echo', 'routeradvert', 'routersolicit', 'timeexceeded','parameterproblem', 'timestamp', 'timestamp-reply', 'inforeq','inforeq-reply', 'maskreq', 'maskreq-reply'This element correctly handles IP packets with options.B<[tcp | udp] port>, B<icmp type>, B<tcp opt>, and B<tcp win> directives canonly be true on the first fragment of a fragmented packet.Every IPClassifier element has an equivalent corresponding IPFilter elementand vice versa. Use the element whose syntax is more convenient for yourneeds.=eFor example,  IPClassifier(10.0.0.0/24 and syn,               10.0.0.0/24 and fin ack,               10.0.0.0/24 and tcp,               -);creates an element with four outputs. The first three outputs are for TCPpackets from net 10.0.0.x. SYN packets are sent to output 0, FIN packetswith the ACK bit set to output 1, and all other TCP packets to output 2.The last output is for all other IP packets, and non-TCP packets from net10.0.0.x.  IPClassifier(dst tcp port 8000 or 8080,               dst tcp port > 1023,               tcp);creates an element with three outputs. The first output is for TCP packetsdestined for port 8000 or 8080; the second output is for TCP packetsdestined for any other user port (that is, port > 1023); and the thirdoutput is for all other TCP packets. Non-TCP packets are dropped.=h program read-onlyReturns a human-readable definition of the program the IPClassifier elementis using to classify packets. At each step in the program, four bytesof packet data are ANDed with a mask and compared against four bytes ofclassifier pattern.=a Classifier, IPFilter, CheckIPHeader, MarkIPHeader, CheckIPHeader2,tcpdump(1) */class IPClassifier : public IPFilter { public:  IPClassifier();  ~IPClassifier();  const char *class_name() const		{ return "IPClassifier"; }  const char *processing() const		{ return PUSH; }  int configure(Vector<String> &, ErrorHandler *);};CLICK_ENDDECLS#endif

⌨️ 快捷键说明

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