summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/pf/pf.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/inet/pf/pf.c')
-rw-r--r--usr/src/uts/common/inet/pf/pf.c26
1 files changed, 11 insertions, 15 deletions
diff --git a/usr/src/uts/common/inet/pf/pf.c b/usr/src/uts/common/inet/pf/pf.c
index 9ed6342783..be8ce11e97 100644
--- a/usr/src/uts/common/inet/pf/pf.c
+++ b/usr/src/uts/common/inet/pf/pf.c
@@ -307,20 +307,10 @@ struct pf_pool_limit pf_pool_limits[PF_LIMIT_MAX] = {
} while (0)
static __inline int pf_src_compare(struct pf_src_node *, struct pf_src_node *);
-static __inline int pf_state_compare_key(struct pf_state_key *,
- struct pf_state_key *);
-static __inline int pf_state_compare_id(struct pf_state *,
- struct pf_state *);
struct pf_src_tree tree_src_tracking;
-struct pf_state_tree_id tree_id;
-struct pf_state_queue state_list;
-
RB_GENERATE(pf_src_tree, pf_src_node, entry, pf_src_compare);
-RB_GENERATE(pf_state_tree, pf_state_key, entry, pf_state_compare_key);
-RB_GENERATE(pf_state_tree_id, pf_state,
- entry_id, pf_state_compare_id);
__inline int
pf_addr_compare(struct pf_addr *a, struct pf_addr *b, sa_family_t af)
@@ -649,9 +639,11 @@ pf_state_rm_src_node(struct pf_state *s, struct pf_src_node *sn)
/* state table stuff */
-static __inline int
-pf_state_compare_key(struct pf_state_key *a, struct pf_state_key *b)
+int
+pf_state_compare_key(const void *aa, const void *bb)
{
+ pf_state_key_t *a = aa;
+ pf_state_key_t *b = bb;
int diff;
if ((diff = a->proto - b->proto) != 0)
@@ -671,9 +663,12 @@ pf_state_compare_key(struct pf_state_key *a, struct pf_state_key *b)
return (0);
}
-static __inline int
-pf_state_compare_id(struct pf_state *a, struct pf_state *b)
+int
+pf_state_compare_id(const void *aa, const void *bb)
{
+ pf_state_t *a = aa;
+ pf_state_t *b = bb;
+
if (a->id > b->id)
return (1);
if (a->id < b->id)
@@ -978,6 +973,7 @@ pf_state_insert(pf_netstack_t *pfns, struct pfi_kif *kif,
pf_detach_state(s);
return (-1);
}
+ list_insert_tail(&pfns->pfns_state_list, s);
TAILQ_INSERT_TAIL(&state_list, s, entry_list);
pfns->pfns_status.fcounters[FCNT_STATE_INSERT]++;
pfns->pfns_status.states++;
@@ -993,7 +989,7 @@ pf_find_state_byid(pf_netstack_t *pfns, struct pf_state_cmp *key)
{
pfns->pfns_status.fcounters[FCNT_STATE_SEARCH]++;
- return (RB_FIND(pf_state_tree_id, &tree_id, (struct pf_state *)key));
+ return (avl_find(&pfns->pfns_tree_id, key));
}
int