bind acl 实现

本文介绍了BIND中ACL的实现,将ACL视为IP池,主要用于验证查询。数据结构方面,ACL使用的iptable基于radix树,提供高效查询。文章还提到了acl环境初始化和主要函数,如dns_acl_create。
摘要由CSDN通过智能技术生成

概述

BIND配置中一大堆一大堆的acl,allow-query, allow-recursion, allow-update还有view的match-clients等 acl中的主要存储的就是IP,可以把acl当做是一个IP池,在需要验证的时候就从这个IP池中查找该IP是否存在。那么BIND中如何实现这个非常常用的IP池的呢?

数据结构

acl数据结构

struct dns_acl {
    unsigned int        magic;
    isc_mem_t       *mctx;
    isc_refcount_t      refcount;
    dns_iptable_t       *iptable;
#define node_count      iptable->radix->num_added_node
    dns_aclelement_t    *elements;
    isc_boolean_t       has_negatives;
    unsigned int        alloc;      /*%< Elements allocated */
    unsigned int        length;     /*%< Elements initialized */
    char            *name;      /*%< Temporary use only */
    ISC_LINK(dns_acl_t)     nextincache;    /*%< Ditto */
};

其中的iptable本质上就是一个radix tree(中文名叫基数树)。
Linux基数树(radix tree)是将指针与long整数键值相关联的机制,它存储有效率,并且可快速查询,用于指针与整数值的映射(如:IDR机制)、内存管理等。

主要函数<

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值