optimacl.py 文件源码

python
阅读 16 收藏 0 点赞 0 评论 0

项目:Cisco-ASA-ACL-toolkit 作者: AlekzNet 项目源码 文件源码
def group_nets(nets):
    # nets = { src: [dst1, dst2, ...], ...}
    revnets = {} # nets reversed: { dst: [src1, src2, ...], ... }
    # next iteration
    debug("group_nets -- Begin ====================",4)
    debug("group_nets -- Before first phase of grouping (nets)",4)
    debug(nets,4)

    for src in nets:

        debug("group_nets -- The source",5)
        debug(src,5)
        debug("group_nets -- 1F The destination",5)
        debug(nets[src],5)
        nets[src] = netaddr.cidr_merge(nets[src])
        debug("group_nets -- 1F After CIDR-merge",5)
        debug(nets[src],5)
        if len(nets) == 1:
            debug("group_nets -- Only one pair",4)
            return {(src,):nets[src]}
        for dst in nets[src]:
            debug("group_nets -- For the destination",5)
            debug(dst,5)

            if dst not in revnets:
                revnets[dst] = []
            if src not in revnets[dst]:
                revnets[dst].append(src)
                debug("group_nets -- Added the following source",5)
                debug(src,5)
            debug("group_nets -- Current revnets[dst]",5)
            debug(revnets[dst],5)
    # grouping
    debug("group_nets -- The result of the first phase of grouping (revnets)",4)
    debug(revnets,4)
    debug("group_nets -- Second phase of grouping",4)

    nets = {}
    for dst in revnets:
        debug("group_nets -- 2F The destination",5)
        debug(dst,5)
        debug("group_nets -- The corresponfing sources",5)
        debug(revnets[dst],5)
        revnets[dst] = netaddr.cidr_merge(revnets[dst])
        debug("group_nets -- 2F After CIDR-merge",5)
        debug(revnets[dst],5)
        add_net_pair(tuple(revnets[dst]),dst,nets)
    debug("group_nets -- The result of grouping (nets)",4)
    debug(nets,4)

    debug("group_nets -- End ====================",4)
    return nets
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号