Lines Matching refs:superblock

58  * A container that lets us sort a superblock to optimize the skip step jumps
68 * A superblock is a block of adjacent rules of similar action. If there
69 * are five PASS rules in a row, they all become members of a superblock.
70 * Once we have a superblock, we are free to re-order any rules within it
74 struct superblock {
76 TAILQ_ENTRY(superblock) sb_entry;
77 struct superblock *sb_profiled_block;
80 TAILQ_HEAD(superblocks, superblock);
88 BREAK, /* the field may not differ between rules in a superblock */
108 * superblock. Thus it will not be optimized. It also prevents the
121 * These fields must be the same between all rules in the same superblock.
214 int block_feedback(struct pfctl *, struct superblock *);
215 int combine_rules(struct pfctl *, struct superblock *);
222 int optimize_superblock(struct pfctl *, struct superblock *);
224 void remove_from_skipsteps(struct skiplist *, struct superblock *,
226 int remove_identical_rules(struct pfctl *, struct superblock *);
227 int reorder_rules(struct pfctl *, struct superblock *, int);
229 void skip_append(struct superblock *, int, struct pf_skip_step *,
241 int superblock_inclusive(struct superblock *, struct pf_opt_rule *);
242 void superblock_free(struct pfctl *, struct superblock *);
267 struct superblock *block;
364 * Go ahead and optimize a superblock
367 optimize_superblock(struct pfctl *pf, struct superblock *block)
393 * XXX keep last skiplist of last superblock to influence this
394 * superblock. '5 inet6 log' should make '3 inet6' come before '4
395 * inet' in the next superblock.
434 * superblock might have been split into multiple superblocks.
448 remove_identical_rules(struct pfctl *pf, struct superblock *block)
490 combine_rules(struct pfctl *pf, struct superblock *block)
640 reorder_rules(struct pfctl *pf, struct superblock *block, int depth)
642 struct superblock *newblock;
676 * all of the rules in the superblock and those fields which differ
677 * between every rule in the superblock.
697 /* Ugh. There is NO commonality in the superblock on which
704 * Now we're going to empty the superblock rule list and re-create
758 * superblock and pass it back into the optimizer.
770 DEBUG("(%d) splitting off %d rules from superblock @ #%d",
814 block_feedback(struct pfctl *pf, struct superblock *block)
823 * Walk through all of the profiled superblock's rules and copy
846 * Now we pull all of the rules off the superblock and re-insert them
884 struct superblock *block, *blockcur;
990 skip_append(struct superblock *superblock, int skipnum,
1001 TAILQ_REMOVE(&superblock->sb_skipsteps[skipnum],
1012 remove_from_skipsteps(struct skiplist *head, struct superblock *block,
1340 struct superblock *block = NULL;
1407 * Can a rule be included inside a superblock
1410 superblock_inclusive(struct superblock *block, struct pf_opt_rule *por)
1441 * Ergo interface groups become a defacto superblock break :-(
1464 DEBUG("superblock break @ %d due to %s",
1478 DEBUG("superblock break @ %d on %s+%xh",
1484 DEBUG("superblock break @ %d on field @ %d",
1630 superblock_free(struct pfctl *pf, struct superblock *block)