annotate src/core/ngx_radix_tree.h @ 5048:2f0862333985 stable-1.2

Merge of r4993, r4994, r4997, r5000: geo ipv6 support. *) Geo: IPv6 support. The "ranges" mode is still limited to IPv4 only. *) Geo: properly initialize ngx_cidr_t when dealing with "default". *) Geo: made "default" affect both IPv4 and IPv6 when using prefixes. Previously, "default" was equivalent to specifying 0.0.0.0/0, now it's equivalent to specifying both 0.0.0.0/0 and ::/0 (if support for IPv6 is enabled) with the same value. *) Geo: improved code readability.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 11 Feb 2013 12:31:43 +0000
parents d620f497c50f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 342
diff changeset
1
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 342
diff changeset
2 /*
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
3 * Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 489
diff changeset
4 * Copyright (C) Nginx, Inc.
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 342
diff changeset
5 */
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 342
diff changeset
6
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 342
diff changeset
7
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #ifndef _NGX_RADIX_TREE_H_INCLUDED_
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #define _NGX_RADIX_TREE_H_INCLUDED_
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12 #include <ngx_config.h>
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13 #include <ngx_core.h>
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
16 #define NGX_RADIX_NO_VALUE (uintptr_t) -1
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
17
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
18 typedef struct ngx_radix_node_s ngx_radix_node_t;
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
20 struct ngx_radix_node_s {
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21 ngx_radix_node_t *right;
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
22 ngx_radix_node_t *left;
342
0ee0642af5f1 nginx-0.0.3-2004-05-26-23:33:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 341
diff changeset
23 ngx_radix_node_t *parent;
0ee0642af5f1 nginx-0.0.3-2004-05-26-23:33:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 341
diff changeset
24 uintptr_t value;
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
25 };
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
26
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
27
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
28 typedef struct {
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29 ngx_radix_node_t *root;
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
30 ngx_pool_t *pool;
341
41e552841296 nginx-0.0.3-2004-05-26-19:30:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 340
diff changeset
31 ngx_radix_node_t *free;
41e552841296 nginx-0.0.3-2004-05-26-19:30:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 340
diff changeset
32 char *start;
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
33 size_t size;
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
34 } ngx_radix_tree_t;
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
35
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
36
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
37 ngx_radix_tree_t *ngx_radix_tree_create(ngx_pool_t *pool,
489
45a460f82aec nginx-0.1.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
38 ngx_int_t preallocate);
5048
2f0862333985 Merge of r4993, r4994, r4997, r5000: geo ipv6 support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
39
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
40 ngx_int_t ngx_radix32tree_insert(ngx_radix_tree_t *tree,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
41 uint32_t key, uint32_t mask, uintptr_t value);
342
0ee0642af5f1 nginx-0.0.3-2004-05-26-23:33:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 341
diff changeset
42 ngx_int_t ngx_radix32tree_delete(ngx_radix_tree_t *tree,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
43 uint32_t key, uint32_t mask);
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
44 uintptr_t ngx_radix32tree_find(ngx_radix_tree_t *tree, uint32_t key);
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
45
5048
2f0862333985 Merge of r4993, r4994, r4997, r5000: geo ipv6 support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
46 #if (NGX_HAVE_INET6)
2f0862333985 Merge of r4993, r4994, r4997, r5000: geo ipv6 support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
47 ngx_int_t ngx_radix128tree_insert(ngx_radix_tree_t *tree,
2f0862333985 Merge of r4993, r4994, r4997, r5000: geo ipv6 support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
48 u_char *key, u_char *mask, uintptr_t value);
2f0862333985 Merge of r4993, r4994, r4997, r5000: geo ipv6 support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
49 ngx_int_t ngx_radix128tree_delete(ngx_radix_tree_t *tree,
2f0862333985 Merge of r4993, r4994, r4997, r5000: geo ipv6 support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
50 u_char *key, u_char *mask);
2f0862333985 Merge of r4993, r4994, r4997, r5000: geo ipv6 support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
51 uintptr_t ngx_radix128tree_find(ngx_radix_tree_t *tree, u_char *key);
2f0862333985 Merge of r4993, r4994, r4997, r5000: geo ipv6 support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
52 #endif
2f0862333985 Merge of r4993, r4994, r4997, r5000: geo ipv6 support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
53
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
54
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
55 #endif /* _NGX_RADIX_TREE_H_INCLUDED_ */