Changeset View
Changeset View
Standalone View
Standalone View
sbin/pfctl/parse.y
Show All 40 Lines | |||||
#include <netinet/in_systm.h> | #include <netinet/in_systm.h> | ||||
#include <netinet/ip.h> | #include <netinet/ip.h> | ||||
#include <netinet/ip_icmp.h> | #include <netinet/ip_icmp.h> | ||||
#include <netinet/icmp6.h> | #include <netinet/icmp6.h> | ||||
#include <net/pfvar.h> | #include <net/pfvar.h> | ||||
#include <arpa/inet.h> | #include <arpa/inet.h> | ||||
#include <net/altq/altq.h> | #include <net/altq/altq.h> | ||||
#include <net/altq/altq_cbq.h> | #include <net/altq/altq_cbq.h> | ||||
#include <net/altq/altq_codel.h> | |||||
#include <net/altq/altq_priq.h> | #include <net/altq/altq_priq.h> | ||||
#include <net/altq/altq_hfsc.h> | #include <net/altq/altq_hfsc.h> | ||||
#include <net/altq/altq_fairq.h> | #include <net/altq/altq_fairq.h> | ||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <unistd.h> | #include <unistd.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <netdb.h> | #include <netdb.h> | ||||
▲ Show 20 Lines • Show All 237 Lines • ▼ Show 20 Lines | |||||
#define POM_STICKYADDRESS 0x02 | #define POM_STICKYADDRESS 0x02 | ||||
u_int8_t opts; | u_int8_t opts; | ||||
int type; | int type; | ||||
int staticport; | int staticport; | ||||
struct pf_poolhashkey *key; | struct pf_poolhashkey *key; | ||||
} pool_opts; | } pool_opts; | ||||
struct codel_opts codel_opts; | |||||
rpaulo: node_codel_opts? | |||||
Not Done Inline ActionsWe don't have or use node_code_opts here. In this case, this is correct. loos: We don't have or use node_code_opts here. In this case, this is correct. | |||||
struct node_hfsc_opts hfsc_opts; | struct node_hfsc_opts hfsc_opts; | ||||
struct node_fairq_opts fairq_opts; | struct node_fairq_opts fairq_opts; | ||||
struct node_state_opt *keep_state_defaults = NULL; | struct node_state_opt *keep_state_defaults = NULL; | ||||
int disallow_table(struct node_host *, const char *); | int disallow_table(struct node_host *, const char *); | ||||
int disallow_urpf_failed(struct node_host *, const char *); | int disallow_urpf_failed(struct node_host *, const char *); | ||||
int disallow_alias(struct node_host *, const char *); | int disallow_alias(struct node_host *, const char *); | ||||
int rule_consistent(struct pf_rule *, int); | int rule_consistent(struct pf_rule *, int); | ||||
▲ Show 20 Lines • Show All 109 Lines • ▼ Show 20 Lines | union { | ||||
struct filter_opts filter_opts; | struct filter_opts filter_opts; | ||||
struct antispoof_opts antispoof_opts; | struct antispoof_opts antispoof_opts; | ||||
struct queue_opts queue_opts; | struct queue_opts queue_opts; | ||||
struct scrub_opts scrub_opts; | struct scrub_opts scrub_opts; | ||||
struct table_opts table_opts; | struct table_opts table_opts; | ||||
struct pool_opts pool_opts; | struct pool_opts pool_opts; | ||||
struct node_hfsc_opts hfsc_opts; | struct node_hfsc_opts hfsc_opts; | ||||
struct node_fairq_opts fairq_opts; | struct node_fairq_opts fairq_opts; | ||||
struct codel_opts codel_opts; | |||||
} v; | } v; | ||||
int lineno; | int lineno; | ||||
} YYSTYPE; | } YYSTYPE; | ||||
#define PPORT_RANGE 1 | #define PPORT_RANGE 1 | ||||
#define PPORT_STAR 2 | #define PPORT_STAR 2 | ||||
int parseport(char *, struct range *r, int); | int parseport(char *, struct range *r, int); | ||||
#define DYNIF_MULTIADDR(addr) ((addr).type == PF_ADDR_DYNIFTL && \ | #define DYNIF_MULTIADDR(addr) ((addr).type == PF_ADDR_DYNIFTL && \ | ||||
(!((addr).iflags & PFI_AFLAG_NOALIAS) || \ | (!((addr).iflags & PFI_AFLAG_NOALIAS) || \ | ||||
!isdigit((addr).v.ifname[strlen((addr).v.ifname)-1]))) | !isdigit((addr).v.ifname[strlen((addr).v.ifname)-1]))) | ||||
%} | %} | ||||
%token PASS BLOCK SCRUB RETURN IN OS OUT LOG QUICK ON FROM TO FLAGS | %token PASS BLOCK SCRUB RETURN IN OS OUT LOG QUICK ON FROM TO FLAGS | ||||
%token RETURNRST RETURNICMP RETURNICMP6 PROTO INET INET6 ALL ANY ICMPTYPE | %token RETURNRST RETURNICMP RETURNICMP6 PROTO INET INET6 ALL ANY ICMPTYPE | ||||
%token ICMP6TYPE CODE KEEP MODULATE STATE PORT RDR NAT BINAT ARROW NODF | %token ICMP6TYPE CODE KEEP MODULATE STATE PORT RDR NAT BINAT ARROW NODF | ||||
%token MINTTL ERROR ALLOWOPTS FASTROUTE FILENAME ROUTETO DUPTO REPLYTO NO LABEL | %token MINTTL ERROR ALLOWOPTS FASTROUTE FILENAME ROUTETO DUPTO REPLYTO NO LABEL | ||||
%token NOROUTE URPFFAILED FRAGMENT USER GROUP MAXMSS MAXIMUM TTL TOS DROP TABLE | %token NOROUTE URPFFAILED FRAGMENT USER GROUP MAXMSS MAXIMUM TTL TOS DROP TABLE | ||||
%token REASSEMBLE FRAGDROP FRAGCROP ANCHOR NATANCHOR RDRANCHOR BINATANCHOR | %token REASSEMBLE FRAGDROP FRAGCROP ANCHOR NATANCHOR RDRANCHOR BINATANCHOR | ||||
%token SET OPTIMIZATION TIMEOUT LIMIT LOGINTERFACE BLOCKPOLICY RANDOMID | %token SET OPTIMIZATION TIMEOUT LIMIT LOGINTERFACE BLOCKPOLICY RANDOMID | ||||
%token REQUIREORDER SYNPROXY FINGERPRINTS NOSYNC DEBUG SKIP HOSTID | %token REQUIREORDER SYNPROXY FINGERPRINTS NOSYNC DEBUG SKIP HOSTID | ||||
%token ANTISPOOF FOR INCLUDE | %token ANTISPOOF FOR INCLUDE | ||||
%token BITMASK RANDOM SOURCEHASH ROUNDROBIN STATICPORT PROBABILITY | %token BITMASK RANDOM SOURCEHASH ROUNDROBIN STATICPORT PROBABILITY | ||||
%token ALTQ CBQ PRIQ HFSC FAIRQ BANDWIDTH TBRSIZE LINKSHARE REALTIME UPPERLIMIT | %token ALTQ CBQ CODEL PRIQ HFSC FAIRQ BANDWIDTH TBRSIZE LINKSHARE REALTIME | ||||
%token QUEUE PRIORITY QLIMIT HOGS BUCKETS RTABLE | %token UPPERLIMIT QUEUE PRIORITY QLIMIT HOGS BUCKETS RTABLE INTERVAL | ||||
%token LOAD RULESET_OPTIMIZATION | %token LOAD RULESET_OPTIMIZATION | ||||
%token STICKYADDRESS MAXSRCSTATES MAXSRCNODES SOURCETRACK GLOBAL RULE | %token STICKYADDRESS MAXSRCSTATES MAXSRCNODES SOURCETRACK GLOBAL RULE | ||||
%token MAXSRCCONN MAXSRCCONNRATE OVERLOAD FLUSH SLOPPY | %token MAXSRCCONN MAXSRCCONNRATE OVERLOAD FLUSH SLOPPY | ||||
%token TAGGED TAG IFBOUND FLOATING STATEPOLICY STATEDEFAULTS ROUTE SETTOS | %token TAGGED TAG IFBOUND FLOATING STATEPOLICY STATEDEFAULTS ROUTE SETTOS | ||||
%token DIVERTTO DIVERTREPLY | %token DIVERTTO DIVERTREPLY | ||||
%token <v.string> STRING | %token <v.string> STRING | ||||
%token <v.number> NUMBER | %token <v.number> NUMBER | ||||
%token <v.i> PORTBINARY | %token <v.i> PORTBINARY | ||||
Show All 32 Lines | |||||
%type <v.interface> antispoof_ifspc antispoof_iflst antispoof_if | %type <v.interface> antispoof_ifspc antispoof_iflst antispoof_if | ||||
%type <v.qassign> qname | %type <v.qassign> qname | ||||
%type <v.queue> qassign qassign_list qassign_item | %type <v.queue> qassign qassign_list qassign_item | ||||
%type <v.queue_options> scheduler | %type <v.queue_options> scheduler | ||||
%type <v.number> cbqflags_list cbqflags_item | %type <v.number> cbqflags_list cbqflags_item | ||||
%type <v.number> priqflags_list priqflags_item | %type <v.number> priqflags_list priqflags_item | ||||
%type <v.hfsc_opts> hfscopts_list hfscopts_item hfsc_opts | %type <v.hfsc_opts> hfscopts_list hfscopts_item hfsc_opts | ||||
%type <v.fairq_opts> fairqopts_list fairqopts_item fairq_opts | %type <v.fairq_opts> fairqopts_list fairqopts_item fairq_opts | ||||
%type <v.codel_opts> codelopts_list codelopts_item codel_opts | |||||
%type <v.queue_bwspec> bandwidth | %type <v.queue_bwspec> bandwidth | ||||
%type <v.filter_opts> filter_opts filter_opt filter_opts_l | %type <v.filter_opts> filter_opts filter_opt filter_opts_l | ||||
%type <v.antispoof_opts> antispoof_opts antispoof_opt antispoof_opts_l | %type <v.antispoof_opts> antispoof_opts antispoof_opt antispoof_opts_l | ||||
%type <v.queue_opts> queue_opts queue_opt queue_opts_l | %type <v.queue_opts> queue_opts queue_opt queue_opts_l | ||||
%type <v.scrub_opts> scrub_opts scrub_opt scrub_opts_l | %type <v.scrub_opts> scrub_opts scrub_opt scrub_opts_l | ||||
%type <v.table_opts> table_opts table_opt table_opts_l | %type <v.table_opts> table_opts table_opt table_opts_l | ||||
%type <v.pool_opts> pool_opts pool_opt pool_opts_l | %type <v.pool_opts> pool_opts pool_opt pool_opts_l | ||||
%type <v.tagged> tagged | %type <v.tagged> tagged | ||||
▲ Show 20 Lines • Show All 955 Lines • ▼ Show 20 Lines | altqif : ALTQ interface queue_opts QUEUE qassign { | ||||
memset(&a, 0, sizeof(a)); | memset(&a, 0, sizeof(a)); | ||||
if ($3.scheduler.qtype == ALTQT_NONE) { | if ($3.scheduler.qtype == ALTQT_NONE) { | ||||
yyerror("no scheduler specified!"); | yyerror("no scheduler specified!"); | ||||
YYERROR; | YYERROR; | ||||
} | } | ||||
a.scheduler = $3.scheduler.qtype; | a.scheduler = $3.scheduler.qtype; | ||||
a.qlimit = $3.qlimit; | a.qlimit = $3.qlimit; | ||||
a.tbrsize = $3.tbrsize; | a.tbrsize = $3.tbrsize; | ||||
if ($5 == NULL) { | if ($5 == NULL && $3.scheduler.qtype != ALTQT_CODEL) { | ||||
yyerror("no child queues specified"); | yyerror("no child queues specified"); | ||||
YYERROR; | YYERROR; | ||||
} | } | ||||
if (expand_altq(&a, $2, $5, $3.queue_bwspec, | if (expand_altq(&a, $2, $5, $3.queue_bwspec, | ||||
&$3.scheduler)) | &$3.scheduler)) | ||||
YYERROR; | YYERROR; | ||||
} | } | ||||
; | ; | ||||
▲ Show 20 Lines • Show All 185 Lines • ▼ Show 20 Lines | | FAIRQ { | ||||
$$.qtype = ALTQT_FAIRQ; | $$.qtype = ALTQT_FAIRQ; | ||||
bzero(&$$.data.fairq_opts, | bzero(&$$.data.fairq_opts, | ||||
sizeof(struct node_fairq_opts)); | sizeof(struct node_fairq_opts)); | ||||
} | } | ||||
| FAIRQ '(' fairq_opts ')' { | | FAIRQ '(' fairq_opts ')' { | ||||
$$.qtype = ALTQT_FAIRQ; | $$.qtype = ALTQT_FAIRQ; | ||||
$$.data.fairq_opts = $3; | $$.data.fairq_opts = $3; | ||||
} | } | ||||
| CODEL { | |||||
$$.qtype = ALTQT_CODEL; | |||||
bzero(&$$.data.codel_opts, | |||||
sizeof(struct codel_opts)); | |||||
} | |||||
| CODEL '(' codel_opts ')' { | |||||
$$.qtype = ALTQT_CODEL; | |||||
$$.data.codel_opts = $3; | |||||
} | |||||
; | ; | ||||
cbqflags_list : cbqflags_item { $$ |= $1; } | cbqflags_list : cbqflags_item { $$ |= $1; } | ||||
| cbqflags_list comma cbqflags_item { $$ |= $3; } | | cbqflags_list comma cbqflags_item { $$ |= $3; } | ||||
; | ; | ||||
cbqflags_item : STRING { | cbqflags_item : STRING { | ||||
if (!strcmp($1, "default")) | if (!strcmp($1, "default")) | ||||
$$ = CBQCLF_DEFCLASS; | $$ = CBQCLF_DEFCLASS; | ||||
else if (!strcmp($1, "borrow")) | else if (!strcmp($1, "borrow")) | ||||
$$ = CBQCLF_BORROW; | $$ = CBQCLF_BORROW; | ||||
else if (!strcmp($1, "red")) | else if (!strcmp($1, "red")) | ||||
$$ = CBQCLF_RED; | $$ = CBQCLF_RED; | ||||
else if (!strcmp($1, "ecn")) | else if (!strcmp($1, "ecn")) | ||||
$$ = CBQCLF_RED|CBQCLF_ECN; | $$ = CBQCLF_RED|CBQCLF_ECN; | ||||
else if (!strcmp($1, "rio")) | else if (!strcmp($1, "rio")) | ||||
$$ = CBQCLF_RIO; | $$ = CBQCLF_RIO; | ||||
else if (!strcmp($1, "codel")) | |||||
$$ = CBQCLF_CODEL; | |||||
else { | else { | ||||
yyerror("unknown cbq flag \"%s\"", $1); | yyerror("unknown cbq flag \"%s\"", $1); | ||||
free($1); | free($1); | ||||
YYERROR; | YYERROR; | ||||
} | } | ||||
free($1); | free($1); | ||||
} | } | ||||
; | ; | ||||
priqflags_list : priqflags_item { $$ |= $1; } | priqflags_list : priqflags_item { $$ |= $1; } | ||||
| priqflags_list comma priqflags_item { $$ |= $3; } | | priqflags_list comma priqflags_item { $$ |= $3; } | ||||
; | ; | ||||
priqflags_item : STRING { | priqflags_item : STRING { | ||||
if (!strcmp($1, "default")) | if (!strcmp($1, "default")) | ||||
$$ = PRCF_DEFAULTCLASS; | $$ = PRCF_DEFAULTCLASS; | ||||
else if (!strcmp($1, "red")) | else if (!strcmp($1, "red")) | ||||
$$ = PRCF_RED; | $$ = PRCF_RED; | ||||
else if (!strcmp($1, "ecn")) | else if (!strcmp($1, "ecn")) | ||||
$$ = PRCF_RED|PRCF_ECN; | $$ = PRCF_RED|PRCF_ECN; | ||||
else if (!strcmp($1, "rio")) | else if (!strcmp($1, "rio")) | ||||
$$ = PRCF_RIO; | $$ = PRCF_RIO; | ||||
else if (!strcmp($1, "codel")) | |||||
$$ = PRCF_CODEL; | |||||
else { | else { | ||||
yyerror("unknown priq flag \"%s\"", $1); | yyerror("unknown priq flag \"%s\"", $1); | ||||
free($1); | free($1); | ||||
YYERROR; | YYERROR; | ||||
} | } | ||||
free($1); | free($1); | ||||
} | } | ||||
; | ; | ||||
▲ Show 20 Lines • Show All 84 Lines • ▼ Show 20 Lines | | STRING { | ||||
if (!strcmp($1, "default")) | if (!strcmp($1, "default")) | ||||
hfsc_opts.flags |= HFCF_DEFAULTCLASS; | hfsc_opts.flags |= HFCF_DEFAULTCLASS; | ||||
else if (!strcmp($1, "red")) | else if (!strcmp($1, "red")) | ||||
hfsc_opts.flags |= HFCF_RED; | hfsc_opts.flags |= HFCF_RED; | ||||
else if (!strcmp($1, "ecn")) | else if (!strcmp($1, "ecn")) | ||||
hfsc_opts.flags |= HFCF_RED|HFCF_ECN; | hfsc_opts.flags |= HFCF_RED|HFCF_ECN; | ||||
else if (!strcmp($1, "rio")) | else if (!strcmp($1, "rio")) | ||||
hfsc_opts.flags |= HFCF_RIO; | hfsc_opts.flags |= HFCF_RIO; | ||||
else if (!strcmp($1, "codel")) | |||||
hfsc_opts.flags |= HFCF_CODEL; | |||||
else { | else { | ||||
yyerror("unknown hfsc flag \"%s\"", $1); | yyerror("unknown hfsc flag \"%s\"", $1); | ||||
free($1); | free($1); | ||||
YYERROR; | YYERROR; | ||||
} | } | ||||
free($1); | free($1); | ||||
} | } | ||||
; | ; | ||||
Show All 39 Lines | | STRING { | ||||
if (!strcmp($1, "default")) | if (!strcmp($1, "default")) | ||||
fairq_opts.flags |= FARF_DEFAULTCLASS; | fairq_opts.flags |= FARF_DEFAULTCLASS; | ||||
else if (!strcmp($1, "red")) | else if (!strcmp($1, "red")) | ||||
fairq_opts.flags |= FARF_RED; | fairq_opts.flags |= FARF_RED; | ||||
else if (!strcmp($1, "ecn")) | else if (!strcmp($1, "ecn")) | ||||
fairq_opts.flags |= FARF_RED|FARF_ECN; | fairq_opts.flags |= FARF_RED|FARF_ECN; | ||||
else if (!strcmp($1, "rio")) | else if (!strcmp($1, "rio")) | ||||
fairq_opts.flags |= FARF_RIO; | fairq_opts.flags |= FARF_RIO; | ||||
else if (!strcmp($1, "codel")) | |||||
fairq_opts.flags |= FARF_CODEL; | |||||
else { | else { | ||||
yyerror("unknown fairq flag \"%s\"", $1); | yyerror("unknown fairq flag \"%s\"", $1); | ||||
free($1); | free($1); | ||||
YYERROR; | YYERROR; | ||||
} | } | ||||
free($1); | free($1); | ||||
} | } | ||||
; | ; | ||||
codel_opts : { | |||||
bzero(&codel_opts, | |||||
sizeof(struct codel_opts)); | |||||
} | |||||
codelopts_list { | |||||
$$ = codel_opts; | |||||
} | |||||
rpauloUnsubmitted Not Done Inline ActionsWrong indentation? rpaulo: Wrong indentation? | |||||
Not Done Inline ActionsYeah, it's weird but this also follows the indentation used in the rest of file (i.e. matches the other cases). loos: Yeah, it's weird but this also follows the indentation used in the rest of file (i.e. matches… | |||||
; | |||||
codelopts_list : codelopts_item | |||||
| codelopts_list comma codelopts_item | |||||
; | |||||
codelopts_item : QLIMIT number { | |||||
if (codel_opts.target) { | |||||
yyerror("target already specified"); | |||||
YYERROR; | |||||
} | |||||
codel_opts.target = $2; | |||||
} | |||||
| INTERVAL number { | |||||
if (codel_opts.interval) { | |||||
yyerror("interval already specified"); | |||||
YYERROR; | |||||
} | |||||
codel_opts.interval = $2; | |||||
} | |||||
| STRING { | |||||
if (!strcmp($1, "ecn")) | |||||
codel_opts.ecn = 1; | |||||
else { | |||||
yyerror("unknown codel option \"%s\"", $1); | |||||
free($1); | |||||
YYERROR; | |||||
} | |||||
free($1); | |||||
} | |||||
; | |||||
qassign : /* empty */ { $$ = NULL; } | qassign : /* empty */ { $$ = NULL; } | ||||
| qassign_item { $$ = $1; } | | qassign_item { $$ = $1; } | ||||
| '{' optnl qassign_list '}' { $$ = $3; } | | '{' optnl qassign_list '}' { $$ = $3; } | ||||
; | ; | ||||
qassign_list : qassign_item optnl { $$ = $1; } | qassign_list : qassign_item optnl { $$ = $1; } | ||||
| qassign_list comma qassign_item optnl { | | qassign_list comma qassign_item optnl { | ||||
$1->tail->next = $3; | $1->tail->next = $3; | ||||
▲ Show 20 Lines • Show All 2,909 Lines • ▼ Show 20 Lines | expand_altq(struct pf_altq *a, struct node_if *interfaces, | ||||
struct pf_altq pa, pb; | struct pf_altq pa, pb; | ||||
char qname[PF_QNAME_SIZE]; | char qname[PF_QNAME_SIZE]; | ||||
struct node_queue *n; | struct node_queue *n; | ||||
struct node_queue_bw bw; | struct node_queue_bw bw; | ||||
int errs = 0; | int errs = 0; | ||||
if ((pf->loadopt & PFCTL_FLAG_ALTQ) == 0) { | if ((pf->loadopt & PFCTL_FLAG_ALTQ) == 0) { | ||||
FREE_LIST(struct node_if, interfaces); | FREE_LIST(struct node_if, interfaces); | ||||
if (nqueues) | |||||
FREE_LIST(struct node_queue, nqueues); | FREE_LIST(struct node_queue, nqueues); | ||||
return (0); | return (0); | ||||
} | } | ||||
LOOP_THROUGH(struct node_if, interface, interfaces, | LOOP_THROUGH(struct node_if, interface, interfaces, | ||||
memcpy(&pa, a, sizeof(struct pf_altq)); | memcpy(&pa, a, sizeof(struct pf_altq)); | ||||
if (strlcpy(pa.ifname, interface->ifname, | if (strlcpy(pa.ifname, interface->ifname, | ||||
sizeof(pa.ifname)) >= sizeof(pa.ifname)) | sizeof(pa.ifname)) >= sizeof(pa.ifname)) | ||||
errx(1, "expand_altq: strlcpy"); | errx(1, "expand_altq: strlcpy"); | ||||
▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | if (interface->not) { | ||||
else { | else { | ||||
queues->tail->next = n; | queues->tail->next = n; | ||||
queues->tail = n; | queues->tail = n; | ||||
} | } | ||||
); | ); | ||||
} | } | ||||
); | ); | ||||
FREE_LIST(struct node_if, interfaces); | FREE_LIST(struct node_if, interfaces); | ||||
if (nqueues) | |||||
FREE_LIST(struct node_queue, nqueues); | FREE_LIST(struct node_queue, nqueues); | ||||
return (errs); | return (errs); | ||||
} | } | ||||
int | int | ||||
expand_queue(struct pf_altq *a, struct node_if *interfaces, | expand_queue(struct pf_altq *a, struct node_if *interfaces, | ||||
struct node_queue *nqueues, struct node_queue_bw bwspec, | struct node_queue *nqueues, struct node_queue_bw bwspec, | ||||
struct node_queue_opt *opts) | struct node_queue_opt *opts) | ||||
▲ Show 20 Lines • Show All 389 Lines • ▼ Show 20 Lines | static const struct keywords keywords[] = { | ||||
{ "binat", BINAT}, | { "binat", BINAT}, | ||||
{ "binat-anchor", BINATANCHOR}, | { "binat-anchor", BINATANCHOR}, | ||||
{ "bitmask", BITMASK}, | { "bitmask", BITMASK}, | ||||
{ "block", BLOCK}, | { "block", BLOCK}, | ||||
{ "block-policy", BLOCKPOLICY}, | { "block-policy", BLOCKPOLICY}, | ||||
{ "buckets", BUCKETS}, | { "buckets", BUCKETS}, | ||||
{ "cbq", CBQ}, | { "cbq", CBQ}, | ||||
{ "code", CODE}, | { "code", CODE}, | ||||
{ "codelq", CODEL}, | |||||
{ "crop", FRAGCROP}, | { "crop", FRAGCROP}, | ||||
{ "debug", DEBUG}, | { "debug", DEBUG}, | ||||
{ "divert-reply", DIVERTREPLY}, | { "divert-reply", DIVERTREPLY}, | ||||
{ "divert-to", DIVERTTO}, | { "divert-to", DIVERTTO}, | ||||
{ "drop", DROP}, | { "drop", DROP}, | ||||
{ "drop-ovl", FRAGDROP}, | { "drop-ovl", FRAGDROP}, | ||||
{ "dup-to", DUPTO}, | { "dup-to", DUPTO}, | ||||
{ "fairq", FAIRQ}, | { "fairq", FAIRQ}, | ||||
Show All 13 Lines | static const struct keywords keywords[] = { | ||||
{ "hostid", HOSTID}, | { "hostid", HOSTID}, | ||||
{ "icmp-type", ICMPTYPE}, | { "icmp-type", ICMPTYPE}, | ||||
{ "icmp6-type", ICMP6TYPE}, | { "icmp6-type", ICMP6TYPE}, | ||||
{ "if-bound", IFBOUND}, | { "if-bound", IFBOUND}, | ||||
{ "in", IN}, | { "in", IN}, | ||||
{ "include", INCLUDE}, | { "include", INCLUDE}, | ||||
{ "inet", INET}, | { "inet", INET}, | ||||
{ "inet6", INET6}, | { "inet6", INET6}, | ||||
{ "interval", INTERVAL}, | |||||
{ "keep", KEEP}, | { "keep", KEEP}, | ||||
{ "label", LABEL}, | { "label", LABEL}, | ||||
{ "limit", LIMIT}, | { "limit", LIMIT}, | ||||
{ "linkshare", LINKSHARE}, | { "linkshare", LINKSHARE}, | ||||
{ "load", LOAD}, | { "load", LOAD}, | ||||
{ "log", LOG}, | { "log", LOG}, | ||||
{ "loginterface", LOGINTERFACE}, | { "loginterface", LOGINTERFACE}, | ||||
{ "max", MAXIMUM}, | { "max", MAXIMUM}, | ||||
▲ Show 20 Lines • Show All 773 Lines • Show Last 20 Lines |
node_codel_opts?