[ SYSTEM ]: Linux srv.persadacompanies.com 4.18.0-553.56.1.el8_10.x86_64 #1 SMP Tue Jun 10 05:00:59 EDT 2025 x86_64
[ SERVER ]: Apache | PHP: 8.4.19
[ USER ]: persadamedika | IP: 45.64.1.108
GEFORCE FILE MANAGER
/
usr
/
include
/
bind9
/
isc
/
UPLOAD:
NAME
SIZE
QUICK PERMS
ACTIONS
📄 aes.h
1,080 B
SET
[ EDIT ]
|
[ DEL ]
📄 app.h
10,478 B
SET
[ EDIT ]
|
[ DEL ]
📄 assertions.h
2,907 B
SET
[ EDIT ]
|
[ DEL ]
📄 atomic.h
4,168 B
SET
[ EDIT ]
|
[ DEL ]
📄 backtrace.h
3,891 B
SET
[ EDIT ]
|
[ DEL ]
📄 base32.h
4,453 B
SET
[ EDIT ]
|
[ DEL ]
📄 base64.h
2,866 B
SET
[ EDIT ]
|
[ DEL ]
📄 bind9.h
830 B
SET
[ EDIT ]
|
[ DEL ]
📄 boolean.h
594 B
SET
[ EDIT ]
|
[ DEL ]
📄 buffer.h
26,268 B
SET
[ EDIT ]
|
[ DEL ]
📄 bufferlist.h
1,452 B
SET
[ EDIT ]
|
[ DEL ]
📄 cmocka.h
1,383 B
SET
[ EDIT ]
|
[ DEL ]
📄 commandline.h
1,713 B
SET
[ EDIT ]
|
[ DEL ]
📄 condition.h
1,478 B
SET
[ EDIT ]
|
[ DEL ]
📄 counter.h
1,926 B
SET
[ EDIT ]
|
[ DEL ]
📄 crc64.h
998 B
SET
[ EDIT ]
|
[ DEL ]
📄 deprecated.h
623 B
SET
[ EDIT ]
|
[ DEL ]
📄 dir.h
1,598 B
SET
[ EDIT ]
|
[ DEL ]
📄 endian.h
4,778 B
SET
[ EDIT ]
|
[ DEL ]
📄 entropy.h
10,373 B
SET
[ EDIT ]
|
[ DEL ]
📄 errno.h
659 B
SET
[ EDIT ]
|
[ DEL ]
📄 errno2result.h
902 B
SET
[ EDIT ]
|
[ DEL ]
📄 error.h
1,430 B
SET
[ EDIT ]
|
[ DEL ]
📄 event.h
3,053 B
SET
[ EDIT ]
|
[ DEL ]
📄 eventclass.h
1,381 B
SET
[ EDIT ]
|
[ DEL ]
📄 file.h
11,667 B
SET
[ EDIT ]
|
[ DEL ]
📄 formatcheck.h
893 B
SET
[ EDIT ]
|
[ DEL ]
📄 fsaccess.h
7,442 B
SET
[ EDIT ]
|
[ DEL ]
📄 hash.h
7,662 B
SET
[ EDIT ]
|
[ DEL ]
📄 heap.h
5,264 B
SET
[ EDIT ]
|
[ DEL ]
📄 hex.h
2,806 B
SET
[ EDIT ]
|
[ DEL ]
📄 hmacmd5.h
1,787 B
SET
[ EDIT ]
|
[ DEL ]
📄 hmacsha.h
4,511 B
SET
[ EDIT ]
|
[ DEL ]
📄 ht.h
4,396 B
SET
[ EDIT ]
|
[ DEL ]
📄 httpd.h
2,318 B
SET
[ EDIT ]
|
[ DEL ]
📄 int.h
1,088 B
SET
[ EDIT ]
|
[ DEL ]
📄 interfaceiter.h
3,120 B
SET
[ EDIT ]
|
[ DEL ]
📄 iterated_hash.h
1,046 B
SET
[ EDIT ]
|
[ DEL ]
📄 json.h
1,459 B
SET
[ EDIT ]
|
[ DEL ]
📄 keyboard.h
989 B
SET
[ EDIT ]
|
[ DEL ]
📄 lang.h
637 B
SET
[ EDIT ]
|
[ DEL ]
📄 lex.h
9,771 B
SET
[ EDIT ]
|
[ DEL ]
📄 lfsr.h
2,958 B
SET
[ EDIT ]
|
[ DEL ]
📄 lib.h
1,068 B
SET
[ EDIT ]
|
[ DEL ]
📄 likely.h
818 B
SET
[ EDIT ]
|
[ DEL ]
📄 list.h
5,751 B
SET
[ EDIT ]
|
[ DEL ]
📄 log.h
28,734 B
SET
[ EDIT ]
|
[ DEL ]
📄 magic.h
994 B
SET
[ EDIT ]
|
[ DEL ]
📄 md5.h
2,380 B
SET
[ EDIT ]
|
[ DEL ]
📄 mem.h
21,110 B
SET
[ EDIT ]
|
[ DEL ]
📄 meminfo.h
710 B
SET
[ EDIT ]
|
[ DEL ]
📄 msgcat.h
2,726 B
SET
[ EDIT ]
|
[ DEL ]
📄 msgs.h
8,422 B
SET
[ EDIT ]
|
[ DEL ]
📄 mutex.h
3,524 B
SET
[ EDIT ]
|
[ DEL ]
📄 mutexblock.h
1,375 B
SET
[ EDIT ]
|
[ DEL ]
📄 net.h
10,534 B
SET
[ EDIT ]
|
[ DEL ]
📄 netaddr.h
4,590 B
SET
[ EDIT ]
|
[ DEL ]
📄 netdb.h
863 B
SET
[ EDIT ]
|
[ DEL ]
📄 netscope.h
967 B
SET
[ EDIT ]
|
[ DEL ]
📄 offset.h
700 B
SET
[ EDIT ]
|
[ DEL ]
📄 once.h
983 B
SET
[ EDIT ]
|
[ DEL ]
📄 ondestroy.h
2,799 B
SET
[ EDIT ]
|
[ DEL ]
📄 os.h
671 B
SET
[ EDIT ]
|
[ DEL ]
📄 parseint.h
1,542 B
SET
[ EDIT ]
|
[ DEL ]
📄 platform.h
9,717 B
SET
[ EDIT ]
|
[ DEL ]
📄 pool.h
3,502 B
SET
[ EDIT ]
|
[ DEL ]
📄 portset.h
3,295 B
SET
[ EDIT ]
|
[ DEL ]
📄 print.h
2,475 B
SET
[ EDIT ]
|
[ DEL ]
📄 queue.h
5,204 B
SET
[ EDIT ]
|
[ DEL ]
📄 quota.h
2,440 B
SET
[ EDIT ]
|
[ DEL ]
📄 radix.h
6,491 B
SET
[ EDIT ]
|
[ DEL ]
📄 random.h
3,582 B
SET
[ EDIT ]
|
[ DEL ]
📄 ratelimiter.h
3,497 B
SET
[ EDIT ]
|
[ DEL ]
📄 refcount.h
8,193 B
SET
[ EDIT ]
|
[ DEL ]
📄 regex.h
767 B
SET
[ EDIT ]
|
[ DEL ]
📄 region.h
2,034 B
SET
[ EDIT ]
|
[ DEL ]
📄 resource.h
2,862 B
SET
[ EDIT ]
|
[ DEL ]
📄 result.h
4,982 B
SET
[ EDIT ]
|
[ DEL ]
📄 resultclass.h
1,599 B
SET
[ EDIT ]
|
[ DEL ]
📄 rwlock.h
3,807 B
SET
[ EDIT ]
|
[ DEL ]
📄 safe.h
1,352 B
SET
[ EDIT ]
|
[ DEL ]
📄 serial.h
1,368 B
SET
[ EDIT ]
|
[ DEL ]
📄 sha1.h
1,556 B
SET
[ EDIT ]
|
[ DEL ]
📄 sha2.h
5,733 B
SET
[ EDIT ]
|
[ DEL ]
📄 siphash.h
734 B
SET
[ EDIT ]
|
[ DEL ]
📄 sockaddr.h
6,039 B
SET
[ EDIT ]
|
[ DEL ]
📄 socket.h
36,655 B
SET
[ EDIT ]
|
[ DEL ]
📄 stat.h
806 B
SET
[ EDIT ]
|
[ DEL ]
📄 stats.h
3,709 B
SET
[ EDIT ]
|
[ DEL ]
📄 stdatomic.h
5,250 B
SET
[ EDIT ]
|
[ DEL ]
📄 stdio.h
1,787 B
SET
[ EDIT ]
|
[ DEL ]
📄 stdlib.h
704 B
SET
[ EDIT ]
|
[ DEL ]
📄 stdtime.h
1,065 B
SET
[ EDIT ]
|
[ DEL ]
📄 strerror.h
777 B
SET
[ EDIT ]
|
[ DEL ]
📄 string.h
6,019 B
SET
[ EDIT ]
|
[ DEL ]
📄 symtab.h
4,326 B
SET
[ EDIT ]
|
[ DEL ]
📄 syslog.h
844 B
SET
[ EDIT ]
|
[ DEL ]
📄 task.h
21,544 B
SET
[ EDIT ]
|
[ DEL ]
📄 taskpool.h
3,709 B
SET
[ EDIT ]
|
[ DEL ]
📄 thread.h
1,506 B
SET
[ EDIT ]
|
[ DEL ]
📄 time.h
8,876 B
SET
[ EDIT ]
|
[ DEL ]
📄 timer.h
10,795 B
SET
[ EDIT ]
|
[ DEL ]
📄 tm.h
895 B
SET
[ EDIT ]
|
[ DEL ]
📄 types.h
5,780 B
SET
[ EDIT ]
|
[ DEL ]
📄 utf8.h
928 B
SET
[ EDIT ]
|
[ DEL ]
📄 util.h
10,537 B
SET
[ EDIT ]
|
[ DEL ]
📄 version.h
689 B
SET
[ EDIT ]
|
[ DEL ]
📄 xml.h
1,094 B
SET
[ EDIT ]
|
[ DEL ]
DELETE SELECTED
[ CLOSE ]
EDIT: radix.h
/* * Copyright (C) Internet Systems Consortium, Inc. ("ISC") * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, you can obtain one at https://mozilla.org/MPL/2.0/. * * See the COPYRIGHT file distributed with this work for additional * information regarding copyright ownership. */ #include <stdbool.h> #include <isc/magic.h> #include <isc/types.h> #include <isc/mutex.h> #include <isc/net.h> #include <isc/refcount.h> #include <string.h> #ifndef _RADIX_H #define _RADIX_H #define NETADDR_TO_PREFIX_T(na,pt,bits,is_ecs) \ do { \ const void *p = na; \ memset(&(pt), 0, sizeof(pt)); \ if (p != NULL) { \ (pt).family = (na)->family; \ (pt).bitlen = (bits); \ if ((pt).family == AF_INET6) { \ memmove(&(pt).add.sin6, &(na)->type.in6, \ ((bits)+7)/8); \ } else \ memmove(&(pt).add.sin, &(na)->type.in, \ ((bits)+7)/8); \ } else { \ (pt).family = AF_UNSPEC; \ (pt).bitlen = 0; \ } \ (pt).ecs = is_ecs; \ isc_refcount_init(&(pt).refcount, 0); \ } while(0) typedef struct isc_prefix { isc_mem_t *mctx; unsigned int family; /* AF_INET | AF_INET6, or AF_UNSPEC for "any" */ unsigned int bitlen; /* 0 for "any" */ bool ecs; /* true for an EDNS client subnet address */ isc_refcount_t refcount; union { struct in_addr sin; struct in6_addr sin6; } add; } isc_prefix_t; typedef void (*isc_radix_destroyfunc_t)(void *); typedef void (*isc_radix_processfunc_t)(isc_prefix_t *, void **); #define isc_prefix_tochar(prefix) ((char *)&(prefix)->add.sin) #define isc_prefix_touchar(prefix) ((u_char *)&(prefix)->add.sin) /* * We need "first match" when we search the radix tree to preserve * compatibility with the existing ACL implementation. Radix trees * naturally lend themselves to "best match". In order to get "first match" * behavior, we keep track of the order in which entries are added to the * tree--and when a search is made, we find all matching entries, and * return the one that was added first. * * An IPv4 prefix and an IPv6 prefix may share a radix tree node if they * have the same length and bit pattern (e.g., 127/8 and 7f::/8). Also, * a node that matches a client address may also match an EDNS client * subnet address. To disambiguate between these, node_num and data * are four-element arrays; * * - node_num[0] and data[0] are used for IPv4 client addresses * - node_num[1] and data[1] for IPv4 client subnet addresses * - node_num[2] and data[2] are used for IPv6 client addresses * - node_num[3] and data[3] for IPv6 client subnet addresses * * A prefix of 0/0 (aka "any" or "none"), is always stored as IPv4, * but matches IPv6 addresses too, as well as all client subnet * addresses. */ #define RADIX_NOECS 0 #define RADIX_ECS 2 #define RADIX_V4 0 #define RADIX_V6 1 #define RADIX_V4_ECS 2 #define RADIX_V6_ECS 3 #define RADIX_FAMILIES 4 #define ISC_RADIX_FAMILY(p) \ ((((p)->family == AF_INET6) ? RADIX_V6 : RADIX_V4) + \ ((p)->ecs ? RADIX_ECS : RADIX_NOECS)) typedef struct isc_radix_node { isc_mem_t *mctx; uint32_t bit; /* bit length of the prefix */ isc_prefix_t *prefix; /* who we are in radix tree */ struct isc_radix_node *l, *r; /* left and right children */ struct isc_radix_node *parent; /* may be used */ void *data[RADIX_FAMILIES]; /* pointers to IPv4 and IPV6 data */ int node_num[RADIX_FAMILIES]; /* which node this was in the tree, or -1 for glue nodes */ } isc_radix_node_t; #define RADIX_TREE_MAGIC ISC_MAGIC('R','d','x','T'); #define RADIX_TREE_VALID(a) ISC_MAGIC_VALID(a, RADIX_TREE_MAGIC); typedef struct isc_radix_tree { unsigned int magic; isc_mem_t *mctx; isc_radix_node_t *head; uint32_t maxbits; /* for IP, 32 bit addresses */ int num_active_node; /* for debugging purposes */ int num_added_node; /* total number of nodes */ } isc_radix_tree_t; isc_result_t isc_radix_search(isc_radix_tree_t *radix, isc_radix_node_t **target, isc_prefix_t *prefix); /*%< * Search 'radix' for the best match to 'prefix'. * Return the node found in '*target'. * * Requires: * \li 'radix' to be valid. * \li 'target' is not NULL and "*target" is NULL. * \li 'prefix' to be valid. * * Returns: * \li ISC_R_NOTFOUND * \li ISC_R_SUCCESS */ isc_result_t isc_radix_insert(isc_radix_tree_t *radix, isc_radix_node_t **target, isc_radix_node_t *source, isc_prefix_t *prefix); /*%< * Insert 'source' or 'prefix' into the radix tree 'radix'. * Return the node added in 'target'. * * Requires: * \li 'radix' to be valid. * \li 'target' is not NULL and "*target" is NULL. * \li 'prefix' to be valid or 'source' to be non NULL and contain * a valid prefix. * * Returns: * \li ISC_R_NOMEMORY * \li ISC_R_SUCCESS */ void isc_radix_remove(isc_radix_tree_t *radix, isc_radix_node_t *node); /*%< * Remove the node 'node' from the radix tree 'radix'. * * Requires: * \li 'radix' to be valid. * \li 'node' to be valid. */ isc_result_t isc_radix_create(isc_mem_t *mctx, isc_radix_tree_t **target, int maxbits); /*%< * Create a radix tree with a maximum depth of 'maxbits'; * * Requires: * \li 'mctx' to be valid. * \li 'target' to be non NULL and '*target' to be NULL. * \li 'maxbits' to be less than or equal to RADIX_MAXBITS. * * Returns: * \li ISC_R_NOMEMORY * \li ISC_R_SUCCESS */ void isc_radix_destroy(isc_radix_tree_t *radix, isc_radix_destroyfunc_t func); /*%< * Destroy a radix tree optionally calling 'func' to clean up node data. * * Requires: * \li 'radix' to be valid. */ void isc_radix_process(isc_radix_tree_t *radix, isc_radix_processfunc_t func); /*%< * Walk a radix tree calling 'func' to process node data. * * Requires: * \li 'radix' to be valid. * \li 'func' to point to a function. */ #define RADIX_MAXBITS 128 #define RADIX_NBIT(x) (0x80 >> ((x) & 0x7f)) #define RADIX_NBYTE(x) ((x) >> 3) #define RADIX_WALK(Xhead, Xnode) \ do { \ isc_radix_node_t *Xstack[RADIX_MAXBITS+1]; \ isc_radix_node_t **Xsp = Xstack; \ isc_radix_node_t *Xrn = (Xhead); \ while ((Xnode = Xrn)) { \ if (Xnode->prefix) #define RADIX_WALK_END \ if (Xrn->l) { \ if (Xrn->r) { \ *Xsp++ = Xrn->r; \ } \ Xrn = Xrn->l; \ } else if (Xrn->r) { \ Xrn = Xrn->r; \ } else if (Xsp != Xstack) { \ Xrn = *(--Xsp); \ } else { \ Xrn = (isc_radix_node_t *) 0; \ } \ } \ } while (0) #endif /* _RADIX_H */