Update and clean Tomato RAF files
[tomato.git] / release / src / router / nginx / src / core / ngx_radix_tree.h
blob4fe06e0147484a1357ef5f409c2140df8d1e6e42
2 /*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
5 */
8 #ifndef _NGX_RADIX_TREE_H_INCLUDED_
9 #define _NGX_RADIX_TREE_H_INCLUDED_
12 #include <ngx_config.h>
13 #include <ngx_core.h>
16 #define NGX_RADIX_NO_VALUE (uintptr_t) -1
18 typedef struct ngx_radix_node_s ngx_radix_node_t;
20 struct ngx_radix_node_s {
21 ngx_radix_node_t *right;
22 ngx_radix_node_t *left;
23 ngx_radix_node_t *parent;
24 uintptr_t value;
28 typedef struct {
29 ngx_radix_node_t *root;
30 ngx_pool_t *pool;
31 ngx_radix_node_t *free;
32 char *start;
33 size_t size;
34 } ngx_radix_tree_t;
37 ngx_radix_tree_t *ngx_radix_tree_create(ngx_pool_t *pool,
38 ngx_int_t preallocate);
40 ngx_int_t ngx_radix32tree_insert(ngx_radix_tree_t *tree,
41 uint32_t key, uint32_t mask, uintptr_t value);
42 ngx_int_t ngx_radix32tree_delete(ngx_radix_tree_t *tree,
43 uint32_t key, uint32_t mask);
44 uintptr_t ngx_radix32tree_find(ngx_radix_tree_t *tree, uint32_t key);
46 #if (NGX_HAVE_INET6)
47 ngx_int_t ngx_radix128tree_insert(ngx_radix_tree_t *tree,
48 u_char *key, u_char *mask, uintptr_t value);
49 ngx_int_t ngx_radix128tree_delete(ngx_radix_tree_t *tree,
50 u_char *key, u_char *mask);
51 uintptr_t ngx_radix128tree_find(ngx_radix_tree_t *tree, u_char *key);
52 #endif
55 #endif /* _NGX_RADIX_TREE_H_INCLUDED_ */